Skip to main content
POST
/
api
/
lists
/
{id}
/
chat
Run list chat actions (deprecated — use streamListChat)
curl --request POST \
  --url https://app.puffle.ai/api/lists/{id}/chat \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "message": "<string>"
}
'
{
  "error": "Internal server error"
}

Overview

Deprecated. This endpoint now returns a 307 Temporary Redirect to POST /api/lists/{id}/chat/stream. The 307 preserves the HTTP method and body, so clients that follow redirects transparently hit the streaming endpoint. New integrations should call streamListChat directly and consume its text stream. This shim exists so older clients continue to work.

AI agent notes

Don’t build against this. Use POST /api/lists/{id}/chat/stream for new code. The streaming endpoint is the only path that surfaces partial tokens and tool-call progress — the redirect hides that stream behind a layer that many HTTP clients can’t follow cleanly (especially when the body is large).Why the redirect exists. The non-streaming endpoint predates the inline agent refactor. Removing it entirely would break pinned clients, so it hangs around as a one-liner.If you see a non-307 response here (e.g. a 500), something unexpected happened in the redirect handler itself — retry on the streaming endpoint.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string<uuid>
required

List UUID

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

Body

application/json

Any JSON body is forwarded. The endpoint does not parse it — the streaming route owns validation.

message
string
required

User chat message. Forwarded verbatim to the streaming endpoint.

Minimum string length: 1
{key}
any

Response

Temporary redirect to /api/lists/{id}/chat/stream. HTTP clients that follow 307 with the original method and body will transparently hit the streaming endpoint.