Send a single-turn or multi-turn conversation and receive a complete response. Use any OpenAI SDK — set base_url to https://api.callmissed.com/v1 and api_key to your cm_ key.
from openai import OpenAIclient = OpenAI( api_key="cm_your_key", base_url="https://api.callmissed.com/v1")response = client.chat.completions.create( model="sarvam-105b", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is the capital of India?"} ])print(response.choices[0].message.content)
List of {role, content} objects. System prompt goes here as {"role": "system", "content": "..."}
stream
boolean
Enable streaming SSE responses
temperature
number
Sampling temperature (0–2)
max_tokens
integer
Maximum tokens to generate
n
integer
Number of completions to generate (default 1)
top_p
float
Nucleus sampling (0–1)
top_k
integer
Top-K sampling
frequency_penalty
float
Penalize repeated tokens (−2 to 2)
presence_penalty
float
Penalize new topics (−2 to 2)
repetition_penalty
float
Reduce repetition (0–2)
seed
integer
Deterministic sampling
stop
array
Stop sequences
logit_bias
object
Token probability adjustments
logprobs
boolean
Return log probabilities
top_logprobs
integer
Top N log probs per token
tools
array
Tool/function definitions for function calling
parallel_tool_calls
boolean
Allow parallel function calls
response_format
object
{"type": "json_object"} or {"type": "json_schema", "json_schema": {...}}
structured_outputs
boolean
Enforce strict JSON schema
stream_options
object
{"include_usage": true} to get token counts in stream
reasoning_effort
string
"none" / "minimal" / "low" / "medium" / "high" / "xhigh" — see the per-model matrix below. "xhigh" (maximum reasoning) is accepted by the GPT-5.5 / GPT-5.6 family; other models map it down to their highest supported value.
OpenAI Python SDK note — The OpenAI client validates kwargs against its
known parameters, so a CallMissed-specific field such as reasoning_effort
raises TypeError: Completions.create() got an unexpected keyword argument.
Pass it via extra_body instead:
CallMissed never substitutes your model. Send a model and you get that model,
or a clean error (429/503 with Retry-After). You are never billed for a
model you did not name.
Multimodal content (text + image parts) is accepted on any model whose
supports_vision flag is true in GET /v1/models. Models without vision
support reject image content with 400 unsupported_image_inputbefore the
upstream call, so you're not charged.
from openai import OpenAIclient = OpenAI(api_key="cm_your_key", base_url="https://api.callmissed.com/v1")resp = client.chat.completions.create( model="gpt-5.6-sol", # supports_vision: true messages=[{ "role": "user", "content": [ {"type": "text", "text": "What is in this image?"}, {"type": "image_url", "image_url": {"url": "https://example.com/cat.png"}}, ], }],)
Every model in the catalog advertises a context_window (token count for the
combined prompt + completion). The GET /v1/models response exposes it under
two keys for cross-client compatibility:
context_window (OpenAI/CallMissed canonical name)
context_length (OpenAI SDK convention — same value)
from openai import OpenAIclient = OpenAI(api_key="cm_your_key", base_url="https://api.callmissed.com/v1")for m in client.models.list(): extra = m.model_extra or {} print(m.id, extra.get("context_window"), extra.get("supports_vision"))
For clients built on OpenAI's newer Responses API, CallMissed exposes a compatible POST /v1/responses endpoint. It accepts a Responses-shaped body and translates to the same chat engine under the hood — so you can point an OpenAI Responses client at https://api.callmissed.com/v1 without changes.
Endpoint:POST /v1/responses
from openai import OpenAIclient = OpenAI(api_key="cm_your_key", base_url="https://api.callmissed.com/v1")resp = client.responses.create( model="gpt-4.1", input="Write a haiku about databases.",)print(resp.output_text)
input accepts a plain string or the Responses message-array form.
Streaming is supported (stream: true) and emits Responses-style SSE events.
The same models, pricing, vision, and tool-calling support as /v1/chat/completions apply — this is a request/response-shape adapter, not a different model set.
If you're starting fresh, /v1/chat/completions is the most widely-supported surface; use /v1/responses when porting an existing Responses-API integration.