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

# Spot REST Introduction

> Overview of the Kraken Spot REST API organisation, requests, responses, and error handling

## OpenAPI spec

<CardGroup cols={2}>
  <Card title="Spot REST OpenAPI" icon="download" href="/openapi/spot-rest.yaml">
    Download the Spot REST OpenAPI spec (YAML)
  </Card>

  <Card title="Derivatives REST OpenAPI" icon="download" href="/openapi/futures-rest.yaml">
    Download the Derivatives REST OpenAPI spec (YAML)
  </Card>
</CardGroup>

## API Organisation

The Spot REST API is organised by function, covering a wide range of services:

* [Market Data](/api-reference/market-data/get-order-book)
* [Account Data](/api-reference/account-data/get-account-balance)
* [Trading](/api-reference/trading/add-order)
* [Funding](/api-reference/funding/get-deposit-addresses)
* [Subaccounts](/api-reference/subaccounts/create-subaccount)
* [Earn](/api-reference/earn/allocate-earn-funds)
* [WebSocket Authentication](/api-reference/trading/get-websockets-token)

## Requests, Responses and Errors

### Requests

Request payloads supports Json encoding (`Content-Type: application/json`) as well as  form-encoded (`Content-Type: application/x-www-form-urlencoded`).
We recommend clients to specify `User-Agent` in the headers of all their requests. This will help us optimize interactions and improve the overall efficiency and security of the API.

### Responses

Responses are JSON encoded and contain one or two top-level keys (`result` and `error` for successful requests or those with warnings, or only `error` for failed or rejected requests)

### Example

Request:

```text theme={null}
GET <https://api.kraken.com/0/public/SystemStatus>
```

Successful response:

```json theme={null}
{
    "error": [],
    "result": {
        "status": "online",
        "timestamp": "2021-03-22T17:18:03Z"
    }
}
```

Error response:

```json theme={null}
{
    "error": [
        "EGeneral:Invalid arguments:ordertype"
    ]
}
```

### Error Details

HTTP status codes are generally not used by our API to convey information about the state of requests and any errors or warnings are denoted in the `error` field of the response as described above. Status codes **other** than 200 indicate that there was an issue with the request reaching our servers.

Error messages follow the general format "\<severity>\<category>: \<description>"

* \<severity> : `E` for error, `W` for warning.
* \<category> : `General`, `Auth`, `API`, `Query`, `Order`, `Trade`, `Funding`, or `Service`.
* \<description> : a text string that describes the reason for the error.

```text theme={null}
i.e., "EGeneral: Invalid arguments:ordertype"
```

Additional information can be found on the [error reference](/exchange/guides/general/errors) guide or the [support center](https://support.kraken.com/hc/en-us/articles/360001491786-API-error-messages).

## Related guides

<CardGroup cols={3}>
  <Card title="Authentication" icon="lock" href="/exchange/guides/rest/authentication">
    HMAC-SHA512 signature, nonce management, and API-Key header
  </Card>

  <Card title="API key permissions" icon="key" href="/exchange/guides/rest/api-keys">
    Which permissions to enable for each use case
  </Card>

  <Card title="Error reference" icon="triangle-exclamation" href="/exchange/guides/general/errors">
    Full list of error codes and handling strategies
  </Card>

  <Card title="Rate limits" icon="gauge" href="/exchange/guides/rest/ratelimits">
    How the REST rate counter works
  </Card>

  <Card title="API comparison" icon="table" href="/exchange/guides/general/api-comparison">
    When to use REST vs WebSocket vs FIX
  </Card>
</CardGroup>
