Create message (user message triggers workflow)
const url = 'https://app.everruns.com/api/v1/sessions/example/messages';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"addressed_participant_id":"part_01933b5a00007000800000000000001","controls":{"error_disclosure":"example","hints":"example","locale":"example","model_id":"model_01933b5a00007000800000000000001","reasoning":{"effort":"example"},"speed":"example","verbosity":"example"},"external_actor":{"actor_id":"example","actor_name":"example","metadata":"example","source":"example"},"message":{"content":[{"text":"Why is the build failing on main?","type":"text"}],"role":"user"},"metadata":{"source":"slack","thread_ts":"1715000000.123456"},"tags":["bug-report","from-slack"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://app.everruns.com/api/v1/sessions/example/messages \ --header 'Content-Type: application/json' \ --data '{ "addressed_participant_id": "part_01933b5a00007000800000000000001", "controls": { "error_disclosure": "example", "hints": "example", "locale": "example", "model_id": "model_01933b5a00007000800000000000001", "reasoning": { "effort": "example" }, "speed": "example", "verbosity": "example" }, "external_actor": { "actor_id": "example", "actor_name": "example", "metadata": "example", "source": "example" }, "message": { "content": [ { "text": "Why is the build failing on main?", "type": "text" } ], "role": "user" }, "metadata": { "source": "slack", "thread_ts": "1715000000.123456" }, "tags": [ "bug-report", "from-slack" ] }'Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Session ID (prefixed, e.g., sess_…)
Request Bodyrequired
Section titled “Request Bodyrequired”Request to create a message
object
Optional active agent participant to address for this turn. When omitted, the session host remains the responder.
Example
part_01933b5a00007000800000000000001Runtime controls (model, reasoning, etc.)
object
Error disclosure override for this turn: “generic”, “standard”, or
“detailed”. Clamped to at most the mode allowed by the agent’s
error_disclosure capability (capability absent => “standard”), so a
client can narrow but never widen disclosure.
Generic client hints — arbitrary key-value pairs declared by the client. Session-level defaults are set at session creation; per-message values override session hints key-by-key (shallow merge).
Examples: {"setup_connection": true, "rich_media": true}
Locale override for this message turn (BCP 47, e.g. uk-UA).
Overrides the session locale for backend-authored strings and prompts.
Model ID to use for this message (format: model_{32-hex}). Overrides session and agent model settings.
Example
model_01933b5a00007000800000000000001Speed (service tier) for this message turn: “flex”, “default”, or
“priority”. Only sent to providers whose model profile advertises a
speed config (OpenAI service_tier).
Verbosity for this message turn: “low”, “medium”, or “high”. Only sent
to providers whose model profile advertises a verbosity config (OpenAI
verbosity).
External actor identity (for messages from external channels like Slack)
object
Opaque actor identifier from the source channel (e.g. Slack user ID “U0123456789”)
Resolved display name (e.g. “Alice”). Falls back to actor_id if absent.
Channel-specific metadata (e.g. team_id, channel_id)
Source channel identifier (e.g. “slack”, “discord”)
The message to create. Example shape is defined on InputMessage.
object
Array of content parts (text and image only)
Text content
object
Claim-level citations attached to spans of text.
The narrow render contract shared by all citation capabilities (see
specs/citations.md). Empty for non-cited text, so the wire shape of
existing messages is unchanged.
A claim-level citation attached to a span of generated text.
The single shared type across every citation capability: a text span linked
to a source. Producers agree only on this render contract — each capability
keeps its own richer representation (e.g. KnowledgeIndexCitation) and maps
into this envelope at emit time. See specs/citations.md.
object
Exclusive end char offset.
Example
19Opaque producer id (e.g. kchk_…, kbe_…, a URL hash). Not interpreted
by the render contract.
Example
kchk_01j9y3q8w2Capability id that produced this annotation (e.g. citation_retrieval).
Lets the UI and evals attribute and filter each citation by feed.
Example
citation_retrievalThe cited source.
object
Provenance within the document (line / char / page / block ranges),
reusing the retrieval location JSONB shape.
Trimmed passage that backs the claim. Display-only; never relied on for prompt reconstruction.
Example
The control plane owns durable state.Human-readable source title, when known.
Example
Architecture OverviewStable, linkable locator (e.g. github://owner/repo@main/docs/x.md or an
https:// URL).
Example
github://owner/repo@main/docs/x.md0-indexed start char offset into the enclosing TextContentPart.text.
Example
0Verification verdict, filled by the citation_verification capability.
Absent means unverified (not “unsupported”).
object
Entailment confidence in [0, 1], when the verifier produced one.
Example
0.92Whether the cited source supports the claim.
Example
entailedImage content (base64 or URL)
object
Image file content (reference to uploaded image by ID)
object
Original filename (for display)
ID of the uploaded image (format: img_{32-hex})
Example
img_01933b5a00007000800000000000001Message role (always “user” for API-created messages)
Example
{ "content": [ { "text": "Why is the build failing on main?", "type": "text" } ], "role": "user"}Request-level metadata. Arbitrary key/value pairs persisted with the message for downstream filtering and analytics. Not interpreted by the agent.
Example
{ "source": "slack", "thread_ts": "1715000000.123456"}Tags for the message. Free-form labels used for grouping and filtering.
Example
[ "bug-report", "from-slack"]Responses
Section titled “Responses”Message created successfully
A message in the conversation
object
Message content as array of content parts (text, images, tool calls, tool results)
Text content
object
Claim-level citations attached to spans of text.
The narrow render contract shared by all citation capabilities (see
specs/citations.md). Empty for non-cited text, so the wire shape of
existing messages is unchanged.
A claim-level citation attached to a span of generated text.
The single shared type across every citation capability: a text span linked
to a source. Producers agree only on this render contract — each capability
keeps its own richer representation (e.g. KnowledgeIndexCitation) and maps
into this envelope at emit time. See specs/citations.md.
object
Exclusive end char offset.
Opaque producer id (e.g. kchk_…, kbe_…, a URL hash). Not interpreted
by the render contract.
Capability id that produced this annotation (e.g. citation_retrieval).
Lets the UI and evals attribute and filter each citation by feed.
The cited source.
object
Provenance within the document (line / char / page / block ranges),
reusing the retrieval location JSONB shape.
Trimmed passage that backs the claim. Display-only; never relied on for prompt reconstruction.
Human-readable source title, when known.
Stable, linkable locator (e.g. github://owner/repo@main/docs/x.md or an
https:// URL).
0-indexed start char offset into the enclosing TextContentPart.text.
Verification verdict, filled by the citation_verification capability.
Absent means unverified (not “unsupported”).
object
Entailment confidence in [0, 1], when the verifier produced one.
Whether the cited source supports the claim.
Image content (base64 or URL)
object
Image file content (reference to uploaded image by ID)
object
Original filename (for display)
ID of the uploaded image (format: img_{32-hex})
Tool call content (assistant requesting tool execution)
object
Tool result content (result of tool execution)
object
ID of the tool call this result corresponds to
Runtime controls (model, reasoning, etc.)
object
Error disclosure override for this turn: “generic”, “standard”, or
“detailed”. Clamped to at most the mode allowed by the agent’s
error_disclosure capability (capability absent => “standard”), so a
client can narrow but never widen disclosure.
Generic client hints — arbitrary key-value pairs declared by the client. Session-level defaults are set at session creation; per-message values override session hints key-by-key (shallow merge).
Examples: {"setup_connection": true, "rich_media": true}
Locale override for this message turn (BCP 47, e.g. uk-UA).
Overrides the session locale for backend-authored strings and prompts.
Model ID to use for this message (format: model_{32-hex}). Overrides session and agent model settings.
Speed (service tier) for this message turn: “flex”, “default”, or
“priority”. Only sent to providers whose model profile advertises a
speed config (OpenAI service_tier).
Verbosity for this message turn: “low”, “medium”, or “high”. Only sent
to providers whose model profile advertises a verbosity config (OpenAI
verbosity).
Timestamp when the message was created
External actor identity (for messages from external channels like Slack)
object
Opaque actor identifier from the source channel (e.g. Slack user ID “U0123456789”)
Resolved display name (e.g. “Alice”). Falls back to actor_id if absent.
Channel-specific metadata (e.g. team_id, channel_id)
Source channel identifier (e.g. “slack”, “discord”)
Unique message ID (format: message_{32-hex})
Message-level metadata
Execution phase for this message.
Helps LLMs distinguish between intermediate working commentary and completed answers in multi-step tool-calling flows. Only set on agent (assistant) messages. Providers with native phase support (OpenAI GPT-5.x) send this value in the API request; others derive it from state but don’t send it to the provider.
Message role
Thinking content from extended thinking models (Anthropic Claude) This is the model’s chain-of-thought reasoning before producing the response. Must be included in subsequent API calls when thinking is enabled.
Cryptographic signature for thinking content (Anthropic Claude) Required when sending thinking back in subsequent API calls.
Example
{ "content": [ { "annotations": [ { "end": 19, "external_id": "kchk_01j9y3q8w2", "origin": "citation_retrieval", "source": { "snippet": "The control plane owns durable state.", "title": "Architecture Overview", "uri": "github://owner/repo@main/docs/x.md" }, "start": 0, "verified": { "score": 0.92, "status": "entailed" } } ], "type": "text" } ], "controls": { "model_id": "model_01933b5a00007000800000000000001" }, "id": "message_01933b5a00007000800000000000001", "phase": "Commentary", "role": "system"}Invalid ID format
Session not found
Internal server error