Skip to main content
GET
/
v1
/
hitl
/
handoffs
/
{handoff_id}
Get a handoff
curl --request GET \
  --url https://api-sandbox.featherhq.com/v1/hitl/handoffs/{handoff_id} \
  --header 'x-api-key: <api-key>'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "conv_turn_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "reason": "<string>",
  "static_text": "<string>",
  "assignee": "<string>",
  "packet": {
    "static_text": "<string>",
    "reason": "<string>",
    "context_vars": {},
    "summary": "<string>",
    "transcript_ptr": {
      "conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "up_to_seq": 123
    },
    "transfer_to": "<string>",
    "transfer_label": "<string>"
  },
  "created_at": "2023-11-07T05:31:56Z",
  "resolved_at": "2023-11-07T05:31:56Z"
}

Authorizations

x-api-key
string
header
required

Path Parameters

handoff_id
string<uuid>
required

Response

Successful Response

The API-response shape for a single handoffs row (UI + channel runtime).

id
string<uuid>
required
organization_id
string<uuid>
required
conversation_id
string<uuid>
required
conv_turn_id
string<uuid> | null
required
reason
string | null
required
static_text
string
required
status
enum<string>
required
Available options:
requested,
assigned,
accepted,
resolved,
cancelled
assignee
string | null
required
source
enum<string>
required
Available options:
workflow_terminal,
router,
policy
packet
HandoffPacket · object
required

The complete, enriched handoff packet — the channel-runtime contract.

Two halves, by who fills them:

  • engine-supplied intent (rides on the handoff signal): reason, static_text, context_vars.
  • service-enriched at record time (needs DB access — packet.py): summary (from conversations.summary) and transcript_ptr.
created_at
string<date-time>
required
resolved_at
string<date-time> | null
required