Pular para o conteúdo
GET/mensagens/{id}

Ver uma mensagem

mensagens:ler

Inclusive o status atual (pendente, enviada, entregue, lida, falhou).

GET /mensagens/{id}

curl "https://chat.forsi.com.br/api/v1/mensagens/4e8cb5d0-2d89-4fc2-93bb-c8e5e17d4629" \
  -H "Authorization: Bearer $FORSI_CHAVE"
Resposta 200
{
  "dados": {
    "id": "4e8cb5d0-2d89-4fc2-93bb-c8e5e17d4629",
    "conversa_id": "495a7cae-128c-4b66-adbc-807b3959c129",
    "direcao": "entrada",
    "tipo": "texto",
    "texto": "Oi, queria remarcar minha consulta",
    "estado": "pendente",
    "erro": "Connection timed out",
    "autor_tipo": "contato",
    "responde_a_id": "ad52f13b-411d-4526-9d07-91f222c74891",
    "id_whatsapp": "wamid.HBgNNTUzMTk4ODg4Nzc3NxUCABEYEjQ",
    "enviada_em": "2026-10-04T13:05:12.481Z",
    "criado_em": "2026-10-04T13:05:12.481Z",
    "editada_em": "2026-10-04T13:05:12.481Z",
    "apagada_em": "2026-10-04T13:05:12.481Z",
    "pela_api": {"chave_id":"71c5c606-a9d7-4270-8891-45d783aa9b71"},
    "modelo": "texto",
    "midia": [
      {
        "id": "94ac725d-5a70-40b2-8fa6-cdd23a32ac85",
        "mime": "image/jpeg",
        "nome_arquivo": "foto.jpg",
        "tamanho": 48213,
        "duracao_s": 1.5
      }
    ]
  }
}

Parâmetros no caminho#

  • iduuidobrigatório

    No caminho da URL.

Resposta#

200 com {"dados": ...}: Mensagem.

  • iduuidopcional
    —
  • conversa_iduuidopcional
    —
  • direcao"entrada" | "saida"opcional
    —
  • tipostringopcional
    • ex.: texto
  • textostringopcional
    —
  • estado"pendente" | "enviando" | "enviada" | "entregue" | "lida" | "tocada" | "falhou" | "recebida" | "nao_confirmado"opcional

    nao_confirmado: a conexão caiu durante o envio e o WhatsApp não confirmou; a mensagem pode ter chegado. Não é reenviada sozinha.

  • errostringopcional
    —
  • autor_tipo"contato" | "usuario" | "agente" | "sistema" | "celular"opcional
    —
  • responde_a_iduuidopcional
    —
  • id_whatsappstringopcional
    —
  • enviada_emdata e hora ISO 8601opcional
    —
  • criado_emdata e hora ISO 8601opcional
    —
  • editada_emdata e hora ISO 8601opcional
    —
  • apagada_emdata e hora ISO 8601opcional
    —
  • pela_apiobjectopcional
    —
  • pela_api.chave_iduuidopcional
    —
  • modelostringopcional

    Nome do modelo, quando tipo = modelo.

  • midialista de objectopcional
    —
  • midia[].iduuidopcional
    —
  • midia[].mimestringopcional
    —
  • midia[].nome_arquivostringopcional
    —
  • midia[].tamanhointegeropcional
    —
  • midia[].duracao_snumberopcional
    —

Erros#

Todo erro vem como {"erro": {"codigo", "mensagem"}}. Trate pelo codigo: ele não muda.

Status de erro desta operação
StatusQuando
401Chave ausente ou inválida (resposta igual para qualquer motivo).
403Plano sem API, escopo insuficiente ou https/origem recusados.
404Não existe nesta organização.
422Dados inválidos ou regra de negócio (ex.: janela_fechada; conta_restrita = a Meta restringiu a conta por spam: erro traz os campos de RestricaoMeta, como ate, escopo, motivo e retry_after_s).
429Limite de requisições. Veja Retry-After.
Códigos de erro que esta área pode devolver22
  • tipo_invalidotipo deve ser texto, imagem, video, audio, documento ou modelo.
  • texto_vazioMensagem de texto precisa de texto.
  • texto_longoTexto longo demais (máximo de 4096 caracteres).
  • midia_invalidaLink de mídia inválido: use https com um endereço público.
  • midia_indisponivelO arquivo desta mídia está indisponível.
  • midia_baixandoO download desta mídia está na fila. Tente novamente após Retry-After.
  • janela_fechadaA janela de 24 horas desta conversa está fechada. Na API oficial do WhatsApp, só um modelo aprovado reabre a conversa.
  • conta_restritaA Meta restringiu esta conta do WhatsApp por spam. Nada foi enviado: erro.ate diz até quando (erro.retry_after_s e o cabeçalho Retry-After, em segundos), erro.escopo o que está barrado e erro.motivo o código. Quem administra pode desligar a trava em Configurações > API.
  • caixa_obrigatoriaA organização tem mais de um WhatsApp conectado: informe caixa_id (veja GET /me).
  • caixa_sem_conexaoNenhum WhatsApp conectado nesta caixa.
  • caixa_inexistenteCaixa não encontrada (veja GET /me).
  • canal_sem_iniciarEste canal não permite começar conversa por telefone. Use uma caixa de WhatsApp.
  • modelo_sem_api_oficialModelos só saem pela API oficial do WhatsApp. Conecte a API oficial nesta caixa.
  • modelo_inexistenteModelo não encontrado nesta caixa (veja GET /modelos).
  • telefone_invalidoTelefone inválido. Mande com DDI e DDD.
  • conversa_inexistenteConversa não encontrada.
  • mensagem_inexistenteMensagem não encontrada.
  • canal_oficial_indisponivelcanal "oficial": a API oficial do WhatsApp não está conectada nesta caixa. Nada foi enviado pelo QR.
  • canal_oficial_sem_grupocanal "oficial": a API oficial do WhatsApp não envia para grupo. Use "qr" ou omita o campo.
  • canal_qr_indisponivelcanal "qr": o WhatsApp por QR não está conectado nesta caixa. Nada foi enviado pela API oficial.
  • canal_qr_sem_modelocanal "qr": modelos só saem pela API oficial do WhatsApp. Use "oficial" ou omita o campo.
  • canal_so_whatsappcanal "oficial"/"qr" só vale em caixa de WhatsApp. Omita o campo (ou use "auto").

Os erros que valem para qualquer rota (chave, limite, JSON) estão em Erros.