sort field. A ticket is the case container: it always has one primary conversation with the requester, plus any side conversations. To export everything since a point in time, page this endpoint with an updatedAt[gte] filter, then fetch each changed ticket’s threads.
Authentication
Bearer token in theAuthorization header. See Authentication.
Query parameters
Pagination
integer
default:"20"
Number of tickets per page. Range
1–100.string
Opaque cursor from the previous response’s
nextCursor. See Pagination.Sorting
string
default:"-updatedAt"
Field and direction. Prefix with
- for descending. One of:createdAt-createdAtupdatedAt-updatedAt
Filters
string | string[]
Filter by ticket status. Repeat the parameter to match multiple values
(e.g.
?status=open&status=snoozed). Matching is exact — resolved does
not include assumed_resolved. One of:opensnoozedresolvedassumed_resolvedclosed
string
Only return tickets this contact is involved in: as the requester, or as a
participant in any of the ticket’s conversations. Compare
requester.id to
tell which. An unknown contact ID gives an empty list. Get the ID from
List contacts.Date range
Use eithercreatedAt or updatedAt ranges — not both. Mixing them returns 422 conflicting_date_range.
string (ISO 8601)
Only return tickets created on or after this timestamp.
string (ISO 8601)
Only return tickets created on or before this timestamp.
string (ISO 8601)
Only return tickets updated on or after this timestamp.
string (ISO 8601)
Only return tickets updated on or before this timestamp.
Response
Returns a list envelope containingTicket objects.
The Ticket object
string
Unique identifier prefixed with
ti_.string
Always
"ticket".string | null
Your own ID for the ticket, set when it was created through the API.
null for every other ticket.string
Ticket subject or summary.
string
Ticket lifecycle status. One of the values listed under the
status query parameter.string
Who has the customer’s thread:
ai (Replyful’s AI or your own chatbot) or human (your team).object
The contact the ticket is for.
array
Tags applied to the ticket.
array
Topics applied to the ticket.
integer | null
Replyful’s AI estimate of how satisfied the customer is, from
1 (poor) to
5 (great). The customer didn’t give this score; for their own answer, see
rating. null until the ticket has been analyzed — analysis runs after the
ticket is resolved.object | null
The customer’s own answer to the
customer satisfaction survey.
null when no survey was sent, or it was sent and the customer hasn’t
answered yet.object[]
The data fields saved for this case, like an order
number: the ticket’s own and the ones remembered on the requester. Empty when
none are saved. Values are erased with the ticket or the contact.
string | null
What kind of email the ticket is:
request, notification, marketing, cold_outreach, auto_reply or bounce. null for chat tickets and email from before categories existed. An agent replying makes it request, and so does the customer replying, unless it is cold_outreach or marketing. A category an agent picks by hand stays until they change it.string | null
Set when the customer wrote back more than 7 days after an earlier ticket was
resolved or closed: this ticket was opened as a follow-up, and the field holds
the earlier ticket’s ID.
null otherwise.string | null
The language the customer writes in on this ticket, as a short code such as
sv or de. null until Replyful has detected it.array
References to every conversation on the ticket, ordered by creation. Exactly
one has
role: "primary". Fetch a thread via
List messages — no ticket detail
call needed.string
ISO 8601 UTC timestamp of ticket creation.
string
ISO 8601 UTC timestamp of the most recent update.
Examples
List the most recently updated tickets
Response
Export everything updated since a timestamp
List a contact’s tickets
Usesort=createdAt when you need every ticket, for example to export everything about a person. With the default sort, a ticket that is updated while you page can be skipped. With sort=createdAt a ticket created during the walk shows up at the end, and nothing is skipped or repeated.
Walk every page
See the pagination guide for a copy-paste loop in Node and Python.Error responses
See Errors for the full error envelope reference.