Work tickets and messages, look up contacts and teams, pull reports, and reply, assign or close.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Assign a ticket to a user or a team, with an optional assignment note. Reversible by reassigning. Trengo: POST /tickets/{ticket_id}/assign.
Assign to a user or to a team.
The ticket id.
Optional assignment note.
The team id — required when type is team.
The user id — required when type is user.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Assign a ticket to a user or a team, with an optional assignment note. Reversible by reassigning. Trengo: POST /tickets/{ticket_id}/assign.
| Argument | Type | Description |
|---|---|---|
| note | string | Optional assignment note. |
| type* | string | Assign to a user or to a team. |
| team_id | integer | The team id — required when type is team. |
| user_id | integer | The user id — required when type is user. |
| ticket_id* | integer | The ticket id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id",
"type"
],
"properties": {
"note": {
"type": "string",
"description": "Optional assignment note."
},
"type": {
"enum": [
"user",
"team"
],
"type": "string",
"description": "Assign to a user or to a team."
},
"team_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The team id — required when type is team.",
"exclusiveMinimum": 0
},
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The user id — required when type is user.",
"exclusiveMinimum": 0
},
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket id.",
"exclusiveMinimum": 0
}
}
}Close a ticket, optionally applying a ticket result (see trengo_list_ticket_results). Reversible with trengo_reopen_ticket. Trengo: POST /tickets/{ticket_id}/close.
| Argument | Type | Description |
|---|---|---|
| ticket_id* | integer | The ticket id. |
| ticket_result_id | integer | Optional ticket result to apply. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id"
],
"properties": {
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket id.",
"exclusiveMinimum": 0
},
"ticket_result_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional ticket result to apply.",
"exclusiveMinimum": 0
}
}
}Create a card (e.g. a deal or task) in a stage of a Trengo board. The board id is in the board's URL in Trengo. Trengo: POST /boards/{boardId}/cards.
| Argument | Type | Description |
|---|---|---|
| name* | string | The card's name. |
| board_id* | integer | The board id. |
| stage_id* | integer | The stage id. |
| description | string | The card's description. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"board_id",
"stage_id",
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The card's name."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The board id.",
"exclusiveMinimum": 0
},
"stage_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The stage id.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"description": "The card's description."
}
}
}Create a contact on a channel. The identifier is the contact's address on that channel: an email address for email channels, a phone number for WhatsApp/SMS/voice. Trengo: POST /channels/{channel_id}/contacts.
| Argument | Type | Description |
|---|---|---|
| name | string | The contact's full name. |
| channel_id* | integer | The channel id. |
| identifier* | string | Email address or phone number, depending on the channel. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"channel_id",
"identifier"
],
"properties": {
"name": {
"type": "string",
"description": "The contact's full name."
},
"channel_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The channel id.",
"exclusiveMinimum": 0
},
"identifier": {
"type": "string",
"minLength": 1,
"description": "Email address or phone number, depending on the channel."
}
}
}Open a new ticket for an existing contact on a channel. Nothing is sent to the customer until you post a message with trengo_send_ticket_message. Trengo: POST /tickets.
| Argument | Type | Description |
|---|---|---|
| subject | string | Optional subject. |
| channel_id* | integer | The channel id. |
| contact_id* | integer | The contact id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"channel_id",
"contact_id"
],
"properties": {
"subject": {
"type": "string",
"description": "Optional subject."
},
"channel_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The channel id.",
"exclusiveMinimum": 0
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The contact id.",
"exclusiveMinimum": 0
}
}
}Per-agent performance over a period: messages sent, notes, tickets assigned and closed, average first response and resolution times (with and without business hours). Trengo: GET /reporting/agent_performance.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
| end_date | string | Period end as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| team_ids | array | Only these team ids. |
| user_ids | array | Only these user ids. |
| label_ids | array | Only these label ids. |
| start_date | string | Period start as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| channel_ids | array | Only these channel ids. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
},
"end_date": {
"type": "string",
"description": "Period end as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"team_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these team ids."
},
"user_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these user ids."
},
"label_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these label ids."
},
"start_date": {
"type": "string",
"description": "Period start as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"channel_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these channel ids."
}
}
}Fetch one contact with name, email, phone and custom field data, optionally with notes. Trengo: GET /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| contact_id* | integer | The contact id. |
| include_notes | boolean | Also return the contact's notes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The contact id.",
"exclusiveMinimum": 0
},
"include_notes": {
"type": "boolean",
"description": "Also return the contact's notes."
}
}
}Fetch the full email behind one message of a ticket: original HTML body, from, to, subject and Message-ID. The message must be an email message. Trengo: GET /tickets/{ticket_id}/full_email_messages/{message_id}.
| Argument | Type | Description |
|---|---|---|
| ticket_id* | integer | The ticket id. |
| message_id* | integer | The message id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id",
"message_id"
],
"properties": {
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket id.",
"exclusiveMinimum": 0
},
"message_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The message id.",
"exclusiveMinimum": 0
}
}
}Aggregate support metrics over a period: new, created, assigned, closed and reopened tickets, average first response time and average total resolution time (seconds). Filter by team, channel, label or direction. Trengo: GET /reporting/metrics.
| Argument | Type | Description |
|---|---|---|
| metrics* | array | Which metrics to return. |
| end_date | string | Period end as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| team_ids | array | Only these team ids. |
| direction | string | Only INBOUND or OUTBOUND conversations. |
| label_ids | array | Only these label ids. |
| start_date | string | Period start as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| channel_ids | array | Only these channel ids. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"metrics"
],
"properties": {
"metrics": {
"type": "array",
"items": {
"enum": [
"new_tickets",
"assigned_tickets",
"average_total_resolution_time",
"average_first_response_time",
"created_tickets",
"closed_tickets",
"reopened_tickets"
],
"type": "string"
},
"minItems": 1,
"description": "Which metrics to return."
},
"end_date": {
"type": "string",
"description": "Period end as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"team_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these team ids."
},
"direction": {
"enum": [
"INBOUND",
"OUTBOUND"
],
"type": "string",
"description": "Only INBOUND or OUTBOUND conversations."
},
"label_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these label ids."
},
"start_date": {
"type": "string",
"description": "Period start as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"channel_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these channel ids."
}
}
}Per-ticket reporting rows: status, assignee, labels, first reply, first resolution and total resolution times (with and without business hours). Filter by team, channel, label, direction, status and created/closed/assigned date ranges; sort by a timing metric. For large accounts page with start_after_ticket_id instead of page. Trengo: GET /reporting/details/ticket.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
| sort_by | string | Sort column. |
| statuses | array | Only tickets in these statuses. |
| team_ids | array | Only these team ids. |
| direction | string | Only INBOUND or OUTBOUND conversations. |
| label_ids | array | Only these label ids. |
| sort_order | string | Sort direction. |
| channel_ids | array | Only these channel ids. |
| closed_end_date |
List the contact groups in the account — use their ids with trengo_update_contact. Trengo: GET /contact_groups.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
}
}
}List contacts, or search them by name, email or phone number. Trengo: GET /contacts.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
| term | string | Search term, matched on email, phone number and name. |
| include_last_interaction | boolean | Also return each contact's last interaction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
},
"term": {
"type": "string",
"description": "Search term, matched on email, phone number and name."
},
"include_last_interaction": {
"type": "boolean",
"description": "Also return each contact's last interaction."
}
}
}List the custom fields defined for tickets, contacts and profiles. Trengo: GET /custom_fields.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
}
}
}List the ticket labels (tags) in the account, for filtering tickets and reports. Trengo: GET /labels.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
}
}
}List the saved quick replies (canned responses), optionally only the messaging or email ones — useful for drafting consistent answers. Trengo: GET /quick_replies.
| Argument | Type | Description |
|---|---|---|
| type | string | Only quick replies of this type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"enum": [
"MESSAGING",
"EMAIL"
],
"type": "string",
"description": "Only quick replies of this type."
}
}
}List the teams in the account — use their ids to assign tickets to a team. Trengo: GET /teams.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
}
}
}List the messages of one ticket — inbound, outbound and internal notes — with the contact or agent behind each. Trengo: GET /tickets/{ticket_id}/messages.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
| ticket_id* | integer | The ticket id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
},
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket id.",
"exclusiveMinimum": 0
}
}
}List the ticket results (closing outcomes, e.g. 'Resolved', 'Sale') that can be applied when closing a ticket. Trengo: GET /ticket_results.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
}
}
}List tickets (conversations) visible to the token's user, newest activity first, with channel and latest message. Filter by status, contact, assignee, channel, label, last message direction or update time. Trengo: GET /tickets.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
| sort | string | By last message time: -date newest first (default), date oldest first. |
| users | array | Only these assigned user ids. |
| labels | array | Only these label ids. |
| status | string | Only tickets in this status. INVALID = spam. |
| channels | array | Only these channel ids. |
| contact_id | integer | Only tickets of this contact. |
| updated_at_gt | string | Only tickets updated after this date-time. |
| last_message_type | string | Only tickets whose last message was INBOUND or OUTBOUND. |
List the agents (users) in the Trengo account — use their ids to assign tickets or filter. Trengo: GET /users.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (1-based). Omit for the first page. |
| sort | string | Sort column (default id). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
},
"sort": {
"enum": [
"id",
"first_name",
"last_name",
"created_at"
],
"type": "string",
"description": "Sort column (default id)."
}
}
}Reopen a closed ticket. Trengo: POST /tickets/{ticket_id}/reopen.
| Argument | Type | Description |
|---|---|---|
| ticket_id* | integer | The ticket id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id"
],
"properties": {
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket id.",
"exclusiveMinimum": 0
}
}
}Post a message on a ticket. With internal_note=true it is an internal note visible only to agents. OTHERWISE IT IS DELIVERED TO THE CUSTOMER on the ticket's channel (email, WhatsApp, chat...) and cannot be recalled — confirm the text first. Trengo: POST /tickets/{ticket_id}/messages.
| Argument | Type | Description |
|---|---|---|
| message* | string | The message. May contain HTML when the channel is email. |
| subject | string | Email channels only. Trengo prefixes it with 'Re:' when replying. |
| ticket_id* | integer | The ticket id. |
| internal_note | boolean | true = internal note for agents only; false/omitted = sent to the customer. |
| attachment_ids | array | Email channels only: ids of previously uploaded attachments. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ticket_id",
"message"
],
"properties": {
"message": {
"type": "string",
"minLength": 1,
"description": "The message. May contain HTML when the channel is email."
},
"subject": {
"type": "string",
"description": "Email channels only. Trengo prefixes it with 'Re:' when replying."
},
"ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The ticket id.",
"exclusiveMinimum": 0
},
"internal_note": {
"type": "boolean",
"description": "true = internal note for agents only; false/omitted = sent to the customer."
},
"attachment_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Email channels only: ids of previously uploaded attachments."
}
}
}Partially update a board card: rename it, move it to another stage, or set its users (owners) and contacts (leads). user_ids / contact_ids replace the current sets. Trengo: PUT /boards/{boardId}/cards/{cardId}.
| Argument | Type | Description |
|---|---|---|
| name | string | The card's new name. |
| card_id* | integer | The card id. |
| board_id* | integer | The board id. |
| stage_id | integer | Move the card to this stage. |
| user_ids | array | Trengo user ids on the card, e.g. deal owners (replaces the set). |
| contact_ids | array | Trengo contact ids on the card, e.g. leads (replaces the set). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"board_id",
"card_id"
],
"properties": {
"name": {
"type": "string",
"description": "The card's new name."
},
"card_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The card id.",
"exclusiveMinimum": 0
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The board id.",
"exclusiveMinimum": 0
},
"stage_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Move the card to this stage.",
"exclusiveMinimum": 0
},
"user_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Trengo user ids on the card, e.g. deal owners (replaces the set)."
},
"contact_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Trengo contact ids on the card, e.g. leads (replaces the set)."
}
}
}Rename a contact and/or set the contact groups it belongs to. contact_group_ids REPLACES the contact's groups. Trengo: PUT /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| name | string | The contact's new name. |
| contact_id* | integer | The contact id. |
| contact_group_ids | array | The full set of contact group ids (replaces the current groups). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"name": {
"type": "string",
"description": "The contact's new name."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The contact id.",
"exclusiveMinimum": 0
},
"contact_group_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "The full set of contact group ids (replaces the current groups)."
}
}
}| string |
| Closed-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| created_end_date | string | Created-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| assigned_end_date | string | Assigned-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| closed_start_date | string | Closed-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| created_start_date | string | Created-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| assigned_start_date | string | Assigned-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair. |
| start_after_ticket_id | integer | Keyset cursor: return tickets after this ticket id (replaces page for huge accounts). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
},
"sort_by": {
"enum": [
"first_resolution_time_opening_hours",
"first_resolution_time",
"first_response_time_opening_hours",
"first_response_time",
"total_resolution_time_opening_hours",
"total_resolution_time",
"created_at",
"assigned_at",
"closed_at"
],
"type": "string",
"description": "Sort column."
},
"statuses": {
"type": "array",
"items": {
"enum": [
"OPEN",
"ASSIGNED",
"CLOSED",
"INVALID"
],
"type": "string"
},
"description": "Only tickets in these statuses."
},
"team_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these team ids."
},
"direction": {
"enum": [
"INBOUND",
"OUTBOUND"
],
"type": "string",
"description": "Only INBOUND or OUTBOUND conversations."
},
"label_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these label ids."
},
"sort_order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"channel_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these channel ids."
},
"closed_end_date": {
"type": "string",
"description": "Closed-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"created_end_date": {
"type": "string",
"description": "Created-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"assigned_end_date": {
"type": "string",
"description": "Assigned-until as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"closed_start_date": {
"type": "string",
"description": "Closed-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"created_start_date": {
"type": "string",
"description": "Created-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"assigned_start_date": {
"type": "string",
"description": "Assigned-from as ISO 8601, e.g. 2026-09-01T00:00:00+00:00. Give it together with its pair."
},
"start_after_ticket_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Keyset cursor: return tickets after this ticket id (replaces page for huge accounts).",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number (1-based). Omit for the first page."
},
"sort": {
"enum": [
"-date",
"date"
],
"type": "string",
"description": "By last message time: -date newest first (default), date oldest first."
},
"users": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these assigned user ids."
},
"labels": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these label ids."
},
"status": {
"enum": [
"OPEN",
"ASSIGNED",
"CLOSED",
"INVALID"
],
"type": "string",
"description": "Only tickets in this status. INVALID = spam."
},
"channels": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these channel ids."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only tickets of this contact.",
"exclusiveMinimum": 0
},
"updated_at_gt": {
"type": "string",
"description": "Only tickets updated after this date-time."
},
"last_message_type": {
"enum": [
"INBOUND",
"OUTBOUND"
],
"type": "string",
"description": "Only tickets whose last message was INBOUND or OUTBOUND."
}
}
}