> Tychron Atlas API & Provisioning Reference — chapter 3 of 35 as Markdown. Web version: https://docs.tychron.com/api-reference/api/
> Source: https://docs.tychron.com/api-reference/ · Updated 2026-09-05 · Generated from the Atlas OpenAPI spec (https://api.atlas.tychron.online/api/v1/openapi is the live contract; this file is a dated snapshot of it).
> Source revision: atlas_api_reference_2026-08-12.md · sha256 482ebd3b014af053 · sanitize gate v1 clean · reconciled with OpenAPI 2026.8.25-p01 (spec sha256 cc049ef38c71cd6e) on 2026-09-05 · content last modified 2026-09-09 · newer definition under review since 2026-09-09 (not yet reconciled)
> Scope: the Atlas platform API only. The SMS, MMS, CNAM, LRN and MCL services are separate APIs with their own specifications: https://docs.tychron.com/openapi/
> Machine index: https://docs.tychron.com/llms.txt

# API

## Pagination Parameters

Pagination is based on a cursor, rather than a offset.

`after` and `before` are the cursor values, while `first` and `last` control how many records should be returned.

If the first 20 records are needed for example, only the `first` parameter needs to be provided.

| Name     | Type      | Description                                            |
| -------- | --------- | ------------------------------------------------------ |
| `first`  | `Integer` | How many records should be returned after the cursors  |
| `last`   | `Integer` | How many records should be returned before the cursors |
| `after`  | `String`  | The pagination cursor, taken from the page_info.last   |
| `before` | `String`  | The pagination cursor taken from the page_info.first   |
| `query`  | `String`  | A query string to filter the records by.               |

Note that routes that use pagination, will require at least `first` or `last` to be specified.

The cursor values can be obtained from the document returned by those APIs under its paginat

The pagination works in pairs:

* `first` and `after`
* `last` and `before`

Specifying both `first` and `last` at the same time will result in an error, or undesired behaviour.

`query` varies by resource, see their respective sections on the expected values.

## Common Parameters

All management APIs have a similar root structure, where the document contains a `data` field and `type` field on request.

Depending on the resource being handled the type and data changes accordingly.

__RequestDocument__

```json
{
  "data": {},
  "type": "document_type"
}
```

| Name     | Type           | Description                                                                      |
| -------- | -------------- | -------------------------------------------------------------------------------- |
| `data` * | `T`            | Depends on the resource, each resource section will specify their data structure |
| `type` * | `DocumentType` | Depends on the resource, each resource has its own type                          |

Request documents are used when performing a request to the API, these are normally associated with `POST`, `PATCH`, and `PUT` routes.

__ResponseDetailDocument__

```json
{
  "data": {},
  "type": "document_type"
}
```

| Name     | Type           | Description             |
| -------- | -------------- | ----------------------- |
| `data` * | `T`            | Depends on the resource |
| `type` * | `DocumentType` | Depends on the resource |

Resposne Detail documents are returned whenver a single resource is needed or modified.

__ResponseIndexDocument__

```json
{
  "results": [],
  "count": 0,
  "page_info": {
    "first": "",
    "last": "",
    "has_next_page": false,
    "has_previous_page": false
  }
}
```

| Name          | Type                               | Description                                |
| ------------- | ---------------------------------- | ------------------------------------------ |
| `results` *   | `Array<ResponseDetailDocument<T>>` | A list of detail documents with their type |
| `count` *     | `Integer`                          | How many records are in the results?       |
| `page_info` * | `PageInfo`                         | Contains pagination information            |

Response Index documents are returned from index routes (i.e. `GET /api/v1/:resource`)

__PageInfo__

```json
{
  "first": "",
  "last": "",
  "has_next_page": false,
  "has_previous_page": false
}
```

| Name                | Type      | Description                           |
| ------------------- | --------- | ------------------------------------- |
| `first`             | `String`  | Cursor of the first record on this page; pass it as `before` to fetch the previous page |
| `last`              | `String`  | Cursor of the last record on this page; pass it as `after` to fetch the next page |
| `has_next_page`     | `Boolean` | Is there another page after this one? |
| `has_previous_page` | `Boolean` | Is there a page before this one?      |

Page Info is an object that contains any additional pagination information from an index request.

`first` and `last` are the individual cursors and should not be confused with the `first` and `last` pagination values (i.e. page size).

`has_next_page` and `has_previous_page` are convenience fields that denote whether or not there are any more pages in either direction.

For example, fetching the first 20 DIDs, if the account has more dids, then `has_next_page` will be true and the `last` cursor will be populated.

To get to the next page, simple change the pagination parameters accordingly:

```javascript
if (page_info.has_next_page) {
  let after = page_info.last;

  fetch_more({
    after,
    first: 20,
  });
}
```

