REST API
Hivesigner の API は https://hivesigner.com/api/ にあります。ログイン中の利用者のアカウントを返し、その利用者に代わって投稿系の操作をブロードキャストし、コードをトークンと交換し、Hivesigner を使っているアプリの一覧を返します。このページでは各エンドポイントを、リクエスト、応答、エラーとともに説明します。
リクエストと認証
- ベース URL:
https://hivesigner.com/api/。以下の各エンドポイントはhttps://hivesigner.comからの相対です。 - トークン:
Authorizationヘッダーにそのまま入れて送ります。Authorization: ACCESS_TOKENです。Bearerを前に付けても受け付けます。クエリ文字列や本体にaccess_tokenとして送ることもできますが、ヘッダーなら URL やログに残りません。 - 本体:
Content-Type: application/jsonを付けた 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 |
アカウント全体。Hive の condenser_api.get_accounts が返す形そのままです。 |
scope |
トークンが許すもの。ログイン用トークンでは ["login"]、それ以外は /api/broadcast が受け付ける操作です。 |
user_metadata |
アカウントのプロフィールのメタデータ。JSON から読み取ったものです。 |
/api/me は、そのトークンがどのアプリ向けに作られたかを示しません。それを確かめるにはトークンを復号してください。API に尋ねるを参照してください。
POST /api/broadcast
トークンの利用者の投稿系の操作を @hivesigner の投稿キーで署名し、Hive へブロードキャストします。
- メソッド:
POST。 - トークン:
postingのアクセストークン。トークンフローでもコードフローでもかまいません。 - 動作の前提: 利用者があなたのアプリアカウントに投稿権限を与えていること(同意画面が行います)と、あなたのアプリアカウントが @hivesigner に投稿権限を与えていることです。
- 本体:
{ "operations": [...] }。各操作は Hive のブロックチェーンと同じく[name, fields]の形です。一つのリクエストのすべての操作が一つのトランザクションに入ります。
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\"]}]"
}]
]
}
Hive のノードがトランザクションを受け付けた時点で API が応答します。result.id がトランザクション ID です。
{
"result": { "id": "TRANSACTION_ID" }
}
ネットワークがトランザクションを拒否した場合、応答は server_error とともに 500 になります。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 }
JavaScript SDK の revokeToken() はこの呼び出しを行ってからトークンを忘れます。アプリのアクセスを完全に取り消すには、利用者が 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 が unavailable とともに 503 を返します。あとでもう一度お試しください。
名前と説明は各アプリアカウント自身が公開しているものです。Hivesigner はそのいずれも検証しません。