Send session events

⚠️
Preview — this feature is being built; the design below is the spec.
POST https://app.syntic.ai/v1/sessions/{session_id}/events

Send up to 20 events to a session: a new user message, the result of a function tool your code ran, or an approval decision. A message to an idle session starts a new turn; a message to a running session is queued for the next one.

For how this fits into a full workflow, see Sessions.

Headers

HeaderRequiredValue
AuthorizationYesBearer <key>: a private inference key (sk_live_...). See Authentication.
syntic-betaYes, while in previewagents-2026-11-01. Without it the call fails with 400 beta_required. See Versioning.
Content-TypeYesapplication/json

Path parameters

ParameterTypeDescription
session_idstringThe session id, starting with sesn_.

Body parameters

ParameterTypeRequiredNotes
eventsarrayYes1 to 20 events, each up to 1 MB.

Event types:

typeFieldsUse
user.messagecontent: a string or content partsSay something to the agent.
user.tool_resulttool_call_id, content, optional is_errorReturn the result of a tool whose executor is client.
user.approvaltool_call_id, decision (approve or reject), optional reasonAnswer an approval.required event.
user.interruptnoneStop the current turn, like Interrupt a session.

Response

202 Accepted, Content-Type: application/json

{
  "data": [
    {
      "id": "evt_01JC7M4D",
      "type": "user.tool_result",
      "tool_call_id": "call_7",
      "created_at": "2026-11-05T10:00:09Z"
    }
  ]
}

Examples

curl -sS https://app.syntic.ai/v1/sessions/sesn_01JC7M2K4P6R8T0V2X4Z/events \
  -H "Authorization: Bearer $SYNTIC_API_KEY" \
  -H "syntic-beta: agents-2026-11-01" \
  -H "Content-Type: application/json" \
  -d '{
      "events": [
        {
          "type": "user.tool_result",
          "tool_call_id": "call_7",
          "content": "{\"status\": \"delivered\", \"total\": 41.20}"
        }
      ]
    }'

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
404not_found_errorsession_not_foundNo session with that id in this workspace.
409conflict_errorsession_archivedThe session is archived.
409conflict_errortool_call_not_pendingNo tool call with that id is waiting for a result or approval.
413invalid_request_errorevent_too_largeOne event is over 1 MB.
401authentication_errorinvalid_api_keyThe key is missing, unknown, revoked or expired.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?