Pular para o conteúdo

Lista o histórico de um ticket

GET
/v1/tickets/{ticketId}/activities
Code sample: Shell / cURL
curl --request GET \
--url 'https://public-api.mspdesk.com.br/v1/tickets/1/activities?filter%5Bid%5D%5Bin%5D=1%2C2%2C3&filter%5Bcategory%5D%5Beq%5D=ALL&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%2Ccategory&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 é -createdAt (o evento mais novo primeiro), a mesma da aba.

Filtre por category, não por type. A categoria é o recorte que a aba oferece e que esta documentação consegue manter estável; type tem dezenas de valores e ganha valores novos a cada funcionalidade do produto. O type continua no corpo da resposta, para quem quiser um recorte mais fino do lado dele.

Seis tipos não têm categoria, e filter[category] não os alcança: GROUPING, UNGROUPING, MERGE, AUTOMATION, FOLLOWER_ADDED e FOLLOWER_REMOVED. Eles aparecem na listagem sem filtro, com category: null, mas nenhum valor de filter[category][eq] os traz — é o mesmo recorte que a aba do produto oferece hoje. Quem sincroniza tudo não deve filtrar por categoria; quem filtra por categoria precisa saber que agrupamento, mesclagem, automação e seguidores ficam de fora.

filter[category][eq]=ALL é aceito e significa sem recorte — o mesmo que omitir o filtro. ALL é valor de entrada apenas: nenhuma entrada do histórico sai com category: \"ALL\".

updatedAt é igual a createdAt em toda entrada: o histórico não é editado. O campo existe para que a sincronização por data funcione igual em todos os sub-recursos.

ticketId
required
integer format: int64

ID do ticket

Exemplo
1
filter[id][eq]
integer format: int64

Filtra por id igual ao valor informado.

filter[id][in]
string
Exemplo
1,2,3

Filtra por id igual a um dos valores informados, separados por vírgula (até 100).

filter[category][eq]
string
Allowed values: ALL INTERACTIONS ATTACHMENTS SLA COMMUNICATIONS APPOINTMENTS INTEGRATIONS TASKS ITEMS WORKFLOW

Filtra por category igual ao valor informado.

filter[origin][eq]
string
Allowed values: USER CONTACT_CUSTOMER EMAIL_INBOUND NINJA_RMM DATTO_RMM SYSTEM API

Filtra por origin igual ao valor informado.

filter[origin][in]
string
Exemplo
USER,CONTACT_CUSTOMER,EMAIL_INBOUND,NINJA_RMM,DATTO_RMM,SYSTEM,API

Filtra por origin igual a um dos valores informados, separados por vírgula (até 100).

filter[agentId][eq]
integer format: int64

Filtra por agentId igual ao valor informado.

filter[agentId][isNull]
boolean

Filtra por agentId ter ou não valor: true sem valor; false com valor.

filter[createdAt][gte]
string format: date-time

Filtra por createdAt maior ou igual ao valor informado.

filter[createdAt][lte]
string format: date-time

Filtra por createdAt menor ou igual ao valor informado.

filter[updatedAt][gte]
string format: date-time

Filtra por updatedAt maior ou igual ao valor informado.

filter[updatedAt][lte]
string format: date-time

Filtra por updatedAt menor ou igual ao valor informado.

limit
integer format: int32
default: 25 >= 1 <= 100

Itens por página. 1 a 100; padrão 25.

cursor
string

Cursor opaco da próxima página, devolvido em nextCursor da resposta anterior. Omita na primeira página.

sort
string

Campo de ordenação: createdAt, id (padrão -createdAt). Prefixe com - para descendente (ex.: sort=-createdAt); sempre desempatado por id na mesma direção.

Exemplo
-createdAt
fields
string

Campos de primeiro nível a retornar, separados por vírgula (id sempre volta): id, type, category, description, fieldChanges, agentId, contactId, origin, apiKeyId, apiKeyName, createdAt, updatedAt.

Exemplo
id,type,category
expand
string

Objetos 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,agent

Página do histórico

Media typeapplication/json
object
data
Array<object>

Uma entrada do histórico de um ticket.

object
agentId

Agente que provocou o evento. Nulo em evento do sistema, de contato ou escrito pela API sem agente no corpo.

integer format: int64
nullable
apiKeyId

Chave de API que gravou o evento. Nulo quando a origem não é API.

