Lista os anexos de um ticket
curl --request GET \ --url 'https://public-api.mspdesk.com.br/v1/tickets/1/attachments?filter%5Bid%5D%5Bin%5D=1%2C2%2C3&limit=25&sort=-id&fields=id%2CfileName%2CcontentType&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 é id crescente.
A lista é a da aba Anexos: ficam de fora os dois tipos de imagem que existem por causa do texto e não como arquivo — a que o remetente do e-mail declarou embutida (inline, tipicamente assinatura ou papel de carta) e a que o agente colou no editor da descrição (linkedToDescription). As duas seguem visíveis onde foram postas, no corpo. Por isso os dois campos saem sempre false aqui, e nenhum dos dois é filtro: um filtro que só pode casar um valor não filtra nada.
Anexo de nota e de apontamento continuam na lista: são arquivo de verdade, só que anexados em outro momento do ticket. Use filter[noteId][isNull]=true e filter[appointmentId][isNull]=true para ficar só com os anexos soltos.
sort= aceita só id e fileName. createdAt e updatedAt são filtro e não ordenação: são colunas novas, nulas no que foi registrado antes desta API, e um valor nulo não serve de chave de paginação estável.
fileName é o nome de exibição do arquivo, o mesmo que a tela mostra — a ordenação e o filter[fileName][contains] valem sobre ele, não sobre a chave interna de armazenamento.
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 noteId igual ao valor informado.
Filtra por noteId ter ou não valor: true sem valor; false com valor.
Filtra por appointmentId igual ao valor informado.
Filtra por appointmentId ter ou não valor: true sem valor; false com valor.
Filtra por fileName contendo o texto informado (sem diferenciar maiúsculas de minúsculas, conforme a colação do banco).
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: fileName, id (padrão id). Prefixe com - para descendente (ex.: sort=-id); sempre desempatado por id na mesma direção.
Exemplo
-idCampos de primeiro nível a retornar, separados por vírgula (id sempre volta): id, fileName, contentType, size, noteId, appointmentId, linkedToDescription, inline, createdAt, updatedAt.
Exemplo
id,fileName,contentTypeObjetos 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 anexos
object
Arquivo anexado a um ticket.
object
Apontamento a que o anexo está preso. Nulo num anexo solto da aba.
Tipo de mídia declarado no envio.
Instante de criação do registro. Nulo em anexo anterior a esta API.
Nome do arquivo como a tela o mostra.
Identificador do anexo.
O arquivo é uma imagem que o remetente do e-mail declarou embutida no corpo (assinatura, papel de carta). Sempre false no que a listagem devolve.
O arquivo é uma imagem colada no editor da descrição do ticket. Sempre false no que a listagem devolve.
Nota a que o anexo está preso. Nulo num anexo solto da aba.
Tamanho em bytes.
Instante da última alteração do registro. Nulo em anexo anterior a esta API que nunca foi alterado desde então.
Cursor opaco da próxima página; null quando não há mais páginas.
Exemplo
{ "data": [ { "appointmentId": null, "contentType": "application/pdf", "createdAt": "2026-01-10T14:04:00Z", "fileName": "log-impressora.pdf", "id": 912, "inline": false, "linkedToDescription": false, "noteId": 1204, "size": 184320, "updatedAt": "2026-01-10T14:04:00Z" } ], "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