Developer docs / inbox automation

Inbound replies

Import a connected Gmail inbox, ground triage in persisted evidence, and let a person approve every customer reply.

Safe by default

Sync never sends. Unsubscribe and bounce signals suppress automatically. Agents cannot approve or send, and ambiguous provider outcomes are never retried automatically.

Conversation lifecycle

newneeds_triageneeds_replywaiting_approvalapprovedsendingsent

Safe terminal states are resolved, suppressed, and snoozed. Every transition has an append-only event and a conversation version.

Start the guided workflow

Use the key-filtered catalog for the exact schemas. The workflow is handle_inbound_reply; it validates the thread, records evidence, applies safety policy, creates a preview, waits for a human decision, and verifies the result.

curl --fail-with-body -X POST \
  https://api.synthcrew.io/api/v2/agent/workflow-runs \
  -H "Authorization: Bearer $SYNTHCREW_AGENT_KEY" \
  -H "X-API-Version: 2" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -H "X-Agent-Run-Id: $AGENT_RUN_ID" \
  -H "Content-Type: application/json" \
  --data @inbound-reply.json

Reuse the same idempotency key for an exact retry. Inspect the persisted run until it reports succeeded; HTTP 201/202 alone is not completion.

Human checkpoint

A signed-in owner reviews the evidence, edits the draft if needed, and then approves, rejects, or sends from the console. Any edit invalidates the prior approval. A send requires a connected, approved Google mailbox, remaining capacity, an RFC Message-ID, and the original Gmail thread references.

Safety outcomes

Unsubscribe / bounceSuppression and DNC are written; no reply is drafted.
Out of officeThe conversation is snoozed for later review.
Not interestedThe conversation is resolved.
UnknownKeep it in human triage; do not guess.

Read the contract

Agent API V2 ↗ · Campaign workflows ↗ · Errors and retries ↗