API referenceAgents APISessionsStart a session

Start a session

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

Start a conversation with an agent. Pass the first message in input to save a round trip; the agent begins working at once and the session is running. Follow progress with Stream session events.

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
Idempotency-KeyNoUp to 255 characters. Retrying with the same key within 24 hours returns the first result instead of creating a duplicate. See Idempotency.

Body parameters

ParameterTypeRequiredNotes
agent_idstringYesAn active agent.
agent_versionintegerNoPin a version; default latest.
inputarrayNoEvents to send immediately, in the Send events format.
titlestringNoShown in the Console, up to 200 characters.
contactobjectNo{id, display_name} for your own tracking.
environment_idstringNoOverride the agent’s environment.
memory_scopestringNoScope this session reads and writes in the agent’s memory stores, such as customer:4821. Without it only global is readable and nothing is written.
limitsobjectNoLower max_turns, session_token_budget or session_cost_budget_usd. Higher values than the agent’s are refused.
metadataobjectNoUp to 16 string pairs.

Response

201 Created, Content-Type: application/json

{
  "id": "sesn_01JC7M2K4P6R8T0V2X4Z",
  "type": "session",
  "agent_id": "agt_01JC4R8W6Q2N9X3T5V7Y",
  "agent_version": 4,
  "status": "running",
  "channel": "api",
  "title": "Refund for order 88123",
  "usage": {
    "input_tokens": 0,
    "cached_input_tokens": 0,
    "output_tokens": 0,
    "cost_usd": "0.0000"
  },
  "outcome": null,
  "created_at": "2026-11-05T10:00:00Z",
  "last_event_at": "2026-11-05T10:00:00Z",
  "metadata": {}
}
FieldTypeDescription
idstringStarts with sesn_.
agent_idstringThe agent the session runs.
agent_versionintegerThe version it is pinned to for its whole life.
statusstringrunning, requires_action (waiting for your tool result or approval), idle or archived.
channelstringapi for sessions started here; channel sessions show telegram, slack and so on.
usageobjectRunning token and cost totals.
outcomeobject or nullSet when a turn ends: reason is end_turn, max_turns, budget_exhausted, interrupted or error.
last_event_atstringTime of the latest event.

Examples

curl -sS https://app.syntic.ai/v1/sessions \
  -H "Authorization: Bearer $SYNTIC_API_KEY" \
  -H "syntic-beta: agents-2026-11-01" \
  -H "Idempotency-Key: 8d6f0c1e-4b2a-4a57-9f0e-2f1d3c4b5a69" \
  -H "Content-Type: application/json" \
  -d '{
      "agent_id": "agt_01JC4R8W6Q2N9X3T5V7Y",
      "title": "Refund for order 88123",
      "memory_scope": "customer:4821",
      "input": [
        {
          "type": "user.message",
          "content": "Please refund order 88123."
        }
      ]
    }'

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.
400invalid_request_errorlimit_above_agentA session limit exceeds the agent’s.
402quota_exhaustedquota_exhaustedPlan allowance and credits cannot cover the first model call.
404not_found_erroragent_not_foundNo such agent in this workspace.
409conflict_erroragent_archivedThe agent is archived.
409conflict_errorenvironment_not_readyThe environment has not finished its first build.
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?