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=...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.
Последнее обновление
Это было полезно?