---
title: "Send Agent Chat Message Async"
method: POST
path: "/api/agent-chat-message-async"
tags: ["Agent Chat"]
---

# Send Agent Chat Message Async

`POST /api/agent-chat-message-async`

Durable (fire-and-forget) chat turn: enqueues an `async_chat_turn` background
job instead of holding a connection open. For callers that can't reliably
hold an SSE stream open long enough to see it through (e.g. a mobile
notification-tray reply from a backgrounded app) — the worker drives the
turn via the same `create_agent_chat_stream` path the SSE route uses, so
the reply lands (and pushes) even if the caller goes away immediately
after the 202.

Idempotent via the shared `X-Idempotency-Key` header infra (see
security/http_idempotency.py, same mechanism as /api/create-thread and
/api/analyze-receipt): iOS can redeliver a notification action, and a
client-timed-out POST may have already landed server-side. Requests
without the header keep today's at-least-once behavior unchanged.

## Query parameters

- `user_id` string
- `org_id` string

## Request body

- AsyncChatMessageRequest — Request body for POST /agent-chat-message-async.
  - `thread_id` string, required
  - `message` string, required
  - `metadata` object

## Response `202`

Successful Response

- AsyncChatMessageResponse
  - `job_id` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/every/apis/every-api.md) · [All operations](https://skmtc.net/every/apis/every-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/every/every-api/versions/9744001af85d/schema)
