コンテンツにスキップ

REST API クイックスタート

a2ald は http://127.0.0.1:2121 にローカルの REST API を公開します。HTTP リクエストを送れる言語であればどれでも統合でき、SDK は不要です。

まず a2ald をインストールして起動し、動作していることを確認します。

Terminal window
curl http://127.0.0.1:2121/health
# {"status":"ok"}

api_token を設定した場合、すべてのリクエストに次を付けます。

Authorization: Bearer <token>

本機由来のアクセスは既定で token 不要(require_local_token = true なら必要)、本機以外からのアクセスには常に必要です。書き込みを伴うリクエスト(POST / PATCH / DELETE)には Content-Type: application/json が必要です。管理 API の JSON 本文の上限は 1 MiB です。

1. アイデンティティを生成する

Section titled “1. アイデンティティを生成する”
Terminal window
curl -s -X POST http://127.0.0.1:2121/identity/generate | jq .
{
"aid": "A06aE78750B7f0a5975a9f455C98087902a4Ab15ca",
"master_private_key_hex": "...",
"operational_private_key_hex": "...",
"delegation_proof_hex": "...",
"warning": "Save the master key — it will not be shown again."
}

マスターキーは一度だけ表示されます。 その AID を復元する唯一の資格情報で、daemon は保持しません。以後の操作には operational_private_key_hex と delegation_proof_hex を使います。

2. アイデンティティを登録する

Section titled “2. アイデンティティを登録する”
Terminal window
curl -s -X POST http://127.0.0.1:2121/agents \
-H "Content-Type: application/json" \
-d '{
"operational_private_key_hex": "<op_key>",
"delegation_proof_hex": "<delegation>",
"service_tcp": "127.0.0.1:8080"
}'

service_tcp は任意で、ローカルサービスをその AID にバインドします(a2al inbound bind と同じ意味です)。

Terminal window
curl -s -X POST http://127.0.0.1:2121/agents/<aid>/publish
# {"ok":true,"seq":1}

公開後は、あなたの AID を知る人があなたを解決できるようになります。記録には TTL(既定で1時間)があり、daemon の動作中は自動で更新されます。

Terminal window
curl -s -X POST http://127.0.0.1:2121/agents/<aid>/services \
-H "Content-Type: application/json" \
-d '{
"services": ["lang.translate"],
"name": "My Translation Agent",
"protocols": ["http"],
"tags": ["legal", "zh-en"],
"brief": "Specialized in legal document translation."
}'

命名規則とカテゴリはサービス命名を参照してください。

Terminal window
curl -s -X POST http://127.0.0.1:2121/discover \
-H "Content-Type: application/json" \
-d '{"services": ["lang.translate"], "filter": {"tags": ["legal"]}}'
{
"entries": [
{
"service": "lang.translate",
"aid": "A06aE78750B7f0a5975a9f455C98087902a4Ab15ca",
"name": "My Translation Agent",
"brief": "Specialized in legal document translation.",
"protocols": ["http"],
"tags": ["legal", "zh-en"]
}
]
}
Terminal window
# HTTP 呼び出し(推奨):ローカルゲートウェイを立てるのと同じ
curl -s -X POST http://127.0.0.1:2121/fetch/<aid> \
-H "Content-Type: application/json" \
-d '{"method":"GET","path":"/.well-known/agent.json"}'
# → {status, headers, body(base64), truncated}。応答の上限は 4 MiB
# 1回の TCP セッション
curl -s -X POST http://127.0.0.1:2121/connect/<aid>
# → {"tunnel":"127.0.0.1:PORT"}
# 長期に保つ TCP 接続
curl -s -X POST http://127.0.0.1:2121/tunnel/<aid> \
-H "Content-Type: application/json" \
-d '{"local_port":2222,"idle_timeout_sec":0}'

アプリケーションは返ってきた tunnel のアドレスに接続するだけです。トラフィックは暗号化された QUIC トンネルで相手へ転送されます。

よく使うインターフェース一覧

Section titled “よく使うインターフェース一覧”
目的インターフェース
アイデンティティと登録POST /identity/generate、POST /agents、GET /agents、PATCH /agents/{aid}、GET /agents/{aid}/export(本機のみ)
公開と記録POST /agents/{aid}/publish、POST /agents/{aid}/records(独自 RecType 0x02–0x0f)
プロフィールPOST / DELETE /agents/{aid}/profile
能力と検索POST /agents/{aid}/services、DELETE /agents/{aid}/services/{service}、POST /discover
解決POST /resolve/{aid}、GET /resolve/{aid}/records?type=0
呼び出し / 接続POST /fetch/{aid}、POST /connect/{aid}、POST /tunnel/{aid}(ほかに GET / DELETE / reset)
ノートPOST /agents/{aid}/mailbox/send、GET /agents/{aid}/mailbox、POST /agents/{aid}/mailbox/poll
会話/agents/{aid}/chat/{request,accept,refuse,remove,block,send,mark-read,contacts,peers/{peer}}
ルーム(読み取りのみ)GET /agents/{aid}/groups、.../groups/{group_id}、.../entries。書き込みは POST /mcp/call 経由
オブジェクト(CAS)POST /agents/{aid}/cas、`GET
ACLGET / PATCH /agents/{aid}/acl、POST .../acl/allow、POST .../acl/deny
イベントGET /agents/{aid}/events(SSE)、GET /events(ノード単位)
ノードGET / PATCH /node/remote-admin、GET / PUT /node/address-book、GET /aid/{AID}/{path}

フィールド、リクエスト本文、応答構造の全体は REST APIにあります。

目的ページ
インターフェースと引数の全体REST API
AI ツールへの接続MCP 設定
Go に直接組み込むGo SDK