openapi: 3.0.3 info: title: Tidio OpenAPI (REST) Contacts Tickets API description: 'REST API for managing contacts, conversations, tickets, operators, and Lyro AI data sources. Requires Plus or Premium plan for full access; Lyro AI plan grants access to Lyro-specific endpoints. Authentication uses paired X-Tidio-Openapi-Client-Id and X-Tidio-Openapi-Client-Secret headers. Rate limits range from 10 requests per minute (entry plans) to 120 requests per minute (Premium). ' version: '1' contact: name: Tidio Developer Support url: https://developers.tidio.com/support termsOfService: https://www.tidio.com/terms/ license: name: Proprietary url: https://www.tidio.com/terms/ servers: - url: https://api.tidio.co description: Tidio REST API security: - clientId: [] clientSecret: [] tags: - name: Tickets description: Manage email tickets and replies paths: /tickets: get: operationId: getTickets tags: - Tickets summary: Get tickets description: Returns a paginated list of tickets without messages. parameters: - name: cursor in: query required: false description: Value from the previous page. Use null to fetch the first page. schema: type: string nullable: true responses: '200': description: Paginated list of tickets content: application/json: schema: $ref: '#/components/schemas/TicketList' '400': description: Invalid cursor content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /tickets/as-contact: post: operationId: createTicketAsContact tags: - Tickets summary: Create ticket (as Contact) description: Creates a ticket on behalf of a contact. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TicketCreateAsContact' responses: '201': description: Ticket created content: application/json: schema: $ref: '#/components/schemas/UuidResponse' '422': description: Validation error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /tickets/{ticketId}: get: operationId: getTicket tags: - Tickets summary: Get ticket details description: Returns full details of a single ticket including all messages. parameters: - $ref: '#/components/parameters/ticketId' responses: '200': description: Ticket with messages content: application/json: schema: $ref: '#/components/schemas/TicketWithMessages' '400': description: Bad request '404': description: Ticket not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' patch: operationId: updateTicket tags: - Tickets summary: Update ticket description: Updates status, priority, or assignment of a ticket. parameters: - $ref: '#/components/parameters/ticketId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TicketUpdate' responses: '204': description: Ticket updated successfully '422': description: Validation error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' delete: operationId: deleteTicket tags: - Tickets summary: Delete ticket description: Permanently deletes a ticket. This action cannot be undone. parameters: - $ref: '#/components/parameters/ticketId' responses: '204': description: Ticket deleted '404': description: Ticket not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /tickets/{ticketId}/reply: post: operationId: replyToTicket tags: - Tickets summary: Reply to a ticket description: Adds a reply message to an existing ticket from an operator or contact. parameters: - $ref: '#/components/parameters/ticketId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TicketReply' responses: '201': description: Reply created content: application/json: schema: type: object properties: id: type: string description: ULID identifier of the created message example: 01HAVMVKF90KH3EC0HK2T6QYP6 '400': description: Bad request '404': description: Ticket not found '422': description: Validation error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: Ticket: type: object properties: id: type: integer link: type: string format: uri subject: type: string contact_id: type: string format: uuid contact_email: type: string nullable: true priority: type: string enum: - low - normal - urgent status: type: string enum: - open - pending - solved assigned_operator_id: type: string format: uuid nullable: true assigned_department_id: type: string format: uuid custom_channel_id: type: string nullable: true UuidResponse: type: object properties: id: type: string format: uuid TicketList: type: object properties: tickets: type: array items: $ref: '#/components/schemas/Ticket' meta: $ref: '#/components/schemas/PaginationMeta' ErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorItem' PaginationMeta: type: object properties: cursor: type: string nullable: true description: Token for the next page; null when on the last page. limit: type: integer TicketWithMessages: allOf: - $ref: '#/components/schemas/Ticket' - type: object properties: messages: type: array items: $ref: '#/components/schemas/TicketMessage' ErrorItem: type: object properties: code: type: string message: type: string TicketMessage: type: object properties: message_id: type: string description: ULID format identifier. created_at: type: string format: date-time author_type: type: string enum: - operator - contact author_id: type: string format: uuid message_type: type: string enum: - internal - public attachments: type: array items: type: string format: uri TicketUpdate: type: object properties: status: type: string enum: - open - pending - solved priority: type: string enum: - low - normal - urgent assigned: type: object nullable: true properties: type: type: string enum: - department - operator id: type: string format: uuid TicketCreateAsContact: type: object properties: subject: type: string contact_id: type: string format: uuid content: type: string TicketReply: type: object required: - author_type - content properties: author_type: type: string enum: - contact - operator content: type: string operator_id: type: string format: uuid description: Required when author_type is operator. message_type: type: string enum: - public - internal parameters: ticketId: name: ticketId in: path required: true description: Integer identifying the ticket. schema: type: integer example: 10000 securitySchemes: clientId: type: apiKey in: header name: X-Tidio-Openapi-Client-Id clientSecret: type: apiKey in: header name: X-Tidio-Openapi-Client-Secret