## Paths

The following are all the available paths, note that some may not be covered in this document.


* `GET|POST /api/v1/api_keys`

* `GET /api/v1/api_keys/{api_key_id}/switches`

* `DELETE|GET|PATCH|PUT /api/v1/api_keys/{id}`

* `GET|POST /api/v1/auto_responses`

* `DELETE|GET|PATCH|PUT /api/v1/auto_responses/{id}`

* `GET /api/v1/brands`

* `GET /api/v1/brands/{id}`

* `GET|POST /api/v1/bulk_dip_tasks`

* `GET /api/v1/bulk_dip_tasks/{id}`

* `GET|POST /api/v1/call_data_webhooks`

* `DELETE|GET|PATCH|PUT /api/v1/call_data_webhooks/{id}`

* `GET /api/v1/campaign_optout_items`

* `DELETE|GET /api/v1/campaign_optout_items/{id}`

* `GET /api/v1/campaigns`

* `POST /api/v1/campaigns/{campaign_id}/share_with/accounts/{account_id}`

* `POST /api/v1/campaigns/{campaign_id}/share_with/shared_resource_groups/{shared_resource_group_id}`

* `DELETE|GET /api/v1/campaigns/{campaign_id}/shared_resource_group`

* `GET /api/v1/campaigns/{id}`

* `GET|POST /api/v1/carts`

* `POST /api/v1/carts/{cart_id}/checkout`

* `GET|POST /api/v1/carts/{cart_id}/requests`

* `DELETE|GET|PATCH|PUT /api/v1/carts/{cart_id}/requests/{id}`

* `GET|POST /api/v1/carts/{cart_id}/requests/{request_id}/documents`

* `GET /api/v1/carts/{cart_id}/requests/{request_id}/documents/{document_id}/download`

* `DELETE|GET /api/v1/carts/{cart_id}/requests/{request_id}/documents/{id}`

* `DELETE|GET|PATCH|PUT /api/v1/carts/{id}`

* `GET|POST /api/v1/cdr_export_tasks`

* `DELETE|GET /api/v1/cdr_export_tasks/{id}`

* `GET /api/v1/cdrs`

* `GET /api/v1/cdrs/{cdr_id}/result`

* `GET /api/v1/cdrs/{id}`

* `GET /api/v1/cdrs_by_type/{type}`

* `GET /api/v1/csp/enum/alt_business_id_types`

* `GET /api/v1/csp/enum/brand_relationships`

* `GET /api/v1/csp/enum/campaign_statuses`

* `GET /api/v1/csp/enum/cnps`

* `GET /api/v1/csp/enum/dcas`

* `GET /api/v1/csp/enum/entity_types`

* `GET /api/v1/csp/enum/error_codes`

* `GET /api/v1/csp/enum/event_categories`

* `GET /api/v1/csp/enum/mno_operation_statuses`

* `GET /api/v1/csp/enum/mnos`

* `GET /api/v1/csp/enum/stock_exchanges`

* `GET /api/v1/csp/enum/sub_usecases`

* `GET /api/v1/csp/enum/usecases`

* `GET /api/v1/csp/enum/verticals`

* `GET /api/v1/csp/enum/vetting_classes`

* `GET /api/v1/csp/enum/vetting_feedback_codes`

* `GET /api/v1/csp/enum/vetting_providers`

* `GET|POST /api/v1/event_subscriptions`

* `DELETE|GET|PATCH|PUT /api/v1/event_subscriptions/{id}`

* `GET /api/v1/number_client_suspensions`

* `DELETE|GET|PATCH|PUT /api/v1/number_client_suspensions/{id}`

* `GET /api/v1/number_inventory/{type}/coverage`

* `GET /api/v1/number_inventory/{type}/numbers`

* `GET /api/v1/numbers`

* `GET|PATCH|PUT /api/v1/numbers/{id}`

* `GET /api/v1/numbers/{number_id}/api_keys`

* `DELETE|POST /api/v1/numbers/{number_id}/api_keys/{api_key_id}/bind`

* `POST /api/v1/numbers/{number_id}/api_keys/{api_key_id}/unbind`

* `GET /api/v1/numbers/{number_id}/api_keys/{id}`

* `DELETE|GET /api/v1/numbers/{number_id}/auto_response`

* `PUT /api/v1/numbers/{number_id}/auto_response/{id}`

* `GET /api/v1/numbers/{number_id}/campaign`

* `GET|POST /api/v1/numbers/{number_id}/client_suspensions`

* `GET|POST /api/v1/numbers/{number_id}/destinations`

* `DELETE|GET|PATCH|PUT /api/v1/numbers/{number_id}/destinations/{id}`

* `DELETE|GET /api/v1/numbers/{number_id}/messaging_switch`

