Mensagens diretas
Liste as conversas de uma conta, leia uma conversa e responda dentro da janela de 24 horas da Meta.
Leitura e resposta de mensagens diretas do Instagram, ao vivo da Meta. Nada é guardado pela Postmatic.
Permissão
A conta precisa ter sido conectada com instagram_business_manage_messages. Sem ela, as rotas respondem 403 PERMISSION_REQUIRED: reconecte a conta por Contas.
Conversas
curl "https://api.uat.postmatic.dev/v1/messages?accountId=int_…&limit=20" -H "x-access-key: pm_live_…"{
"success": true, "accountId": "int_…", "selfId": "1784…", "selfUsername": "acme.brand",
"conversations": [{
"id": "aWdfZ…", "updatedTime": "2026-09-09T12:00:00+0000",
"participants": [{ "id": "1784…", "username": "acme.brand", "name": "Acme", "profilePictureUrl": null }, { "id": "1234…", "username": "ana", "name": "Ana", "profilePictureUrl": "https://…" }],
"lastMessage": { "id": "aWdf…", "text": "oi, tem em azul?", "from": { "id": "1234…", "username": "ana" }, "timestamp": "2026-09-09T12:00:00+0000" }
}],
"nextCursor": "QVFIU…"
}O recipientId para responder é o participante cujo id é diferente de selfId.
Ler uma conversa
GET /v1/messages/:conversationId?accountId=…&limit=25&cursor=… devolve messages (mais recentes primeiro) e nextCursor.
Responder
curl -X POST https://api.uat.postmatic.dev/v1/messages \
-H "x-access-key: pm_live_…" -H "content-type: application/json" \
-d '{ "accountId": "int_…", "recipientId": "1234…", "text": "Temos sim! Quer que eu separe?" }'Responde 201 com messageId. Texto de 1 a 1000 caracteres.
A janela de 24 horas
A Meta só permite enviar até 24 horas depois da última mensagem do destinatário. A Postmatic verifica isso antes de enviar: fora da janela, ou sem nenhuma mensagem anterior dele, a resposta é 409 MESSAGE_WINDOW_CLOSED com details.recipientId e details.lastInboundAt (ou null). Não há como iniciar uma conversa pela API.