API REST
La API de Hivesigner está en https://hivesigner.com/api/. Devuelve la cuenta de la persona que inició sesión, transmite operaciones de publicación por ella, intercambia códigos por tokens y lista las aplicaciones que usan Hivesigner. Esta página describe cada punto final con sus peticiones, respuestas y errores.
Peticiones y autenticación
- URL base:
https://hivesigner.com/api/. Todos los puntos finales de abajo son relativos ahttps://hivesigner.com. - El token: envíalo como cabecera
Authorization, tal cual:Authorization: ACCESS_TOKEN. También se acepta un prefijoBearer. Puedes enviarlo además comoaccess_tokenen la cadena de consulta o en el cuerpo, pero la cabecera lo mantiene fuera de las URL y de los registros. - Cuerpos: JSON con
Content-Type: application/json, o un formulario (application/x-www-form-urlencoded). - Respuestas: JSON.
- Navegadores: la API permite peticiones de origen cruzado, así que una aplicación web puede llamarla directamente.
Para obtener un token, consulta Iniciar sesión con OAuth2. Para saber qué contiene un token, consulta Tokens.
Errores
Una respuesta de error tiene un estado HTTP de error y este cuerpo:
{
"error": "invalid_scope",
"error_description": "The access_token scope does not allow the following operation(s): transfer"
}
| Estado | error |
Cuándo |
|---|---|---|
| 401 | invalid_grant |
El token falta o no es válido, o es del tipo equivocado para este punto final ("The token has invalid role"). En /api/oauth2/token, también "The code or secret is not valid". |
| 401 | invalid_scope |
/api/broadcast: una operación que el token no permite. La descripción nombra las operaciones. |
| 401 | unauthorized_client |
/api/broadcast: una operación cuyo autor no es la persona del token, un account_update2 que toca claves, una concesión de autoridad de publicación que falta o una cuenta que no se pudo cargar. La descripción dice cuál. |
| 500 | server_error |
/api/broadcast: la red Hive rechazó la transacción. error_description lleva su mensaje. |
| 503 | unavailable |
/api/apps: el directorio todavía se está construyendo. |
GET /api/me
Devuelve la cuenta a la que corresponde el token. Úsalo para saber quién inició sesión, o para comprobar un token.
- Métodos:
GEToPOST. - Token: un token de acceso, incluido un token
loginque nombre una aplicación.
curl https://hivesigner.com/api/me -H 'Authorization: ACCESS_TOKEN'
La respuesta, abreviada:
{
"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 } }
}
| Campo | Significado |
|---|---|
user |
El nombre de usuario de Hive al que corresponde el token. _id y name lo repiten. |
account |
La cuenta entera, tal como la devuelve condenser_api.get_accounts de Hive. |
scope |
Lo que permite el token: ["login"] para un token de inicio de sesión, y si no las operaciones que /api/broadcast acepta. |
user_metadata |
Los metadatos de perfil de la cuenta, analizados desde JSON. |
/api/me no nombra la aplicación para la que se creó el token. Para comprobar eso, decodifica el token: consulta Pregunta a la API.
POST /api/broadcast
Firma operaciones de publicación en nombre de la persona del token con la clave de publicación de @hivesigner y las transmite a Hive.
- Método:
POST. - Token: un token de acceso
posting, del flujo de token o del flujo de código. - Antes de que funcione: la persona ha concedido autoridad de publicación a la cuenta de tu aplicación (la pantalla de consentimiento lo hace) y la cuenta de tu aplicación ha concedido autoridad de publicación a @hivesigner.
- Cuerpo:
{ "operations": [...] }, donde cada operación es[name, fields]como en la cadena de bloques de Hive. Todas las operaciones de una petición van en una sola transacción.
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 }]
]
}
La misma petición con 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}]]}'
Un seguimiento es una operación custom_json:
{
"operations": [
["custom_json", {
"required_auths": [],
"required_posting_auths": ["alice"],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"alice\",\"following\":\"bob\",\"what\":[\"blog\"]}]"
}]
]
}
La API responde una vez que un nodo de Hive ha aceptado la transacción. result.id es el identificador de la transacción:
{
"result": { "id": "TRANSACTION_ID" }
}
Cuando la red rechaza la transacción, la respuesta es 500 con server_error. Su error_description lleva el mensaje de la red y response lleva el error en bruto.
Qué acepta broadcast
Un token de publicación permite a la API transmitir estas operaciones y ninguna otra. En cada una, la persona del token debe ser la cuenta del campo indicado:
| Operación | La persona del token debe ser |
|---|---|
vote |
voter |
comment |
author |
delete_comment |
author |
comment_options |
author |
custom_json |
La primera cuenta de required_posting_auths |
claim_reward_balance |
account |
account_update2 |
account |
- Cualquier otra operación se rechaza con
invalid_scope. Un tokenloginno permite ninguna operación. - Una operación para otra cuenta se rechaza con
unauthorized_client. Un token solo transmite por su propia persona. account_update2solo puede cambiar los metadatos de la cuenta. Una operación con un campoowner,activeopostingse rechaza conunauthorized_client.custom_json: dejarequired_authsvacío. La API firma con autoridad de publicación, así que una operación que necesite autoridad activa falla en la red.
Las transferencias y otras operaciones de monedero necesitan la clave activa de la persona. Envíalas como enlaces de firma en su lugar.
POST /api/oauth2/token
Intercambia un código por tokens, o un token de actualización por tokens nuevos. Llámalo solo desde tu servidor. Consulta El flujo de código.
- Método:
POST, con los valores en el cuerpo. - Cuerpo:
codeyclient_secret, orefresh_tokenyclient_secret. - Cabeceras: no envíes ninguna cabecera
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"
}
Cada llamada devuelve un token de acceso nuevo y un token de actualización nuevo. Ambos los firma @hivesigner. expires_in es la vida del token de acceso en segundos (7 días).
Errores: 401 invalid_grant. La descripción es "The token has invalid role" cuando el valor enviado no es un código ni un token de actualización válido. Es "The code or secret is not valid" cuando el código o el secreto no coinciden.
POST /api/oauth2/token/revoke
Le dice a Hivesigner que la persona cerró sesión en tu aplicación. Tu aplicación descarta el token por su cuenta.
- Método:
POST. - Token: el token de acceso, en la cabecera
Authorization.
curl -X POST https://hivesigner.com/api/oauth2/token/revoke -H 'Authorization: ACCESS_TOKEN'
{ "success": true }
El revokeToken() del SDK de JavaScript hace esta llamada y después olvida el token. Para retirar el acceso de tu aplicación para siempre, la persona lo retira en https://hivesigner.com/authorized-apps. Consulta Cerrar sesión y retirar el acceso.
GET /api/apps
El directorio público de aplicaciones: aplicaciones que transmiten a través de Hivesigner, ordenadas por cuánta gente las usa. No necesita ningún token. https://hivesigner.com/apps muestra la misma lista.
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
}
]
}
| Campo | Significado |
|---|---|
updated_at |
Cuándo se construyó el directorio por última vez. |
building |
true hasta que la primera construcción tiene datos. apps está entonces vacío. |
window_days |
El número de días que cubre la clasificación. |
featured |
Los nombres de usuario que se muestran primero, en orden. |
apps[].username |
La cuenta de la aplicación. |
apps[].name, about |
Del perfil de la cuenta de la aplicación, o null. |
apps[].website |
El sitio web del perfil, cuando responde en su propio dominio. Si no, null. |
apps[].site |
El resultado de la comprobación del sitio web: ok, no_website, invalid, redirected, blocked o unreachable. Una entrada redirected tiene además redirects_to. |
apps[].users |
Personas distintas por día, sumadas sobre la ventana. |
apps[].requests |
Peticiones a la API correctas hechas para la aplicación durante la ventana. |
apps[].first_seen, last_seen |
El primer día en que Hivesigner registró la aplicación y el último día en que se usó, o null. |
apps[].new |
true cuando la aplicación apareció por primera vez dentro de la ventana. |
La respuesta puede quedar en caché hasta 5 minutos. Antes de que el directorio se construya por primera vez, la API responde 503 con unavailable. Reinténtalo más tarde.
Los nombres y las descripciones los publica cada cuenta de aplicación por su cuenta. Hivesigner no verifica ninguno.