Lista as notas de um ticket
curl --request GET \ --url 'https://public-api.mspdesk.com.br/v1/tickets/1/notes?filter%5Bid%5D%5Bin%5D=1%2C2%2C3&filter%5Btype%5D%5Beq%5D=FORWARD&filter%5Btype%5D%5Bin%5D=FORWARD%2CREPLY%2CNOTE&filter%5Bvisibility%5D%5Beq%5D=PUBLIC&filter%5Borigin%5D%5Beq%5D=USER&filter%5Borigin%5D%5Bin%5D=USER%2CCONTACT_CUSTOMER%2CEMAIL_INBOUND%2CNINJA_RMM%2CDATTO_RMM%2CSYSTEM%2CAPI&limit=25&sort=-createdAt&fields=id%2Ctype%2Cvisibility&expand=customer%2Cagent' \ --header 'Authorization: Bearer <token>'Escopo exigido: tickets:read. Paginação por cursor opaco (?cursor=), nunca por página/offset — use nextCursor da resposta anterior. A ordenação padrão é a da linha do tempo do produto: -createdAt, desempatada pelo id na mesma direção.
sort= aceita só createdAt e id. updatedAt é filtro e não ordenação: o valor é createdAt enquanto a nota nunca tiver sido editada, e essa expressão não serve de chave de paginação estável.
createdAt tem precisão de segundo, então várias notas podem compartilhar o mesmo instante — é por isso que o id sempre desempata.
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
1Parâmetros de consulta
Seção intitulada “Query Parameters”Filtra por id igual ao valor informado.
Exemplo
1,2,3Filtra por id igual a um dos valores informados, separados por vírgula (até 100).
Filtra por type igual ao valor informado.
Exemplo
FORWARD,REPLY,NOTEFiltra por type igual a um dos valores informados, separados por vírgula (até 100).
Filtra por visibility igual ao valor informado.
Filtra por origin igual ao valor informado.
Exemplo
USER,CONTACT_CUSTOMER,EMAIL_INBOUND,NINJA_RMM,DATTO_RMM,SYSTEM,APIFiltra por origin igual a um dos valores informados, separados por vírgula (até 100).
Filtra por authorAgentId igual ao valor informado.
Filtra por authorAgentId ter ou não valor: true sem valor; false com valor.
Filtra por createdAt maior ou igual ao valor informado.
Filtra por createdAt menor ou igual ao valor informado.
Filtra por updatedAt maior ou igual ao valor informado.
Filtra por updatedAt menor ou igual ao valor informado.
Itens por página. 1 a 100; padrão 25.
Cursor opaco da próxima página, devolvido em nextCursor da resposta anterior. Omita na primeira página.
Campo de ordenação: id, createdAt (padrão -createdAt). Prefixe com - para descendente (ex.: sort=-createdAt); sempre desempatado por id na mesma direção.
Exemplo
-createdAtCampos de primeiro nível a retornar, separados por vírgula (id sempre volta): id, type, visibility, body, recipients, cc, sender, origin, apiKeyId, apiKeyName, authorAgentId, authorContactId, mentionedAgentIds, attachmentIds, createdAt, updatedAt.
Exemplo
id,type,visibilityObjetos 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”Página de notas
object
Nota, resposta ou encaminhamento registrado no ticket.
object
Identificador da chave de API que escreveu a nota; nulo quando a nota não veio da API.
Nome atual da chave de API que escreveu a nota; nulo quando a chave não existe mais ou não é desta empresa.
Anexos do ticket vinculados a esta nota.
Agente que assina a nota; nulo nas notas sem autor humano.
Contato que escreveu a nota pelo portal ou por e-mail; nulo nas demais.
Texto da nota, em HTML.
Cópias do e-mail, separadas por ; — preenchido na resposta.
Instante de criação da nota.
Identificador da nota.
Agentes mencionados na nota.
Quem originou a nota: USER (tela), API (integração), CONTACT_CUSTOMER (portal), EMAIL_INBOUND, integrações de monitoramento ou SYSTEM.
Destinatários do e-mail, separados por ; — preenchido em resposta e encaminhamento.
Remetente registrado quando a nota veio de um e-mail recebido.
Tipo da nota: nota simples, resposta ao contato ou encaminhamento.
Instante da última alteração da nota; igual a createdAt enquanto a nota nunca tiver sido editada.
Visibilidade: PUBLIC aparece para o solicitante no portal e no e-mail; PRIVATE fica só para os agentes.
Cursor opaco da próxima página; null quando não há mais páginas.
Exemplo
{ "data": [ { "apiKeyId": 8, "apiKeyName": "Integração ERP", "attachmentIds": [ 912 ], "authorAgentId": 42, "authorContactId": null, "body": "<p>Olá, Beatriz. Reiniciamos o spooler de impressão e a impressora voltou a responder.</p>", "cc": "financeiro@acme.com.br", "createdAt": "2026-01-10T14:05:00Z", "id": 1204, "mentionedAgentIds": [], "origin": "API", "recipients": "beatriz.lima@acme.com.br", "sender": null, "type": "REPLY", "updatedAt": "2026-01-10T14:05:00Z", "visibility": "PUBLIC" } ], "nextCursor": "eyJpZCI6MTA0Mn0"}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