Lê uma conversa vinculada ao ticket
curl --request GET \ --url 'https://public-api.mspdesk.com.br/v1/tickets/1/chat-sessions/77?fields=id%2CsessionId%2CsessionNumber&expand=customer%2Cagent' \ --header 'Authorization: Bearer <token>'Escopo exigido: tickets:read. O linkId é o id do vínculo, não o da conversa no MSP Talks. Um vínculo de outro ticket responde 404 not_found, mesmo sendo da mesma empresa.
alsoLinkedToTicketId vem nulo aqui: ele só é apurado no momento do vínculo, porque depois de gravado o próprio vínculo apareceria como “o outro ticket”.
Autorizações
Seção intitulada “Authorizations”Parâmetros
Seção intitulada “Parameters”Parâmetros de caminho
Seção intitulada “Path Parameters”ID do ticket
Exemplo
1ID do vínculo
Exemplo
77Parâmetros de consulta
Seção intitulada “Query Parameters”Campos de primeiro nível a retornar, separados por vírgula (id sempre volta): id, sessionId, sessionNumber, sessionUrl, channelLabel, contactName, linkOrigin, primarySession, lastNoteStatus, lastNoteAt, linkedByAgentId, alsoLinkedToTicketId, createdAt, updatedAt.
Exemplo
id,sessionId,sessionNumberObjetos a acrescentar à resposta, separados por vírgula, até 3 por requisição: . Sem o escopo exigido de algum item pedido: 403 insufficient_scope.
Exemplo
customer,agentRespostas
Seção intitulada “Responses”A conversa vinculada
Conversa do MSP Talks vinculada a um ticket.
object
Outro ticket da mesma empresa que já usa esta conversa. Só vem preenchido na resposta de POST /chat-sessions, e é aviso, não erro: a mesma conversa pode estar em mais de um ticket. Nas demais respostas — inclusive a de iniciar conversa, que também cria um vínculo — vem sempre nulo, porque a conversa é nova e não havia o que comparar.
Canal por onde a conversa acontece, como o catálogo do MSP Talks o nomeia. Decorativo: nulo não impede nada.
Quem está do outro lado da conversa.
Instante em que a conversa foi vinculada ao ticket.
ID do vínculo entre a conversa e o ticket. É o id da rota.
Instante da última anotação enviada à conversa. Nulo quando nenhuma foi tentada.
Resultado da última anotação enviada à conversa: NONE, SENT ou FAILED.
De onde veio o vínculo: MANUAL (alguém apontou a conversa), OUTBOUND (o Desk abriu a conversa), WEBHOOK (a conversa originou o ticket) ou EMBED (o ticket foi aberto de dentro da conversa).
Agente que vinculou a conversa. Nulo no vínculo automático, que não tem pessoa por trás.
Se esta é a conversa principal do ticket — a que o ticket referencia. No máximo uma por ticket.
ID da conversa no MSP Talks.
Protocolo da conversa no MSP Talks.
Endereço da conversa no MSP Talks. Nulo quando não foi possível derivar o domínio da instalação do cliente.
Igual a lastNoteAt quando há anotação, e a createdAt quando não há: a anotação é a única alteração que o vínculo sofre.
Exemplo
{ "alsoLinkedToTicketId": null, "channelLabel": "Suporte WhatsApp", "contactName": "Beatriz Lima", "createdAt": "2026-01-10T12:50:00Z", "id": 77, "lastNoteAt": "2026-01-10T14:10:00Z", "lastNoteStatus": "SENT", "linkOrigin": "OUTBOUND", "linkedByAgentId": 42, "primarySession": true, "sessionId": "3b2f6c1e-9a4d-4f8b-8c2e-1d5a7e9b0c34", "sessionNumber": "98765", "sessionUrl": "https://atendimento.exemplo.com.br/sessions/3b2f6c1e-9a4d-4f8b-8c2e-1d5a7e9b0c34", "updatedAt": "2026-01-10T14:10:00Z"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
Requisição malformada ou parâmetros de consulta inválidos
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
Exemplo
{ "code": "not_found", "detail": "O recurso solicitado não foi encontrado.", "errors": [ { "code": "required" } ], "layer": "ip", "operation": "report", "requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55", "status": 404, "title": "Recurso não encontrado", "type": "https://developers.mspdesk.com.br/erros/#not_found"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
Chave de API ausente, inválida, revogada ou expirada
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
Exemplo
{ "code": "not_found", "detail": "O recurso solicitado não foi encontrado.", "errors": [ { "code": "required" } ], "layer": "ip", "operation": "report", "requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55", "status": 404, "title": "Recurso não encontrado", "type": "https://developers.mspdesk.com.br/erros/#not_found"}Acesso negado: empresa inativa (account_inactive), API pública desabilitada para a empresa (public_api_disabled), escopo liberado só com a API pública (scope_requires_public_api) ou escopo insuficiente (insufficient_scope)
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
Exemplo
{ "code": "not_found", "detail": "O recurso solicitado não foi encontrado.", "errors": [ { "code": "required" } ], "layer": "ip", "operation": "report", "requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55", "status": 404, "title": "Recurso não encontrado", "type": "https://developers.mspdesk.com.br/erros/#not_found"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
Recurso inexistente, de outra empresa, ou rota inexistente
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
Exemplo
{ "code": "not_found", "detail": "O recurso solicitado não foi encontrado.", "errors": [ { "code": "required" } ], "layer": "ip", "operation": "report", "requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55", "status": 404, "title": "Recurso não encontrado", "type": "https://developers.mspdesk.com.br/erros/#not_found"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
Limite de uso atingido (rate_limited); o campo layer indica a camada: ip, company, key, operation ou concurrency
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
Exemplo
{ "code": "not_found", "detail": "O recurso solicitado não foi encontrado.", "errors": [ { "code": "required" } ], "layer": "ip", "operation": "report", "requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55", "status": 404, "title": "Recurso não encontrado", "type": "https://developers.mspdesk.com.br/erros/#not_found"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo
Segundos até poder repetir
Erro interno inesperado
Erro no formato RFC 9457 (application/problem+json).
object
Código estável do erro, para tratamento programático.
Explicação legível deste erro específico.
Erros de campo — presente quando a falha vem de validação de campo.
object
Código estável do erro de campo.
Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.
Mensagem traduzida no locale da requisição.
Presente só no 429
Presente só quando layer=operation
Identificador da requisição — informe-o ao suporte ao reportar um erro.
Presente só no 403 insufficient_scope
Status HTTP da resposta.
Título curto e legível do erro.
URI que identifica o tipo do erro.
Exemplo
{ "code": "not_found", "detail": "O recurso solicitado não foi encontrado.", "errors": [ { "code": "required" } ], "layer": "ip", "operation": "report", "requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55", "status": 404, "title": "Recurso não encontrado", "type": "https://developers.mspdesk.com.br/erros/#not_found"}Cabeçalhos
Seção intitulada “Headers”Capacidade do balde mais restritivo consumido nesta requisição
Requisições restantes nesse balde
Segundos até o balde encher de novo