API REST
L’API di Hivesigner si trova su https://hivesigner.com/api/. Restituisce l’account della persona che ha effettuato l’accesso, trasmette per lei le operazioni di pubblicazione, scambia codici con token ed elenca le app che usano Hivesigner. Questa pagina descrive ogni endpoint con le sue richieste, risposte ed errori.
Richieste e autenticazione
- URL di base:
https://hivesigner.com/api/. Ogni endpoint qui sotto è relativo ahttps://hivesigner.com. - Il token: mandalo così com’è nell’intestazione
Authorization:Authorization: ACCESS_TOKEN. È accettato anche un prefissoBearer. Puoi mandarlo anche comeaccess_tokennella stringa di query o nel corpo, ma l’intestazione lo tiene fuori dagli URL e dai registri. - Corpi: JSON con
Content-Type: application/json, o un modulo (application/x-www-form-urlencoded). - Risposte: JSON.
- Browser: l’API permette le richieste cross-origin, quindi un’app web può chiamarla direttamente.
Per ottenere un token vedi Accedere con OAuth2. Per ciò che un token contiene vedi Token.
Errori
Una risposta di errore ha uno stato HTTP di errore e questo corpo:
{
"error": "invalid_scope",
"error_description": "The access_token scope does not allow the following operation(s): transfer"
}
| Stato | error |
Quando |
|---|---|---|
| 401 | invalid_grant |
Il token manca o non è valido, oppure è del tipo sbagliato per questo endpoint («The token has invalid role»). Su /api/oauth2/token, anche «The code or secret is not valid». |
| 401 | invalid_scope |
/api/broadcast: un’operazione che il token non permette. La descrizione nomina le operazioni. |
| 401 | unauthorized_client |
/api/broadcast: un’operazione il cui autore non è la persona del token, un account_update2 che tocca le chiavi, una concessione dell’autorità di pubblicazione mancante o un account che non si è potuto caricare. La descrizione dice quale. |
| 500 | server_error |
/api/broadcast: la rete Hive ha rifiutato la transazione. error_description riporta il suo messaggio. |
| 503 | unavailable |
/api/apps: la directory è ancora in costruzione. |
GET /api/me
Restituisce l’account a cui il token si riferisce. Usalo per sapere chi ha effettuato l’accesso, o per controllare un token.
- Metodi:
GEToPOST. - Token: un token di accesso, compreso un token
loginche nomina un’app.
curl https://hivesigner.com/api/me -H 'Authorization: ACCESS_TOKEN'
La risposta, in breve:
{
"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 | Significato |
|---|---|
user |
Il nome utente Hive a cui il token si riferisce. _id e name lo ripetono. |
account |
L’account intero, così come lo restituisce condenser_api.get_accounts di Hive. |
scope |
Che cosa permette il token: ["login"] per un token di solo accesso, altrimenti le operazioni che /api/broadcast accetta. |
user_metadata |
I metadati del profilo dell’account, letti dal JSON. |
/api/me non nomina l’app per cui il token è stato creato. Per controllarlo, decodifica il token: vedi Chiedere all’API.
POST /api/broadcast
Firma le operazioni di pubblicazione della persona del token con la chiave di pubblicazione di @hivesigner e le trasmette a Hive.
- Metodo:
POST. - Token: un token di accesso
posting, dal flusso con token o dal flusso con codice. - Perché funzioni: la persona ha concesso l’autorità di pubblicazione all’account della tua app (lo fa la schermata di consenso) e l’account della tua app ha concesso l’autorità di pubblicazione a @hivesigner.
- Corpo:
{ "operations": [...] }, dove ogni operazione è[name, fields]come sulla blockchain Hive. Tutte le operazioni di una richiesta finiscono in una sola transazione.
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 stessa richiesta 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 follow è un’operazione custom_json:
{
"operations": [
["custom_json", {
"required_auths": [],
"required_posting_auths": ["alice"],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"alice\",\"following\":\"bob\",\"what\":[\"blog\"]}]"
}]
]
}
L’API risponde appena un nodo Hive ha accettato la transazione. result.id è l’identificativo della transazione:
{
"result": { "id": "TRANSACTION_ID" }
}
Quando la rete rifiuta la transazione, la risposta è 500 con server_error. Il suo error_description riporta il messaggio della rete e response riporta l’errore grezzo.
Che cosa accetta broadcast
Un token di pubblicazione permette all’API di trasmettere queste operazioni e nessun’altra. In ognuna la persona del token deve essere l’account indicato nel campo mostrato:
| Operazione | La persona del token deve essere |
|---|---|
vote |
voter |
comment |
author |
delete_comment |
author |
comment_options |
author |
custom_json |
Il primo account in required_posting_auths |
claim_reward_balance |
account |
account_update2 |
account |
- Qualunque altra operazione viene rifiutata con
invalid_scope. Un tokenloginnon permette nessuna operazione. - Un’operazione per un altro account viene rifiutata con
unauthorized_client. Un token trasmette sempre e solo per la propria persona. account_update2può cambiare solo i metadati dell’account. Un’operazione con un campoowner,activeopostingviene rifiutata conunauthorized_client.custom_json: lasciarequired_authsvuoto. L’API firma con l’autorità di pubblicazione, quindi un’operazione che richiede l’autorità attiva fallisce sulla rete.
Le trasferte e le altre operazioni del portafoglio richiedono la chiave attiva della persona. Mandale invece come link di firma.
POST /api/oauth2/token
Scambia un codice con dei token, o un token di aggiornamento con token nuovi. Chiamalo solo dal tuo server. Vedi Il flusso con codice.
- Metodo:
POST, con i valori nel corpo. - Corpo:
codeeclient_secret, oppurerefresh_tokeneclient_secret. - Intestazioni: non mandare nessuna intestazione
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"
}
Ogni chiamata restituisce un nuovo token di accesso e un nuovo token di aggiornamento. Entrambi sono firmati da @hivesigner. expires_in è la durata del token di accesso in secondi (7 giorni).
Errori: 401 invalid_grant. La descrizione è «The token has invalid role» quando il valore inviato non è un codice o un token di aggiornamento valido. È «The code or secret is not valid» quando il codice o il segreto non corrispondono.
POST /api/oauth2/token/revoke
Dice a Hivesigner che la persona si è disconnessa dalla tua app. La tua app butta via il token da sé.
- Metodo:
POST. - Token: il token di accesso, nell’intestazione
Authorization.
curl -X POST https://hivesigner.com/api/oauth2/token/revoke -H 'Authorization: ACCESS_TOKEN'
{ "success": true }
Il revokeToken() dell’SDK JavaScript fa questa chiamata e poi dimentica il token. Per togliere per sempre l’accesso alla tua app, la persona lo toglie su https://hivesigner.com/authorized-apps. Vedi Disconnettersi e togliere l’accesso.
GET /api/apps
La directory pubblica delle app: le app che trasmettono tramite Hivesigner, ordinate per quante persone le usano. Non serve nessun token. https://hivesigner.com/apps mostra lo stesso elenco.
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 | Significato |
|---|---|
updated_at |
Quando la directory è stata costruita l’ultima volta. |
building |
true finché la prima costruzione non ha dati. apps è allora vuoto. |
window_days |
Il numero di giorni coperti dalla classifica. |
featured |
I nomi utente mostrati per primi, in quest’ordine. |
apps[].username |
L’account dell’app. |
apps[].name, about |
Dal profilo dell’account dell’app, oppure null. |
apps[].website |
Il sito web dal profilo, quando risponde sul proprio dominio. Altrimenti null. |
apps[].site |
L’esito del controllo del sito web: ok, no_website, invalid, redirected, blocked o unreachable. Una voce redirected ha anche redirects_to. |
apps[].users |
Utenti distinti al giorno, sommati sul periodo. |
apps[].requests |
Richieste all’API riuscite fatte per l’app nel periodo. |
apps[].first_seen, last_seen |
Il primo giorno in cui Hivesigner ha registrato l’app e l’ultimo giorno in cui è stata usata, oppure null. |
apps[].new |
true quando l’app è comparsa per la prima volta dentro il periodo. |
La risposta può restare in cache fino a 5 minuti. Prima che la directory sia costruita la prima volta, l’API risponde 503 con unavailable. Riprova più tardi.
I nomi e le descrizioni li pubblica ogni account app per conto suo. Hivesigner non ne verifica nessuno.