ELC Elements — Credential API

AI エージェント / Element が認証情報・使用量をやり取りするための API。Base URL https://element-api.elc-elements.net

認証

Authorization: Bearer <element-token>(または X-Element-Token)。 トークンは管理コンソールで Element ごとに発行します。/api/health 以外で必須。

GET/api/health認証不要

ヘルスチェックサービスの死活確認。認証不要。

GEThttps://element-api.elc-elements.net/api/health
Headers
Accept: application/json
cURL
curl https://element-api.elc-elements.net/api/health
200 OKapplication/json
{
  "ok": true,
  "service": "elc-elements-credential-api",
  "time": "2026-06-13T07:42:55+00:00"
}
GET/api/credentials/meta

メタ情報(軽量ポーリング)本体を返さず revision / hash のみ。変更検知の高頻度ポーリング用(アクセス台帳には記録されません)。

GEThttps://element-api.elc-elements.net/api/credentials/meta
Headers
Authorization: Bearer <element-token>
cURL
curl https://element-api.elc-elements.net/api/credentials/meta \
  -H "Authorization: Bearer <element-token>"
200 OKapplication/json
{
  "ok": true,
  "exists": true,
  "revision": 4,
  "updated_at": "2026-06-13T07:39:03+00:00",
  "hash": "a9cf5fea705ff696"
}
GET/api/credentials

認証情報の取得保存中の認証情報エンベロープを返す。未保存なら 404 not_found。各取得はアクセス台帳に記録。

GEThttps://element-api.elc-elements.net/api/credentials
Headers
Authorization: Bearer <element-token>
cURL
curl https://element-api.elc-elements.net/api/credentials \
  -H "Authorization: Bearer <element-token>"
200 OKapplication/json
{
  "ok": true,
  "revision": 4,
  "updated_at": "2026-06-13T07:39:03+00:00",
  "hash": "a9cf5fea705ff696",
  "credentials": {
    "claudeAiOauth": {
      "accessToken": "sk-ant-oat01-...",
      "refreshToken": "sk-ant-ort01-...",
      "expiresAt": 1781234567890,
      "scopes": ["user:inference"]
    }
  }
}
GET/api/credentials/available

割当済み認証情報の一覧(選択用)この Element に割り当てられた認証情報のうち Anthropic(OAuth / API キー両方)を一覧。シークレットは返しません。Element の選択 UI 用。

GEThttps://element-api.elc-elements.net/api/credentials/available
Headers
Authorization: Bearer <element-token>
cURL
curl https://element-api.elc-elements.net/api/credentials/available \
  -H "Authorization: Bearer <element-token>"
200 OKapplication/json
{
  "ok": true,
  "active_credential_id": 12,
  "credentials": [
    { "id": 12, "name": "anthropic-max", "auth_type": "oauth",
      "provider": "anthropic", "account_email": "team@example.com",
      "revision": 4, "has_payload": true, "is_active": true },
    { "id": 18, "name": "anthropic-api", "auth_type": "api",
      "provider": "anthropic", "has_payload": true, "is_active": false }
  ]
}
POST/api/credentials/select

使用する認証情報を指定この Element が使う認証情報を選択(active 化)。割当済み かつ Anthropic のみ。以後 GET /api/credentials が選択分を返します。

POSThttps://element-api.elc-elements.net/api/credentials/select
Headers
Authorization: Bearer <element-token>
Content-Type: application/json
Body
{ "credential_id": 18 }
cURL
curl -X POST https://element-api.elc-elements.net/api/credentials/select \
  -H "Authorization: Bearer <element-token>" \
  -H "Content-Type: application/json" \
  -d '{"credential_id":18}'
200 OKapplication/json
{
  "ok": true,
  "active_credential_id": 18,
  "name": "anthropic-api",
  "auth_type": "api"
}
PUT/api/credentials

認証情報の保存(全置換){ credentials: {...} } 形式、または claudeAiOauth を含む生オブジェクトを受理。任意 base_revision で楽観ロック(不一致なら 409)。revision は保存ごとに +1。

PUThttps://element-api.elc-elements.net/api/credentials
Headers
Authorization: Bearer <element-token>
Content-Type: application/json
Body
{
  "credentials": {
    "claudeAiOauth": {
      "accessToken": "sk-ant-oat01-...",
      "refreshToken": "sk-ant-ort01-...",
      "expiresAt": 1781234567890,
      "scopes": ["user:inference"]
    }
  },
  "client": "elc-element/corone-host"
}
cURL
curl -X PUT https://element-api.elc-elements.net/api/credentials \
  -H "Authorization: Bearer <element-token>" \
  -H "Content-Type: application/json" \
  -d @credentials.json
200 OKapplication/json
{
  "ok": true,
  "revision": 5,
  "updated_at": "2026-06-13T08:00:00+00:00",
  "hash": "1a2b3c4d5e6f7a8b"
}
DELETE/api/credentials

認証情報の削除保存済みエンベロープを削除する。

DELETEhttps://element-api.elc-elements.net/api/credentials
Headers
Authorization: Bearer <element-token>
cURL
curl -X DELETE https://element-api.elc-elements.net/api/credentials \
  -H "Authorization: Bearer <element-token>"
200 OKapplication/json
{ "ok": true, "deleted": true }
POST/api/usage

使用量の自己申告Element が累積 Usage を送信。Element 別の最新スナップショットに upsert(冪等)。element はトークンから解決され、ボディでは詐称不可。

POSThttps://element-api.elc-elements.net/api/usage
Headers
Authorization: Bearer <element-token>
Content-Type: application/json
Body
{
  "client": "elc-element/corone-host",
  "totals": { "turns": 412, "inputTokens": 8200000,
              "outputTokens": 540000, "cost": 31.77 },
  "rate_limit": { "session5hUtilization": 0.42,
                  "weekly7dUtilization": 0.61 }
}
cURL
curl -X POST https://element-api.elc-elements.net/api/usage \
  -H "Authorization: Bearer <element-token>" \
  -H "Content-Type: application/json" \
  -d @usage.json
200 OKapplication/json
{ "ok": true, "element": "corone", "stored": true }
POST/api/oauth/token認証不要

OAuth トークン交換(PKCE)認可コード + PKCE verifier を Element 用アクセストークンに交換(認証不要・コードと verifier が証明)。コードは設定画面の OAuth 接続フロー(/oauth/authorize の承認)で発行。発行されるのは通常の Element トークンで、以降の API で使用します。

POSThttps://element-api.elc-elements.net/api/oauth/token
Headers
Content-Type: application/json
Body
{
  "grant_type": "authorization_code",
  "code": "<authorization-code>",
  "redirect_uri": "https://<element>/oauth/callback",
  "code_verifier": "<pkce-verifier>",
  "client_id": "elc-element"
}
cURL
curl -X POST https://element-api.elc-elements.net/api/oauth/token \
  -H "Content-Type: application/json" \
  -d @token-exchange.json
200 OKapplication/json
{
  "ok": true,
  "access_token": "elc-oauth-...",
  "token_type": "Bearer",
  "element": { "id": 52, "name": "adam", "slug": "adam" },
  "scope": ""
}