openapi: 3.0.3 info: title: Revert Unified Chat Ticketing API description: 'Revert is an open-source unified API for building product integrations. A single set of REST endpoints normalizes third-party CRMs, chat/messaging, ticketing, accounting, and ATS providers into unified data models, while Revert manages OAuth connections, token refresh, retries, and a passthrough proxy for provider-native calls. Authentication uses an `x-revert-api-token` header (your Revert API key) plus an `x-revert-t-id` tenant header identifying the linked customer connection, and an optional `x-api-version` header. STATUS - The hosted Revert Cloud service (https://api.revert.dev) has been retired; Revert has joined Ampersand and revert.dev no longer resolves as of 2026-07-12. This specification is preserved from the open-source, self-hostable backend (github.com/revertinc/revert). Paths, methods, headers, and unified fields were read from the repository''s Fern API definition (fern/definition/) and Express route registration; response payload schemas are modeled from the unified type definitions and are simplified where noted.' version: '1.0' contact: name: Revert url: https://github.com/revertinc/revert license: name: AGPL-3.0 url: https://github.com/revertinc/revert/blob/main/LICENSE servers: - url: https://api.revert.dev description: Revert Cloud (hosted) - RETIRED, DNS no longer resolves as of 2026-07-12. - url: http://localhost:4001 description: Self-hosted (default SERVER_PORT=4001). security: - revertApiToken: [] revertTenantId: [] tags: - name: Ticketing description: Unified ticketing models - tasks, users, comments, collections. paths: /ticket/tasks: get: operationId: getTicketTasks tags: - Ticketing summary: List ticket tasks responses: '200': $ref: '#/components/responses/EntityList' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createTicketTask tags: - Ticketing summary: Create a ticket task responses: '200': $ref: '#/components/responses/CreateOrUpdate' '401': $ref: '#/components/responses/Unauthorized' /ticket/tasks/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getTicketTask tags: - Ticketing summary: Get a ticket task responses: '200': $ref: '#/components/responses/EntitySingle' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateTicketTask tags: - Ticketing summary: Update a ticket task responses: '200': $ref: '#/components/responses/CreateOrUpdate' '401': $ref: '#/components/responses/Unauthorized' /ticket/users: get: operationId: getTicketUsers tags: - Ticketing summary: List ticket users responses: '200': $ref: '#/components/responses/EntityList' '401': $ref: '#/components/responses/Unauthorized' /ticket/users/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getTicketUser tags: - Ticketing summary: Get a ticket user responses: '200': $ref: '#/components/responses/EntitySingle' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /ticket/comments: get: operationId: getTicketComments tags: - Ticketing summary: List ticket comments responses: '200': $ref: '#/components/responses/EntityList' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createTicketComment tags: - Ticketing summary: Create a ticket comment responses: '200': $ref: '#/components/responses/CreateOrUpdate' '401': $ref: '#/components/responses/Unauthorized' /ticket/comments/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getTicketComment tags: - Ticketing summary: Get a ticket comment responses: '200': $ref: '#/components/responses/EntitySingle' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateTicketComment tags: - Ticketing summary: Update a ticket comment responses: '200': $ref: '#/components/responses/CreateOrUpdate' '401': $ref: '#/components/responses/Unauthorized' /ticket/collections: get: operationId: getTicketCollections tags: - Ticketing summary: List ticket collections description: Collections (projects/boards) available in the linked ticketing provider. responses: '200': $ref: '#/components/responses/EntityList' '401': $ref: '#/components/responses/Unauthorized' components: parameters: Id: name: id in: path required: true description: The unified Revert id (or downstream remote id) of the object. schema: type: string schemas: Error: type: object properties: status: type: string error: type: string errorMessage: {} responses: CreateOrUpdate: description: Create/update result. content: application/json: schema: type: object properties: status: type: string message: type: string result: {} Unauthorized: description: Missing or invalid x-revert-api-token / x-revert-t-id. content: application/json: schema: $ref: '#/components/schemas/Error' EntitySingle: description: A single unified object. content: application/json: schema: type: object properties: status: type: string result: type: object additionalProperties: true EntityList: description: A list of unified objects. content: application/json: schema: type: object properties: status: type: string next: type: string nullable: true previous: type: string nullable: true results: type: array items: type: object additionalProperties: true NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: revertApiToken: type: apiKey in: header name: x-revert-api-token description: Your Revert API key (private token) for the environment. revertTenantId: type: apiKey in: header name: x-revert-t-id description: The tenant / customer id of the linked connection.