* `PUT /api/v1/numbers/{number_id}/messaging_switch/{id}`

* `GET|POST /api/v1/numbers/{number_id}/optout_items`

* `DELETE|GET /api/v1/numbers/{number_id}/voice_switch`

* `PUT /api/v1/numbers/{number_id}/voice_switch/{id}`

* `GET /api/v1/optout_items`

* `DELETE|GET /api/v1/optout_items/{id}`

* `GET /api/v1/orders`

* `GET|PATCH|PUT /api/v1/orders/{id}`

* `GET /api/v1/orders/{order_id}/requests`

* `GET /api/v1/osr/overwrite_requests`

* `GET /api/v1/osr/overwrite_requests/{id}`

* `POST /api/v1/osr/overwrite_requests/{overwrite_request_id}/review`

* `GET /api/v1/provision_records`

* `GET /api/v1/provision_records/{id}`

* `GET /api/v1/requests`

* `GET|PATCH|PUT /api/v1/requests/{id}`

* `GET|POST /api/v1/requests/{request_id}/documents`

* `GET /api/v1/requests/{request_id}/documents/{document_id}/download`

* `DELETE|GET /api/v1/requests/{request_id}/documents/{id}`

* `GET /api/v1/requests/{request_id}/provision_records`

* `GET /api/v1/role_policies`

* `GET|POST /api/v1/roles`

* `DELETE|GET|PATCH|PUT /api/v1/roles/{id}`

* `GET|POST /api/v1/secret_keys`

* `DELETE|GET|PATCH|PUT /api/v1/secret_keys/{id}`

* `GET /api/v1/secret_keys/{secret_key_id}/mms_encrypted_switches`

* `GET /api/v1/secret_keys/{secret_key_id}/mms_signed_switches`

* `GET /api/v1/secret_keys/{secret_key_id}/sms_encrypted_switches`

* `GET /api/v1/secret_keys/{secret_key_id}/sms_signed_switches`

* `GET /api/v1/shared_resource_groups`

* `GET /api/v1/shared_resource_groups/{id}`

* `GET|POST /api/v1/switches`

* `DELETE|GET|PATCH|PUT /api/v1/switches/{id}`

* `DELETE|GET /api/v1/switches/{switch_id}/api_key`

* `PUT /api/v1/switches/{switch_id}/api_key/{id}`

* `DELETE|GET /api/v1/switches/{switch_id}/mms_encryption_key`

* `PUT /api/v1/switches/{switch_id}/mms_encryption_key/{id}`

* `DELETE|GET /api/v1/switches/{switch_id}/mms_signing_key`

* `PUT /api/v1/switches/{switch_id}/mms_signing_key/{id}`

* `DELETE|GET /api/v1/switches/{switch_id}/sms_encryption_key`

* `PUT /api/v1/switches/{switch_id}/sms_encryption_key/{id}`

* `DELETE|GET /api/v1/switches/{switch_id}/sms_signing_key`

* `PUT /api/v1/switches/{switch_id}/sms_signing_key/{id}`

* `GET|POST /api/v1/tts/message_sets`

* `DELETE|GET|PATCH|PUT /api/v1/tts/message_sets/{id}`

* `GET|POST /api/v1/tts/message_sets/{message_set_id}/messages`

* `DELETE|GET|PATCH|PUT /api/v1/tts/message_sets/{message_set_id}/messages/{id}`

* `GET /api/v1/tts/voices`

* `GET /api/v1/tts/voices/{id}`

* `GET|POST /api/v1/users`

* `DELETE|GET|PATCH|PUT /api/v1/users/{id}`

* `GET /api/v1/users/{user_id}/role`

* `GET|POST /api/v1/voip/allowed_client_ips`

* `DELETE|GET /api/v1/voip/allowed_client_ips/{allowed_client_ip_id}/api_key`

* `PUT /api/v1/voip/allowed_client_ips/{allowed_client_ip_id}/api_key/{id}`

* `DELETE|GET|PATCH|PUT /api/v1/voip/allowed_client_ips/{id}`

* `GET|POST /api/v1/voip/tts/message_sets`

* `DELETE|GET|PATCH|PUT /api/v1/voip/tts/message_sets/{id}`

* `GET|POST /api/v1/voip/tts/message_sets/{message_set_id}/messages`

* `DELETE|GET|PATCH|PUT /api/v1/voip/tts/message_sets/{message_set_id}/messages/{id}`

* `GET /api/v1/voip/tts/voices`

* `GET /api/v1/voip/tts/voices/{id}`

---

Previous chapter: https://docs.tychron.com/api-reference/your-resources.md  
Next chapter: https://docs.tychron.com/api-reference/number-inventory.md  
Complete reference in one file: https://docs.tychron.com/llms-full.txt
