Criar Conversa

Abrir uma conversa com um contato em uma caixa de entrada, opcionalmente enviando a primeira mensagem na mesma chamada. Uma primeira mensagem é atribuída ao dono da API key e dispara os mesmos efeitos colaterais do compositor de mensagens do app, incluindo a entrega de saída. Quando o contato já tem uma conversa em andamento nessa caixa de entrada, a chamada é recusada com 409 e code: active_conversation_exists, e a conversa que bloqueia é retornada para que possa ser reaproveitada; conversas nas outras caixas de entrada do contato não bloqueiam. Toda operação é delimitada pelo workspaceId obrigatório. Uma API key com escopo de workspace que nomeie qualquer outro workspace é recusada com 403 antes de qualquer consulta rodar, então uma API key de workspace só consegue alcançar o próprio workspace.

POST/api/v1/chat/conversations
X-API-Key<token>

Sua API key do Studio, pessoal ou com escopo de workspace. Gere uma em Settings e depois API Keys. As operações que rejeitam API keys de workspace dizem isso na própria descrição.

Em: header

Corpo da requisição

application/json

Caixa de entrada, contato, roteamento inicial e uma primeira mensagem opcional.

Definições TypeScript

Use o tipo request body no TypeScript.

Corpo da resposta

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://agent-studio.seeyu.ai/api/v1/chat/conversations" \  -H "X-API-Key: YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "workspaceId": "string",    "inboxId": "string",    "contactId": "string"  }'
{
  "conversation": {
    "id": "conv_01J9M4Q0X6R7",
    "workspaceId": "ws_01J8F2K3N5P7",
    "inboxId": "inb_01J8F2K3N5P8",
    "contactId": "cnt_01J8F2K3N5P9",
    "assigneeId": "usr_01J8F2K3N5PA",
    "teamId": null,
    "status": "open",
    "priority": "high",
    "lastActivityAt": "2026-08-28T14:22:05.000Z",
    "createdAt": "2026-08-27T09:10:44.000Z",
    "contact": {
      "id": "cnt_01J8F2K3N5P9",
      "name": "Ana Ribeiro",
      "email": "ana@example.com",
      "phone": "+5511987654321",
      "avatarUrl": null
    },
    "inbox": {
      "id": "inb_01J8F2K3N5P8",
      "name": "Support — WhatsApp",
      "channelType": "whatsapp"
    },
    "assignee": {
      "id": "usr_01J8F2K3N5PA",
      "name": "Marcos Lima",
      "avatarUrl": null
    },
    "lastMessage": {
      "id": "msg_01J9M4Q0X6RA",
      "content": "Thanks, that fixed it!",
      "messageType": "incoming",
      "createdAt": "2026-08-28T14:22:05.000Z"
    },
    "agentLastSeenAt": "2026-08-28T14:20:00.000Z",
    "additionalAttributes": null,
    "customAttributes": {
      "plan": "pro"
    },
    "unreadCount": 2
  }
}
{
  "error": "Invalid input: expected string, received undefined",
  "details": [
    {
      "code": "invalid_type",
      "expected": "string",
      "path": [
        "phone"
      ],
      "message": "Invalid input: expected string, received undefined"
    }
  ]
}
{
  "error": "Unauthorized"
}
{
  "error": "API key is not authorized for this workspace"
}
{
  "error": "This contact already has a conversation in progress",
  "code": "active_conversation_exists",
  "conversation": {
    "id": "conv_01J9Z2K3M4N5P6Q7R8S9T0",
    "inboxId": "inbox_01J9Z2K3M4N5P6Q7R8S9T0",
    "inboxName": "Support",
    "status": "open",
    "teamName": "Tier 1",
    "assigneeId": null,
    "assigneeName": null,
    "aiAgentActive": false
  }
}
{
  "error": "Rate limit exceeded",
  "message": "API rate limit exceeded. Please retry after 2026-09-13T12:00:00.000Z",
  "retryAfter": 1789286400000
}
{
  "error": "Internal server error",
  "requestId": "req_01J9Z2K3M4N5P6Q7R8S9T0"
}