integer format: int64
nullable
apiKeyName

Nome atual da chave que gravou o evento — não é uma cópia do nome no momento da escrita. Nulo quando a chave foi excluída.

string
nullable
category

Categoria do evento, a mesma que a aba oferece. É nula em seis tipos, que hoje não pertencem a categoria nenhuma — GROUPING, UNGROUPING, MERGE, AUTOMATION, FOLLOWER_ADDED e FOLLOWER_REMOVED —, e por isso filter[category] não os alcança. Vale o mesmo na aba do produto.

string
nullable
Allowed values: INTERACTIONS ATTACHMENTS SLA COMMUNICATIONS APPOINTMENTS INTEGRATIONS TASKS ITEMS WORKFLOW
contactId

Contato do cliente que provocou o evento (portal ou e-mail). Nulo nos demais.

integer format: int64
nullable
createdAt

Instante do evento. Nunca é nulo.

string format: date-time
nullable
description

Texto do evento, como foi gravado. Sempre em português, qualquer que seja o Accept-Language da requisição: o texto é carimbado na coluna no momento da escrita, e não traduzido na leitura — a tela é que o re-renderiza no idioma do usuário. Pode trazer HTML embutido (<br>, <strong>): trate o valor como marcação, não como texto puro. O HTML é servido pela mesma allowlist da escrita (sem <script>, atributos on* ou URL fora de http/https/mailto/tel), inclusive nas entradas antigas. Para tratamento programático, use type e fieldChanges, que não dependem de idioma.

string
nullable
fieldChanges

Mudanças estruturadas do evento, quando houver. Lista vazia nos eventos que não gravam mudança campo a campo.

Array<object>
nullable

Um campo alterado por um evento do histórico.

object
field

Nome do campo alterado.

string
nullable
newValue

Valor depois da alteração. Nulo quando o campo foi esvaziado.

string
nullable
oldValue

Valor antes da alteração. Nulo quando o campo estava vazio.

string
nullable
id

Identificador da entrada do histórico.

integer format: int64
origin

Origem da escrita. API é o que esta API gravou.

string
nullable
Allowed values: USER CONTACT_CUSTOMER EMAIL_INBOUND NINJA_RMM DATTO_RMM SYSTEM API
type

Tipo do evento registrado.

string
nullable
Allowed values: CREATION UPDATE START PAUSE APPOINTMENT_FINISH DELETE ANSWERED PAUSE_SLA RESUME_SLA CONCLUSION CLOSE REOPENING ATTACHMENT REMOVE_ATTACHMENT CREATION_APPOINTMENT UPDATE_APPOINTMENT DELETE_APPOINTMENT NOTE_ADDED NOTE_EDITED NOTE_REMOVED REPLY_ADDED FORWARD_ADDED ALERT_ASSOCIATED TASK_ADDED TASK_COMPLETED TASK_REMOVED ITEM_ADDED ITEM_UPDATED ITEM_REMOVED FOLLOWER_ADDED FOLLOWER_REMOVED GROUPING UNGROUPING MERGE CUSTOMER_CHANGED AUTOMATION STAGE_CHANGED CSAT_DELIVERY
updatedAt

Igual a createdAt: o histórico não é editado.

string format: date-time
nullable
nextCursor

Cursor opaco da próxima página; null quando não há mais páginas.

string
nullable
Exemplo
{
"data": [
{
"agentId": 42,
"apiKeyId": 8,
"apiKeyName": "Integração ERP",
"category": "INTERACTIONS",
"contactId": null,
"createdAt": "2026-01-10T12:20:00Z",
"description": "Prioridade: [Média] para [Alta]",
"fieldChanges": [
{
"field": "priority",
"newValue": "HIGH",
"oldValue": "MEDIUM"
}
],
"id": 9120,
"origin": "API",
"type": "UPDATE",
"updatedAt": "2026-01-10T12:20:00Z"
}
],
"nextCursor": "eyJpZCI6MTA0Mn0"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Requisição malformada ou parâmetros de consulta inválidos

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
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"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Chave de API ausente, inválida, revogada ou expirada

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
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)

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
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"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Recurso inexistente, de outra empresa, ou rota inexistente

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
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"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

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

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
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"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Retry-After
integer format: int32

Segundos até poder repetir

Erro interno inesperado

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
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"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo