REST-API
Die Hivesigner-API liegt unter https://hivesigner.com/api/. Sie liefert das Konto der angemeldeten Person, überträgt Posting-Operationen für sie, tauscht Codes gegen Tokens und listet die Apps auf, die Hivesigner nutzen. Diese Seite beschreibt jeden Endpunkt mit seinen Anfragen, Antworten und Fehlern.
Anfragen und Authentifizierung
- Basis-URL:
https://hivesigner.com/api/. Jeder Endpunkt unten ist relativ zuhttps://hivesigner.com. - Das Token: Senden Sie es unverändert als
Authorization-Header:Authorization: ACCESS_TOKEN. EinBearer-Präfix wird ebenfalls akzeptiert. Sie können es auch alsaccess_tokenim Query-String oder im Body senden, der Header hält es aber aus URLs und Protokollen heraus. - Bodys: JSON mit
Content-Type: application/jsonoder ein Formular (application/x-www-form-urlencoded). - Antworten: JSON.
- Browser: Die API erlaubt Cross-Origin-Anfragen, eine Web-App kann sie also direkt aufrufen.
Ein Token bekommen Sie über Anmelden mit OAuth2. Was in einem Token steht, zeigt Tokens.
Fehler
Eine Fehlerantwort hat einen HTTP-Fehlerstatus und diesen Body:
{
"error": "invalid_scope",
"error_description": "The access_token scope does not allow the following operation(s): transfer"
}
| Status | error |
Wann |
|---|---|---|
| 401 | invalid_grant |
Das Token fehlt oder ist ungültig, oder es ist die falsche Art für diesen Endpunkt ("The token has invalid role"). Bei /api/oauth2/token auch "The code or secret is not valid". |
| 401 | invalid_scope |
/api/broadcast: eine Operation, die das Token nicht erlaubt. Die Beschreibung nennt die Operationen. |
| 401 | unauthorized_client |
/api/broadcast: eine Operation, deren Autor nicht die Person des Tokens ist, ein account_update2, das Schlüssel berührt, eine fehlende Erteilung der Posting-Berechtigung oder ein Konto, das nicht geladen werden konnte. Die Beschreibung sagt, welcher Fall vorliegt. |
| 500 | server_error |
/api/broadcast: Das Hive-Netzwerk hat die Transaktion abgelehnt. error_description trägt dessen Meldung. |
| 503 | unavailable |
/api/apps: Das Verzeichnis wird noch aufgebaut. |
GET /api/me
Liefert das Konto, zu dem das Token gehört. Damit erfahren Sie, wer sich angemeldet hat, oder prüfen ein Token.
- Methoden:
GEToderPOST. - Token: ein Zugriffstoken, auch ein
login-Token, das eine App nennt.
curl https://hivesigner.com/api/me -H 'Authorization: ACCESS_TOKEN'
Die Antwort, gekürzt:
{
"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 } }
}
| Feld | Bedeutung |
|---|---|
user |
Der Hive-Benutzername, zu dem das Token gehört. _id und name wiederholen ihn. |
account |
Das ganze Konto, so wie Hives condenser_api.get_accounts es liefert. |
scope |
Was das Token erlaubt: ["login"] für ein Anmeldetoken, sonst die Operationen, die /api/broadcast annimmt. |
user_metadata |
Die Profil-Metadaten des Kontos, aus JSON gelesen. |
/api/me nennt nicht die App, für die das Token erstellt wurde. Um das zu prüfen, dekodieren Sie das Token: siehe Die API fragen.
POST /api/broadcast
Signiert Posting-Operationen für die Person des Tokens mit dem Posting-Schlüssel von @hivesigner und überträgt sie an Hive.
- Methode:
POST. - Token: ein
posting-Zugriffstoken, aus dem Token-Flow oder dem Code-Flow. - Damit es funktioniert: Die Person hat Ihrem App-Konto die Posting-Berechtigung erteilt (das erledigt der Zustimmungsbildschirm) und Ihr App-Konto hat @hivesigner die Posting-Berechtigung erteilt.
- Body:
{ "operations": [...] }, wobei jede Operation[name, fields]ist wie auf der Hive-Blockchain. Alle Operationen einer Anfrage landen in einer Transaktion.
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 }]
]
}
Dieselbe Anfrage mit 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}]]}'
Ein Follow ist eine custom_json-Operation:
{
"operations": [
["custom_json", {
"required_auths": [],
"required_posting_auths": ["alice"],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"alice\",\"following\":\"bob\",\"what\":[\"blog\"]}]"
}]
]
}
Die API antwortet, sobald ein Hive-Knoten die Transaktion angenommen hat. result.id ist die Transaktions-ID:
{
"result": { "id": "TRANSACTION_ID" }
}
Lehnt das Netzwerk die Transaktion ab, lautet die Antwort 500 mit server_error. Deren error_description trägt die Meldung des Netzwerks und response den rohen Fehler.
Was broadcast annimmt
Ein Posting-Token lässt die API diese Operationen übertragen und keine anderen. In jeder davon muss die Person des Tokens das Konto im gezeigten Feld sein:
| Operation | Die Person des Tokens muss sein |
|---|---|
vote |
voter |
comment |
author |
delete_comment |
author |
comment_options |
author |
custom_json |
Das erste Konto in required_posting_auths |
claim_reward_balance |
account |
account_update2 |
account |
- Jede andere Operation wird mit
invalid_scopeabgelehnt. Einlogin-Token erlaubt überhaupt keine Operation. - Eine Operation für ein anderes Konto wird mit
unauthorized_clientabgelehnt. Ein Token überträgt immer nur für die eigene Person. account_update2darf nur die Metadaten des Kontos ändern. Eine Operation mit einem Feldowner,activeoderpostingwird mitunauthorized_clientabgelehnt.custom_json: Lassen Sierequired_authsleer. Die API signiert mit Posting-Berechtigung, eine Operation, die Active-Berechtigung braucht, scheitert also im Netzwerk.
Überweisungen und andere Wallet-Operationen brauchen den Active-Schlüssel der Person. Senden Sie sie stattdessen als Signaturlinks.
POST /api/oauth2/token
Tauscht einen Code gegen Tokens oder ein Refresh-Token gegen neue Tokens. Rufen Sie das nur von Ihrem Server aus auf. Siehe Der Code-Flow.
- Methode:
POST, mit den Werten im Body. - Body:
codeundclient_secretoderrefresh_tokenundclient_secret. - Header: Senden Sie keinen
Authorization-Header.
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"
}
Jeder Aufruf liefert ein neues Zugriffstoken und ein neues Refresh-Token. Beide sind von @hivesigner signiert. expires_in ist die Lebensdauer des Zugriffstokens in Sekunden (7 Tage).
Fehler: 401 invalid_grant. Die Beschreibung lautet "The token has invalid role", wenn der gesendete Wert kein gültiger Code und kein gültiges Refresh-Token ist. Sie lautet "The code or secret is not valid", wenn Code oder Secret nicht passen.
POST /api/oauth2/token/revoke
Teilt Hivesigner mit, dass die Person sich aus Ihrer App abgemeldet hat. Ihre App verwirft das Token selbst.
- Methode:
POST. - Token: das Zugriffstoken, im
Authorization-Header.
curl -X POST https://hivesigner.com/api/oauth2/token/revoke -H 'Authorization: ACCESS_TOKEN'
{ "success": true }
revokeToken() im JavaScript-SDK macht diesen Aufruf und vergisst danach das Token. Um den Zugriff Ihrer App dauerhaft zu entziehen, entfernt die Person ihn unter https://hivesigner.com/authorized-apps. Siehe Abmelden und Zugriff entziehen.
GET /api/apps
Das öffentliche App-Verzeichnis: Apps, die über Hivesigner übertragen, sortiert danach, wie viele Menschen sie nutzen. Es braucht kein Token. https://hivesigner.com/apps zeigt dieselbe Liste.
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
}
]
}
| Feld | Bedeutung |
|---|---|
updated_at |
Wann das Verzeichnis zuletzt aufgebaut wurde. |
building |
true, bis der erste Aufbau Daten hat. apps ist dann leer. |
window_days |
Die Zahl der Tage, die das Ranking abdeckt. |
featured |
Die zuerst gezeigten Benutzernamen, in dieser Reihenfolge. |
apps[].username |
Das App-Konto. |
apps[].name, about |
Aus dem Profil des App-Kontos oder null. |
apps[].website |
Die Website aus dem Profil, wenn sie auf ihrer eigenen Domain antwortet. Sonst null. |
apps[].site |
Das Ergebnis der Website-Prüfung: ok, no_website, invalid, redirected, blocked oder unreachable. Ein Eintrag redirected hat zusätzlich redirects_to. |
apps[].users |
Verschiedene Nutzer pro Tag, über den Zeitraum summiert. |
apps[].requests |
Erfolgreiche API-Anfragen, die im Zeitraum für die App gestellt wurden. |
apps[].first_seen, last_seen |
Der erste Tag, an dem Hivesigner die App erfasst hat, und der letzte Tag ihrer Nutzung, oder null. |
apps[].new |
true, wenn die App erstmals innerhalb des Zeitraums aufgetaucht ist. |
Die Antwort darf bis zu 5 Minuten zwischengespeichert werden. Bevor das Verzeichnis erstmals aufgebaut ist, antwortet die API mit 503 und unavailable. Versuchen Sie es später erneut.
Die Namen und Beschreibungen veröffentlicht jedes App-Konto selbst. Hivesigner prüft keine davon.