> For the complete documentation index, see [llms.txt](https://docs.kick.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kick.co/api/readme.md).

# Getting Started

The Kick Platform API is a REST API for partners who keep books in Kick on behalf of their clients. A single organization access token reaches every workspace in that organization's book of business, so one integration can create workspaces and entities, read a chart of accounts, and pull transactions across an entire client base.

{% hint style="info" %}
The Platform API is not yet publicly available. Access is enabled per organization by the Kick team. If you are interested in building on it, email <platform@kick.co> and tell us what you want to build.
{% endhint %}

### What the API covers

| Resource                                                     | Operations                                                               |
| ------------------------------------------------------------ | ------------------------------------------------------------------------ |
| [Workspaces](/api/api-reference/workspaces.md)               | List, create, retrieve                                                   |
| [Entities](/api/api-reference/entities.md)                   | List, create, retrieve                                                   |
| [Chart of Accounts](/api/api-reference/chart-of-accounts.md) | List, create, create in bulk, retrieve, update, archive, restore, delete |
| [Plaid Connections](/api/api-reference/plaid-connections.md) | List, create, delete                                                     |
| [Transactions](/api/api-reference/transactions.md)           | List, retrieve, update                                                   |
| [Transaction Rules](/api/api-reference/transaction-rules.md) | List, create, retrieve, update, delete                                   |
| [Classes](/api/api-reference/classes.md)                     | List, create, retrieve, update, delete                                   |
| [Ledgers](/api/api-reference/ledgers.md)                     | Open                                                                     |
| [Journal Entries](/api/api-reference/journal-entries.md)     | List, create, retrieve, update, delete                                   |
| [Reports](/api/api-reference/reports.md)                     | Profit and loss, balance sheet, cash flow, trial balance, general ledger |

***

### Demo app

A demo app using this API can be found [here](https://github.com/KickApp/kick-platform-demo). It's written in React/Node.js.

### Base URL

Every endpoint lives under one production host:

```
https://use.kick.co/api
```

Paths in the reference are relative to it, so `GET /platform/v1/workspaces` is `https://use.kick.co/api/platform/v1/workspaces`.

### Authentication

Send your organization access token as a bearer token on every request:

```bash
curl https://use.kick.co/api/platform/v1/workspaces \
  -H "Authorization: Bearer kick_org_..."
```

The token identifies the organization, so no organization id ever appears in a path.

Once your organization has access, an organization admin creates the token in Kick:

1. In your organization, click **API** in the left navigation.
2. Under **Platform token**, click **Create token**.
3. Copy the token before dismissing the dialog. Kick stores only its prefix and cannot show the full value again.

**Rotate token** replaces it. The previous token stops working immediately, so every integration using it has to be updated with the new one.

{% hint style="warning" %}
An organization holds one platform token at a time, and it reaches every workspace in the book of business. Store it like any other production credential.
{% endhint %}

### Paging

List endpoints page with `limit` and `offset`. `limit` defaults to 100, which is also the maximum, so walk longer collections by advancing `offset`:

```bash
curl "https://use.kick.co/api/platform/v1/workspaces?limit=50&offset=50" \
  -H "Authorization: Bearer kick_org_..."
```

### Rate limits

Requests are rate limited per token. Over the limit the API answers `429` with a `Retry-After` header giving the number of seconds to wait before retrying.

Default rate limit is 300 requests/minute. Reach out to us with your use-case if you need higher limit.

### Errors

| Status | Meaning                                                                                                                     |
| ------ | --------------------------------------------------------------------------------------------------------------------------- |
| `400`  | The path, query, or body failed validation                                                                                  |
| `401`  | The token is missing, malformed, revoked, or its organization does not have access                                          |
| `404`  | The resource does not exist, or it sits outside your book of business                                                       |
| `409`  | The request conflicts with the current state of the books, such as deleting an account that already carries journal entries |
| `429`  | Rate limited, retry after the number of seconds in `Retry-After`                                                            |

#### Trace ids

Every response carries an `X-Trace-Id` header holding the id Kick assigned to that one request:

```bash
curl -i https://use.kick.co/api/platform/v1/workspaces \
  -H "Authorization: Bearer kick_org_..."
```

```
HTTP/1.1 200 OK
X-Trace-Id: 6a59086000000000169b1fa77832f239
```

Errors carry the header as well, and repeat the value in the body as `traceId` next to `message`:

```json
{
  "message": "Workspace not found",
  "traceId": "6a59086000000000169b1fa77832f239"
}
```

When reporting errors experienced during API usage make sure to include trace id from errored requests in bug report.

***

### Next steps

→ [Workspaces](/api/api-reference/workspaces.md)

→ [Webhooks](/api/webhooks.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kick.co/api/readme.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
