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

# Introduction

> ApifyCloud API reference and response format

## Base URL

All endpoints in this reference use the base URL: `https://api.apifycloud.io/api/v1`.

## Authentication

Most endpoints require a Bearer token:

```
Authorization: Bearer {access_token}
```

Get a token using the OAuth client credentials flow in `POST /oauth/token`.

## Response format

Successful responses follow this shape:

```json theme={null}
{
  "data": {},
  "meta": {
    "timestamp": "2024-01-01T00:00:00.000Z"
  },
  "pagination": {
    "limit": 25,
    "hasMore": false,
    "nextCursor": null
  }
}
```

`pagination` is only present on list endpoints that support cursor-based pagination.

Errors follow this shape:

```json theme={null}
{
  "error": {
    "type": "validation_error",
    "message": "Invalid request parameters",
    "timestamp": "2024-01-01T00:00:00.000Z",
    "details": [
      {
        "field": "limit",
        "message": "Expected number, received string",
        "code": "invalid_type"
      }
    ]
  }
}
```

## Rate limits

Every authenticated response includes informational headers describing the
rate-limit bucket the API decided to surface:

| Header                  | Description                                                          |
| ----------------------- | -------------------------------------------------------------------- |
| `X-RateLimit-Limit`     | Maximum requests allowed in the surfaced window.                     |
| `X-RateLimit-Remaining` | Requests remaining in the current window.                            |
| `X-RateLimit-Reset`     | Unix epoch seconds when the surfaced window will have free capacity. |
| `X-RateLimit-Window`    | Which window is being surfaced: `minute`, `hour`, or `day`.          |
| `Retry-After`           | On `429` only. Seconds until the next request is likely to succeed.  |

When a request exceeds a limit, the API responds with `429 Too Many Requests`
and `error.type: "rate_limit_exceeded"`. See the [Rate limits guide](/guides/rate-limits/overview)
for the bucket model, the algorithm used, and recommended client-side
backoff strategy.
