REST API
API Hivesigner находится по адресу https://hivesigner.com/api/. Он возвращает аккаунт вошедшего человека, отправляет за него постинг-операции, обменивает коды на токены и перечисляет приложения, которые используют Hivesigner. На этой странице описан каждый адрес с его запросами, ответами и ошибками.
Запросы и аутентификация
- Базовый адрес:
https://hivesigner.com/api/. Каждый адрес ниже указан относительноhttps://hivesigner.com. - Токен: отправляйте его как есть в заголовке
Authorization:Authorization: ACCESS_TOKEN. Принимается и префиксBearer. Можно отправить его и какaccess_tokenв строке запроса или в теле, но заголовок удерживает его вне адресов и журналов. - Тела: JSON с
Content-Type: application/jsonили форма (application/x-www-form-urlencoded). - Ответы: JSON.
- Браузеры: API разрешает запросы с другого источника, поэтому веб-приложение может обращаться к нему напрямую.
Как получить токен, смотрите в Вход через OAuth2. Что содержит токен, смотрите в Токены.
Ошибки
Ответ с ошибкой имеет статус ошибки HTTP и такое тело:
{
"error": "invalid_scope",
"error_description": "The access_token scope does not allow the following operation(s): transfer"
}
| Статус | error |
Когда |
|---|---|---|
| 401 | invalid_grant |
Токена нет либо он недействителен, либо он не того вида для этого адреса («The token has invalid role»). На /api/oauth2/token также «The code or secret is not valid». |
| 401 | invalid_scope |
/api/broadcast: операция, которую токен не разрешает. В описании названы операции. |
| 401 | unauthorized_client |
/api/broadcast: операция, автором которой не является человек из токена, account_update2, затрагивающий ключи, отсутствующее разрешение на постинг-полномочия или аккаунт, который не удалось загрузить. В описании сказано, какой именно случай. |
| 500 | server_error |
/api/broadcast: сеть Hive отклонила транзакцию. error_description несёт её сообщение. |
| 503 | unavailable |
/api/apps: каталог ещё строится. |
GET /api/me
Возвращает аккаунт, которому принадлежит токен. Используйте это, чтобы узнать, кто вошёл, или чтобы проверить токен.
- Методы:
GETилиPOST. - Токен: токен доступа, в том числе токен
login, называющий приложение.
curl https://hivesigner.com/api/me -H 'Authorization: ACCESS_TOKEN'
Ответ, сокращённо:
{
"user": "alice",
"_id": "alice",
"name": "alice",
"account": { "id": 1370484, "name": "alice" },
"scope": [
"vote",
"comment",
"delete_comment",
"comment_options",
"custom_json",
"claim_reward_balance",
"account_update2"
],
"user_metadata": { "profile": { "name": "Alice", "version": 2 } }
}
| Поле | Значение |
|---|---|
user |
Имя пользователя Hive, которому принадлежит токен. _id и name повторяют его. |
account |
Аккаунт целиком, в том виде, в каком его возвращает condenser_api.get_accounts в Hive. |
scope |
Что разрешает токен: ["login"] для токена входа, иначе операции, которые принимает /api/broadcast. |
user_metadata |
Метаданные профиля аккаунта, прочитанные из JSON. |
/api/me не называет приложение, для которого создан токен. Чтобы это проверить, раскодируйте токен: смотрите Спросите API.
POST /api/broadcast
Подписывает постинг-операции человека из токена постинг-ключом @hivesigner и отправляет их в сеть Hive.
- Метод:
POST. - Токен: токен доступа
posting, из потока с токеном или из потока с кодом. - Чтобы это работало: человек дал постинг-полномочия аккаунту вашего приложения (это делает экран согласия), а аккаунт вашего приложения дал постинг-полномочия @hivesigner.
- Тело:
{ "operations": [...] }, где каждая операция — это[name, fields], как в блокчейне Hive. Все операции одного запроса попадают в одну транзакцию.
POST /api/broadcast HTTP/1.1
Host: hivesigner.com
Authorization: ACCESS_TOKEN
Content-Type: application/json
{
"operations": [
["vote", { "voter": "alice", "author": "bob", "permlink": "my-first-post", "weight": 10000 }]
]
}
Тот же запрос через curl:
curl -X POST https://hivesigner.com/api/broadcast \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operations":[["vote",{"voter":"alice","author":"bob","permlink":"my-first-post","weight":10000}]]}'
Подписка — это операция custom_json:
{
"operations": [
["custom_json", {
"required_auths": [],
"required_posting_auths": ["alice"],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"alice\",\"following\":\"bob\",\"what\":[\"blog\"]}]"
}]
]
}
API отвечает, как только узел Hive принял транзакцию. result.id — это идентификатор транзакции:
{
"result": { "id": "TRANSACTION_ID" }
}
Когда сеть отклоняет транзакцию, ответом будет 500 с server_error. Его error_description несёт сообщение сети, а response — необработанную ошибку.
Что принимает broadcast
Постинг-токен позволяет API отправлять эти операции и никакие другие. В каждой из них человек из токена должен быть аккаунтом в указанном поле:
| Операция | Человек из токена должен быть |
|---|---|
vote |
voter |
comment |
author |
delete_comment |
author |
comment_options |
author |
custom_json |
Первым аккаунтом в required_posting_auths |
claim_reward_balance |
account |
account_update2 |
account |
- Любая другая операция отклоняется с
invalid_scope. Токенloginне разрешает ни одной операции. - Операция за другой аккаунт отклоняется с
unauthorized_client. Токен отправляет операции только за своего человека. account_update2может менять лишь метаданные аккаунта. Операция с полемowner,activeилиpostingотклоняется сunauthorized_client.custom_json: оставляйтеrequired_authsпустым. API подписывает постинг-полномочиями, поэтому операция, которой нужны активные полномочия, не пройдёт в сети.
Переводам и другим кошельковым операциям нужен активный ключ человека. Отправляйте их как ссылки подписи.
POST /api/oauth2/token
Обменивает код на токены или токен обновления на новые токены. Вызывайте это только со своего сервера. Смотрите Поток с кодом.
- Метод:
POST, значения в теле. - Тело:
codeиclient_secretлибоrefresh_tokenиclient_secret. - Заголовки: не отправляйте заголовок
Authorization.
curl -X POST https://hivesigner.com/api/oauth2/token \
-H 'Content-Type: application/json' \
-d '{"code": "CODE", "client_secret": "CLIENT_SECRET"}'
{
"access_token": "ACCESS_TOKEN",
"refresh_token": "REFRESH_TOKEN",
"expires_in": 604800,
"username": "alice"
}
Каждый вызов возвращает новый токен доступа и новый токен обновления. Оба подписаны @hivesigner. expires_in — это срок жизни токена доступа в секундах (7 дней).
Ошибки: 401 invalid_grant. Описание будет «The token has invalid role», когда присланное значение не является действительным кодом или токеном обновления. Оно будет «The code or secret is not valid», когда код или секрет не совпадают.
POST /api/oauth2/token/revoke
Сообщает Hivesigner, что человек вышел из вашего приложения. Токен ваше приложение выбрасывает само.
- Метод:
POST. - Токен: токен доступа, в заголовке
Authorization.
curl -X POST https://hivesigner.com/api/oauth2/token/revoke -H 'Authorization: ACCESS_TOKEN'
{ "success": true }
Метод revokeToken() из SDK для JavaScript выполняет этот вызов, а затем забывает токен. Чтобы навсегда убрать доступ вашего приложения, человек убирает его на https://hivesigner.com/authorized-apps. Смотрите Выход и отзыв доступа.
GET /api/apps
Открытый каталог приложений: приложения, которые отправляют операции через Hivesigner, упорядоченные по числу пользователей. Токен не нужен. https://hivesigner.com/apps показывает тот же список.
curl https://hivesigner.com/api/apps
{
"updated_at": "2026-09-19T06:00:00.000Z",
"building": false,
"window_days": 7,
"featured": ["myapp"],
"apps": [
{
"username": "myapp",
"name": "My App",
"about": "A short description from the app's profile.",
"website": "https://myapp.example",
"site": "ok",
"users": 412,
"requests": 9310,
"first_seen": "2026-08-01",
"last_seen": "2026-09-19",
"new": false
}
]
}
| Поле | Значение |
|---|---|
updated_at |
Когда каталог строился в последний раз. |
building |
true, пока в первой сборке нет данных. apps тогда пуст. |
window_days |
Сколько дней охватывает рейтинг. |
featured |
Имена пользователей, показываемые первыми, в этом порядке. |
apps[].username |
Аккаунт приложения. |
apps[].name, about |
Из профиля аккаунта приложения или null. |
apps[].website |
Сайт из профиля, если он отвечает на собственном домене. Иначе null. |
apps[].site |
Результат проверки сайта: ok, no_website, invalid, redirected, blocked или unreachable. У записи redirected есть ещё redirects_to. |
apps[].users |
Разные пользователи за день, просуммированные за период. |
apps[].requests |
Успешные запросы к API, сделанные для приложения за период. |
apps[].first_seen, last_seen |
Первый день, когда Hivesigner записал приложение, и последний день его использования, или null. |
apps[].new |
true, когда приложение впервые появилось внутри периода. |
Ответ может храниться в кеше до 5 минут. Пока каталог не собран впервые, API отвечает 503 с unavailable. Попробуйте позже.
Названия и описания публикует каждый аккаунт приложения сам. Hivesigner ни одно из них не проверяет.