---
title: "Получить токен доступа OAuth2"
description: "Обменяйте данные доступа CloudPrint API на короткоживущий Bearer-токен OAuth2 по схеме Client Credentials."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/docs/">Документация CloudPrint</a><span aria-hidden="true">/</span><span>Справочник API</span></nav>

# Получить токен доступа OAuth2

<p class="docs-lead">Обменяйте данные доступа CloudPrint API на короткоживущий Bearer-токен OAuth2 по схеме Client Credentials.</p>

<div class="api-endpoint-summary"><span class="api-method api-method-post">POST</span><code>/oauth/token</code><span><strong>Версия API:</strong> v1</span><span><strong>operationId:</strong> <code>issueOAuthToken</code></span><a href="/docs/api/v1/authentication/token/index.md">Открыть в Markdown</a></div>

## Назначение метода

Обменяйте данные доступа CloudPrint API на короткоживущий Bearer-токен OAuth2 по схеме Client Credentials.

## Авторизация

Для этого метода Bearer-токен не нужен.

## Запрос

**Основной адрес API:** `https://public-api.cloudprint.me/oauth/token`

### Параметры

У метода нет параметров пути, строки запроса или дополнительных заголовков.

### Тело запроса

**Тип содержимого:** `application/x-www-form-urlencoded`

| Имя | Тип | Обязательно | Описание | Ограничения |
| --- | --- | --- | --- | --- |
| `grant_type` | `string` | да | Схема OAuth2, используемая для получения токена. | enum: `client_credentials`; example: `"client_credentials"` |
| `client_id` | `string` | да | Публичный идентификатор из пары API Credentials аккаунта. | — |
| `client_secret` | `string` | да | Секрет из данных доступа API; храните его только в защищённом хранилище серверной части. | — |
| `scope` | `string` | нет | Запрашиваемые разрешения для токена доступа, разделённые пробелами. | example: `"agents:read printers:read documents:write print_jobs:write print_jobs:read"` |

### Примеры запросов

#### cURL

```bash
curl -sS https://public-api.cloudprint.me/oauth/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'client_id=33333333-3333-4333-8333-333333333333' \
  --data-urlencode 'client_secret=cpsec_...' \
  --data-urlencode 'scope=agents:read printers:read documents:write print_jobs:write print_jobs:read'
```

#### PHP

```php
<?php

$response = file_get_contents('https://public-api.cloudprint.me/oauth/token', false, stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
        'content' => http_build_query([
            'grant_type' => 'client_credentials',
            'client_id' => getenv('CLOUDPRINT_CLIENT_ID'),
            'client_secret' => getenv('CLOUDPRINT_CLIENT_SECRET'),
            'scope' => 'agents:read printers:read documents:write print_jobs:write print_jobs:read',
        ]),
    ],
]));

$token = json_decode((string) $response, true, flags: JSON_THROW_ON_ERROR)['access_token'];
```

## Ответ

**HTTP-статус:** `200` — Запрос выполнен.

### Поля ответа

| Имя | Тип | Обязательно | Описание | Ограничения |
| --- | --- | --- | --- | --- |
| `token_type` | `string` | да | Тип OAuth2-токена; Public API использует `Bearer`. | example: `"Bearer"` |
| `expires_in` | `integer` | да | Срок действия токена доступа в секундах с момента выдачи. | example: `900` |
| `access_token` | `string` | да | Короткоживущий OAuth2 Bearer-токен для запросов к Public API. | example: `"eyJ..."` |
| `scope` | `string` | да | Запрашиваемые разрешения для токена доступа, разделённые пробелами. | example: `"printers:read print_jobs:write"` |

### Пример ответа

```json
{
  "token_type": "Bearer",
  "expires_in": 900,
  "access_token": "eyJ...",
  "scope": "printers:read print_jobs:write"
}
```

## Ошибки

| HTTP-статус | Описание |
| --- | --- |
| `400` | Проверьте формат и параметры запроса. |
| `401` | Авторизация отсутствует или недействительна. |
| `429` | Превышен лимит запросов; учитывайте Retry-After. |
| `500` | Внутренняя ошибка CloudPrint. |

## Рекомендации по интеграции

- Храните `client_secret` только в защищённом хранилище серверной части; не передавайте его в браузер или распространяемое настольное приложение.
- Кешируйте токен почти до окончания `expires_in`, а не запрашивайте новый для каждого задания.
- Запрашивайте только те разрешения, которые нужны текущей интеграции.

## Связанная документация

<div class="docs-card-grid"><a class="docs-card" href="/docs/api/v1/authentication/client-context/"><strong>Получить контекст API-клиента</strong><span>Проверьте, к какому аккаунту и API-приложению относится текущий токен и какие разрешения ему выданы.</span></a>
<a class="docs-card" href="/docs/api/authentication/"><strong>Авторизация OAuth2 Client Credentials</strong><span>Создайте API-приложение CloudPrint, получите короткоживущий токен и безопасно храните учётные данные с минимально необходимыми разрешениями.</span></a>
<a class="docs-card" href="/docs/api/v1/errors/"><strong>Ошибки и повторы CloudPrint API</strong><span>Обрабатывайте HTTP-статусы, машиночитаемые ошибки, ограничения частоты запросов, трассировку и безопасные повторы.</span></a></div>

<nav class="docs-resource-links" aria-label="Следующие шаги"><a href="/docs/api/v1/explorer/">OpenAPI</a><a href="https://my.cloudprint.by">Открыть кабинет</a><a href="/docs/legal/privacy/">Политика конфиденциальности</a><a href="/docs/legal/terms/">Условия использования</a><a href="/docs/legal/payments-and-refunds/">Оплата и возврат</a><a href="/docs/legal/data-processing/">DPA</a></nav>