# Panorays Public API

Welcome to the **Panorays Public API** documentation.

Use the base URL below to interact with our API:


```http
https://api.panoraysapp.com
```

For support, contact [Support](mailto:support@panorays.com).

# Overview

The following document will introduce and document the API endpoints exposed to external clients.
**All endpoints will work using REST API and JSON format.**
The documentation will include 2 types of requests and available endpoints:

- Demand-based API
- Event hooks


# API Access

Panorays API endpoint is under the domain of `https://api.panoraysapp.com`.
All requests should be sent there with the appropriate route and parameters.

The API rate limit is **150 requests per minute**.
Exceeding this limit will result in a **429 HTTP error** and a **1-hour block**.

*Please note that there is also a daily usage limit; for details on your daily quota, contact our support team.*

### Requirements

All requests to the different endpoints must include an Authorization Token.

- The Authorization Token is generated through API tokens page in Panorays platform.
- It should be kept a secret and not shared.
- Send the token using the `Authorization` header in the format:
`Bearer <token>`
# Routes Pagination


Panorays API paginated routes use **cursor pagination**, meaning the response contains a token to retrieve the next page.

You can use this token to request the next page like so:


```js
let res = await axios.get('https://api.panoraysapp.com/v2/suppliers?limit=100');
// Process first page data
// If there is a next page, you will get has_next = true and next = <next_token>
while (res.has_next) {
  res = await axios.get(`https://api.panoraysapp.com/v2/suppliers?limit=100&next_token=${res.next}`);
  // Process next page data
}
```

> **Note:** Offset pagination is **not supported** in Panorays API.
Sending a `skip` parameter will not work.


### Recommendation

We encourage you to use a small `limit` value (like `limit=100`) to reduce the chances of errors.