Developer API
Build with models, speech, images, and search
Documented APIs under one CallMissed account, with scoped keys, a searchable model catalog, and a browser playground.
- OpenAI-compatible chat, audio, and image request patterns
- Dedicated web-search endpoint with source-aware results
- Scoped API keys for service and resource access
- Model metadata and pricing published in the catalog
API reference
Six documented ways to build
Each one answers to the same cm_ key, gated by the permission it needs.
POST/v1/chat/completions
Chat completions
The OpenAI chat shape: message history in, a reply out. Set "stream": true for server-sent events, pass tools for function calling, or response_format for JSON.
Open guidellm
POST/v1/audio/transcriptions
Speech to text
Upload an audio file as multipart form data. Language is detected when you leave it out. Modes cover transcribe, translate, verbatim, translit and codemix.
Open guidestt
POST/v1/audio/speech
Text to speech
Text in, audio out. Pick a model and a voice; choose mp3, opus, aac, flac, wav or pcm with response_format.
Open guidetts
POST/v1/images/generations
Image generation
An OpenAI-compatible image request. Up to four images per call, with optional negative_prompt, seed and steps.
Open guideimage
POST/v1/search
Web search
A current web search with sources. Choose auto, shorter or detailed mode, cap num_results, and filter by domain or published date.
Open guidesearch
POST/v1/embeddings
Embeddings
Turn a string, or up to 128 strings, into vectors for search and clustering.
Open guidellm
Build a request that runs as pasted
Pick an endpoint and tune the fields it really accepts. The curl on the right updates as you change them — copy it, swap in your key, and it runs.
curl -X POST https://api.callmissed.com/v1/chat/completions \
-H "Authorization: Bearer cm_your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "sarvam-105b",
"messages": [
{
"role": "user",
"content": "What is the capital of India?"
}
]
}'Simulated example. Replace cm_your_key with a key that carries this endpoint's permission.
Quickstart
Keep your SDK. Change two lines.
The chat, audio and image endpoints follow the OpenAI request shape, and there is a Messages-API-compatible endpoint too. Point the client at api.callmissed.com and use your cm_ key.
from openai import OpenAI
client = OpenAI(
api_key="cm_your_key",
base_url="https://api.callmissed.com/v1",
)
response = client.chat.completions.create(
model="sarvam-105b",
messages=[{"role": "user", "content": "Namaste!"}],
)
print(response.choices[0].message.content)from anthropic import Anthropic
client = Anthropic(
api_key="cm_your_key",
base_url="https://api.callmissed.com",
)
message = client.messages.create(
model="gpt-5.6-sol",
max_tokens=1024,
messages=[{"role": "user", "content": "Namaste!"}],
)
print(message.content[0].text)curl -X POST https://api.callmissed.com/v1/chat/completions \
-H "Authorization: Bearer cm_your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "sarvam-105b",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of India?"}
]
}'Before you ship
- 1
Create a scoped key
Grant only the service and resource permissions required by this application.
- 2
Confirm the model
Check current availability, capabilities, and pricing in the model catalog.
- 3
Handle errors and usage
Follow the endpoint guide for status codes and review request usage from the dashboard.
One key, only the scopes it needs
Every endpoint answers to the same cm_ key, but the key decides what it may touch. Try it: flip a permission and watch which doors open.
- llmChat, messages, embeddings
- sttTranscription and translation
- ttsSpeech synthesis
- imageImage generation
- searchWeb search
This key can call 3 of 6 endpoints
- Chat completions/v1/chat/completionsllmallowed
- Embeddings/v1/embeddingsllmallowed
- Speech to text/v1/audio/transcriptionssttblocked — needs the stt permission
- Text to speech/v1/audio/speechttsallowed
- Image generation/v1/images/generationsimageblocked — needs the image permission
- Web search/v1/searchsearchblocked — needs the search permission
A call without the permission comes back as 403 permission_denied. Simulated example.
Read the response, not just the body
Errors arrive in one stable envelope, and the headers tell you about credits and limits before the body does. Pick a status to see it.
HTTP 429 Too many requests
{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded — back off and retry",
"type": "rate_limit_error"
}
}Headers on this response
- Retry-After
- X-RateLimit-Remaining
- X-Credits-Balance
Honor Retry-After (seconds) and back off exponentially. A plan’s monthly cap also returns 429 until the 1st.
- X-RateLimit-Remaining
- Requests left in the current window
- X-Credits-Balance
- Credits left on the account
- X-Usage-Warning
- Appears at 80% and 95% of plan usage
- Retry-After
- Sent with a 429 so you know when to try again
- Idempotency-Key
- Send it on POST, PUT or PATCH to make a retry safe
Beyond inference
The same key opens the rest of the platform
Voice agents, knowledge, CRM records and webhooks are reachable from the same account, with their own scopes.
Voice agent over one WebSocket
Stream microphone audio in and get a speaking agent back. The speech pipeline runs on our side.
Open the guideAccount MCP server
Point an MCP client at https://api.callmissed.com/api/v1/mcp and sign in, or send your cm_ key, to give an external agent tools on your account.
Open the guideKnowledge and retrieval
Add text, URLs and PDFs as sources, search them by meaning, or pass a bot_id to chat completions to ground the reply.
ExploreCRM and support desk resources
Deals, pipelines, tickets and SLA policies are REST resources behind the same key, with their own scopes.
ExploreWebhooks
Subscribe an HTTPS endpoint to conversation, call, campaign and billing events, signed with HMAC-SHA256.
ExploreModel catalogue
Compare creator, context window, capabilities and price for every model before you pick one.
Explore
Developer API questions, answered
- Which CallMissed APIs use the OpenAI SDK?
- The documented chat, audio, and image endpoints follow OpenAI-compatible request patterns. Set the SDK base URL to https://api.callmissed.com/v1 and authenticate with a cm_ API key. Check each endpoint guide for model-specific parameters.
- How do I choose a model?
- Use the CallMissed model catalog to compare category, creator, pricing, context, free-plan status, and capability metadata. The in-product catalog and API listing are the current sources for availability.
- Can one API key access every service?
- Access depends on the service and resource permissions granted to that key. Use separate scoped keys for separate applications and grant only the permissions each application needs.
- Are voice agents and WhatsApp part of the Developer API?
- The voice agent is a developer API: one WebSocket, called with the same key, running the whole speech pipeline for you. WhatsApp has its own onboarding and runtime flow. The inference APIs on this page provide the model, speech, image and search capabilities behind both.
- Where should I test a request?
- Use the API Playground for browser-based testing, then use the documentation examples to move the request into your server application.
- Where can I see current pricing?
- Use the model catalog and pricing page for current model and plan information. Avoid relying on a copied price because model availability and pricing can change.
Make a verified first request
Start with the quickstart, test the selected model in the playground, and keep the API key on your server.





