For the complete documentation index, see llms.txt. This page is also available as Markdown.

HMAC-подпись запросов

HMAC нужна, чтобы API мог проверить, что запрос действительно отправил владелец ключа и что body/query не изменились по дороге.

Когда нужна HMAC

HMAC может быть обязательной:

  • для всех приватных запросов;

  • только для write-запросов: POST, PUT, PATCH, DELETE;

  • для конкретного API-ключа.

Если HMAC нужна, но headers не переданы, API вернет signature_required.

Headers HMAC-подписи

X-Api-Timestamp: 1782190000
X-Api-Nonce: req-20260623-001
X-Api-Signature: sha256=...
Header
Что передавать

X-Api-Timestamp

Unix timestamp или ISO-8601 время.

X-Api-Nonce

Уникальная строка для одного запроса.

X-Api-Signature

HMAC-SHA256 подпись.

X-Api-File-Sha256

SHA-256 файла для multipart upload.

Строка для подписи

Подписывается такая строка:

Пример для GET:

Пример для JSON POST:

Пустой query остается пустой строкой.

PHP пример

В репозитории есть helper sdk/php/PublicApiSigner.php.

Важно: отправляйте ровно тот $body, который подписали.

Multipart upload

Для upload файла не подписывайте весь multipart body. Подписывайте SHA-256 самого файла:

Передайте:

Частые причины invalid_signature

  • В подписи забыли /api/v3.

  • Подписали один JSON, а отправили другой.

  • Query parameters отсортированы не так.

  • Время сервера сильно отличается.

  • Nonce уже использовался.

  • Перепутали API HMAC secret и webhook secret.

Последнее обновление

Это было полезно?