> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fusiondesk.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# FusionDesk REST API — Developer Reference Overview

> The FusionDesk REST API lets you create tickets, manage projects, sync users, and automate workflows programmatically over HTTPS with JSON payloads.

The FusionDesk REST API gives you programmatic access to every core capability of the platform. You can create and update tickets, manage projects, sync user accounts, trigger workflow automations, and query reporting data — all from your own applications, scripts, or integrations. Every interaction happens over HTTPS and exchanges data as JSON, making the API straightforward to use from any language or toolchain.

## Base URL and versioning

All API requests target the following base URL:

```text theme={null}
https://api.fusiondesk.in/v1
```

The `/v1` path segment identifies the current stable API version. FusionDesk introduces breaking changes only in new major versions (e.g. `/v2`). When a new version is released, `/v1` remains fully supported for a deprecation period announced in advance via email and in the changelog. To upgrade, update the base URL in your client and review the migration guide for the new version — no other structural changes are required.

## Request format

Every request must meet the following requirements:

* **Transport** — All requests must use HTTPS. Plain HTTP connections are rejected.
* **Content-Type** — Set the `Content-Type` header to `application/json` for all requests that include a body (POST, PUT, PATCH).
* **Body encoding** — Serialize request bodies as valid JSON. Do not send form-encoded or multipart payloads unless the endpoint explicitly documents support for them.

## Response format

Every response from the API is a JSON object. Successful responses and error responses share the same top-level structure, making it easy to write consistent parsing logic.

| Field   | Type            | Description                                                                                                                       |
| ------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `data`  | object \| array | Present on successful responses. Contains the resource or list of resources returned by the request.                              |
| `error` | object          | Present on failed responses. Contains the machine-readable error code, a human-readable message, and optional structured details. |
| `meta`  | object          | Always present. Contains metadata about the request, including `request_id` for tracing.                                          |

**Successful response example**

```json theme={null}
{
  "data": { "id": "tkt_xyz789", "subject": "Login issue" },
  "meta": { "request_id": "req_abc123" }
}
```

**Error response example**

```json theme={null}
{
  "error": {
    "code": "not_found",
    "message": "Ticket not found",
    "details": null
  },
  "meta": { "request_id": "req_abc123" }
}
```

## Rate limits

The API enforces a limit of **1,000 requests per minute** per API key. If your integration exceeds this limit, the API responds with HTTP `429 Too Many Requests`. The response includes a `Retry-After` header indicating the number of seconds you should wait before sending the next request.

```http theme={null}
HTTP/1.1 429 Too Many Requests
Retry-After: 12
```

Design your integration to read the `Retry-After` value and pause accordingly. For high-throughput use cases, consider batching requests or caching frequently read resources to stay within the limit. Contact FusionDesk support if you require a higher rate limit for your plan.

## Pagination

Endpoints that return lists use **cursor-based pagination**. Each response includes a `meta.next_cursor` field. When this field is present, more records are available. Pass the cursor value as the `cursor` query parameter in your next request to retrieve the following page. When `meta.next_cursor` is `null`, you have reached the last page.

```http theme={null}
GET https://api.fusiondesk.in/v1/tickets?cursor=cur_9f2e1a
```

```json theme={null}
{
  "data": [ ... ],
  "meta": {
    "request_id": "req_abc123",
    "next_cursor": "cur_9f2e1a"
  }
}
```

Cursor values are opaque strings — do not parse or construct them manually. Always use the value returned verbatim by the previous response.

***

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/api/authentication">
    Learn how to generate an API key and authenticate every request with a Bearer token.
  </Card>

  <Card title="Errors" icon="triangle-exclamation" href="/api/errors">
    Understand HTTP status codes, error response structure, and how to handle failures gracefully.
  </Card>
</CardGroup>
