Interrupt a thread

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

Stop one delegate thread without stopping the session. The delegate’s in-flight tool calls are cancelled, the thread ends with status: interrupted, and its parent receives the delegation result as an error so it can decide what to do next. To stop everything, interrupt the session instead.

For how this fits into a full workflow, see Threads and delegation.

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 acting twice. See Idempotency.

Path parameters

ParameterTypeDescription
session_idstringThe session id, starting with sesn_.
thread_idstringThe thread id, starting with thr_.

Body parameters

ParameterTypeRequiredNotes
reasonstringNoUp to 500 characters, passed to the parent thread as the error text.

Response

200 OK, Content-Type: application/json

{
  "id": "thr_01JCC2E4G6J8L0N2Q4S6",
  "type": "session_thread",
  "session_id": "sesn_01JC7M2K4P6R8T0V2X4Z",
  "role": "delegate",
  "parent_thread_id": "thr_01JCC1D3F5H7K9M1P3R5",
  "agent_id": "agt_01JCC0B2D4F6H8K0M2P4",
  "agent_version": 2,
  "title": "Check carrier tracking for order 88123",
  "status": "interrupted",
  "usage": {
    "input_tokens": 6120,
    "cached_input_tokens": 4096,
    "output_tokens": 388,
    "cost_usd": "0.0112"
  },
  "created_at": "2026-11-05T10:02:10Z",
  "ended_at": "2026-11-05T10:02:30Z"
}
FieldTypeDescription
idstringStarts with thr_.
rolestringprimary for the session’s main conversation, delegate for a sub-agent the primary handed work to.
parent_thread_idstring or nullThe thread that started this one; null for the primary thread.
agent_idstringThe agent running in this thread. Delegates run the agent named in the parent’s delegates list.
statusstringrunning, idle, completed, failed or interrupted.
usageobjectTokens and cost for this thread alone. The session’s usage is the sum of all threads.

Examples

curl -sS "https://app.syntic.ai/v1/sessions/sesn_01JC7M2K4P6R8T0V2X4Z/threads/thr_01JCC2E4G6J8L0N2Q4S6/interrupt" \
  -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 '{
      "reason": "Tracking lookup is taking too long; answer without it."
    }'

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_errorcannot_interrupt_primaryThe primary thread is stopped with the session-level interrupt.
409conflict_errorthread_not_runningThe thread already ended.
404not_found_errorthread_not_foundNo thread with this id in the session.
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?