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

# Rate Limits & Pagination

> Learn how to handle large data sets efficiently and stay within your API request limits.

# Overview

Learn how Dash Social handles API rate limits and paginated responses. This helps you avoid throttling and reliably fetch large sets of data across multiple requests.

# Rate Limits

To ensure consistent performance across all users, the Dash Social API enforces rate limits at two levels:

* **App-level limit**: Your application can make up to **1000 requests per minute total**.
* **Endpoint-level limits**: Some endpoints may have stricter rate limits depending on system load or data sensitivity.

Every API response includes headers that show your current usage:

```
x-ratelimit-limit: 1000        # total calls allowed per minute
x-ratelimit-remaining: 996     # how many calls you have left
x-ratelimit-reset: 1591064298  # time (in UNIX seconds) when your limit resets
```

<Tip>
  Use these headers to monitor and manage your request volume dynamically.
</Tip>

## Best Practices

* Monitor your headers: Track `x-ratelimit-remaining` to avoid hitting limits.
* Cache responses: Reduce repeated API calls when possible.
* Back off gracefully: If throttled, retry after the reset time.
* Batch your requests: Use pagination instead of pulling all data at once.

## When Limits Are Exceeded

If your app exceeds the rate limit, requests will return an error and be temporarily throttled.
Wait until the `x-ratelimit-reset` time before sending new requests.

***

# Pagination

When fetching large collections - such as media, boards, or scheduled posts - the Dash Social API returns results in **pages**.

Each "list" endpoint includes a standard `paging` object in the response:

```json theme={null}
{
  "paging": {
    "count": 1156,
    "previous": "https://library-backend.dashsocial.com/brands/{brand_id}/media/v2?limit=10&offset=0",
    "next": "https://library-backend.dashsocial.com/brands/{brand_id}/media/v2?limit=10&offset=10"
  },
  "data": [
    { ... }
  ]
}
```

## How it works

* The data array contains the current page of results.
* The next and previous fields provide full URLs for the next and previous pages.
* If next is null, you've reached the end of the results.

## Parameters

You can control how many results are returned per request using **`limit`** and **`offset`**.

| Parameter | Type    | Description                                                                                                                                  |
| --------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `limit`   | integer | The number of results to return per request (e.g., `limit=10`). The default and maximum values may vary by endpoint.                         |
| `offset`  | integer | The number of results to skip before starting to return data. Use this to move through pages (e.g., `offset=10` skips the first 10 results). |

## Example

Fetch the first 10 media items:

```
curl 'https://library-backend.dashsocial.com/brands/{brand_id}/media/v2?limit=10' \
  -H 'Authorization: Bearer {token}'
```

Then use the "next" URL from the response to get the next page:

```
curl 'https://library-backend.dashsocial.com/brands/{brand_id}/media/v2?limit=10&offset=10' \
  -H 'Authorization: Bearer {token}'
```
