Create a grounded response (streaming)
Runs the grounded search pipeline (Plan → Collect → Process → Analyze) and streams results as Server-Sent Events following the OpenAI Responses API format.
Body ParametersJSONExpand Collapse
input: string or array of object { content, role } User message string or array of input items.
User message string or array of input items.
UnionMember1 = array of object { content, role }
content: optional string or unknown
effort: optional "low" or "medium" or "high" or "max"Anthropic API effort level. Defaults to high.
Anthropic API effort level. Defaults to high.
Model ID, e.g. "grounded-sonnet" or "grounded-opus".
params: optional object { exaCategory, exaExcludeDomains, exaExcludeText, 6 more } Pipeline parameters. Merged with the high preset defaults.
Pipeline parameters. Merged with the high preset defaults.
exaCategory: optional "" or "company" or "research paper" or 6 more
ISO date (YYYY-MM-DD)
Must be true — only streaming mode is supported.
ReturnsExpand Collapse
ResponseCreated = object { response, type }
response: object { id, created_at, model, 3 more }
ResponseInProgress = object { response, type }
response: object { id, object, status }
ResponsePipelineStage = object { pipeline_stage, type }
pipeline_stage: object { stage, status } or object { duration_ms, intent, queries, 2 more } or object { stage, status, total_queries } or 7 more
UnionMember0 = object { stage, status }
UnionMember1 = object { duration_ms, intent, queries, 2 more }
queries: array of object { desired_snippets, query, startPublishedDate }
Describes what snippets to extract from results of this query.
Optional ISO date — only return results published after this date.
UnionMember2 = object { stage, status, total_queries }
UnionMember3 = object { completed_queries, sources, stage, 2 more }
Provider names that returned this URL (admin-only).
UnionMember4 = object { duration_ms, sources, stage, status }
Provider names that returned this URL (admin-only).
UnionMember5 = object { stage, status, total_sources }
UnionMember6 = object { completed_sources, snippets, stage, 2 more }
The relevant passage extracted from the source.
Whether the snippet text was verified as a substring of the source document.
Sequential number assigned to verified snippets (1-based). Unverified snippets have no num.
UnionMember7 = object { duration_ms, snippets, stage, status }
The relevant passage extracted from the source.
Whether the snippet text was verified as a substring of the source document.
Sequential number assigned to verified snippets (1-based). Unverified snippets have no num.
UnionMember8 = object { stage, status }
UnionMember9 = object { duration_ms, stage, status }
ResponseOutputItemAdded = object { item, output_index, type }
item: object { id, content, role, type }
ResponseOutputItemDone = object { item, output_index, type }
item: object { id, type }
ResponseContentPartAdded = object { content_index, item_id, part, type }
part: object { annotations, text, type }
ResponseContentPartDone = object { content_index, item_id, part, type }
part: object { annotations, text, type }
annotations: array of object { end_index, start_index, title, 3 more }
ResponseOutputTextDelta = object { content_index, delta, item_id, type }
ResponseCompleted = object { response, type }
response: object { id, object, output, 2 more }
usage: optional object { cache_creation_input_tokens, cache_read_input_tokens, exa_cost_usd, 4 more }
ResponseFailed = object { response, type }
response: object { id, error, object, status }
error: object { code, message, type }
Create a grounded response (streaming)
curl https://api.example.com/v1/responses \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $CEMENTED_AI_API_KEY" \
-d '{
"input": "string"
}'{
"response": {
"id": "id",
"created_at": 0,
"model": "model",
"object": "response",
"output": [
{}
],
"status": "in_progress"
},
"type": "response.created"
}Returns Examples
{
"response": {
"id": "id",
"created_at": 0,
"model": "model",
"object": "response",
"output": [
{}
],
"status": "in_progress"
},
"type": "response.created"
}