APIリファレンス

APIリファレンス

Authon認証サービスの完全なREST APIドキュメント。すべてのリクエストには x-api-key ヘッダーのAPIキーまたはBearerトークンが必要です。 Authorization.

ベースURL

text
https://api.authon.dev

認証

Authonはリクエストがブラウザからかサーバーからかによって2種類のAPIキーを使用します。 x-api-key ヘッダーまたはBearerトークンとしてキーを渡してください。

キー種別プレフィックス使用
公開キーpk_live_ / pk_test_ブラウザ / クライアントSDK。公開しても安全。
シークレットキーsk_live_ / sk_test_サーバー専用。完全な管理者アクセス。絶対に公開しない。
BearereyJhbGci...サインインからのユーザーアクセストークン。15分TTL。
bash
# Publishable key — client-side requests
curl https://api.authon.dev/v1/auth/providers \
  -H "x-api-key: pk_live_your_publishable_key"

# Secret key — server-side admin requests
curl https://api.authon.dev/v1/auth/token/verify \
  -H "x-api-key: sk_live_your_secret_key" \
  -H "Authorization: Bearer eyJhbGci..."

# Bearer access token — user requests
curl https://api.authon.dev/v1/auth/me \
  -H "Authorization: Bearer eyJhbGci..."

認証エンドポイント

POST/v1/auth/signup

ユーザー登録

メールとパスワードで新しいユーザーを登録。成功時にトークンを返します。

Auth:x-api-key: pk_live_...
リクエストボディ
json
{
  "email": "user@example.com",
  "password": "securepassword",
  "displayName": "Jane Doe"          // optional
}
レスポンス
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "rt_8f4a2b1c...",
  "expiresIn": 900,
  "user": {
    "id": "usr_abc123",
    "projectId": "proj_xyz",
    "email": "user@example.com",
    "displayName": "Jane Doe",
    "avatarUrl": null,
    "emailVerified": false,
    "isBanned": false,
    "publicMetadata": null,
    "signInCount": 0,
    "createdAt": "2026-01-15T10:30:00.000Z",
    "updatedAt": "2026-01-15T10:30:00.000Z"
  }
}
POST/v1/auth/signin

サインイン

メールとパスワードで既存ユーザーを認証。

Auth:x-api-key: pk_live_...
リクエストボディ
json
{
  "email": "user@example.com",
  "password": "securepassword"
}
レスポンス
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "rt_8f4a2b1c...",
  "expiresIn": 900,
  "user": { ... }
}
POST/v1/auth/signout

サインアウト

現在のセッションを取り消し、リフレッシュトークンを無効化。Bearerアクセストークンが必要。

Auth:Authorization: Bearer <access_token>
レスポンス
json
{
  "success": true
}
POST/v1/auth/token/refresh

トークン更新

リフレッシュトークンを新しいアクセストークンと交換。アクセストークンは15分後に期限切れ。

Auth:x-api-key: pk_live_...
リクエストボディ
json
{
  "refreshToken": "rt_8f4a2b1c..."
}
レスポンス
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresIn": 900
}
GET/v1/auth/token/verify

トークン検証

アクセストークンを検証して関連ユーザーを返します。サーバーSDKが受信リクエストの認証に使用。

Auth:x-api-key: sk_live_...
レスポンス
json
{
  "id": "usr_abc123",
  "projectId": "proj_xyz",
  "email": "user@example.com",
  "displayName": "Jane Doe",
  "emailVerified": true,
  "isBanned": false,
  "publicMetadata": { "plan": "pro" },
  "signInCount": 42,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-15T10:30:00.000Z"
}
GET/v1/auth/me

現在のユーザー取得

現在認証されているユーザーのプロファイルを返します。

Auth:Authorization: Bearer <access_token>
レスポンス
json
{
  "id": "usr_abc123",
  "projectId": "proj_xyz",
  "email": "user@example.com",
  "displayName": "Jane Doe",
  "avatarUrl": "https:0
  6: null,
  7: true,
  8: false,
  9: false,
  10: {},
  11: "2026-01-15T10:30:00.000Z",
  "signInCount": 42,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-15T10:30:00.000Z"
}
PATCH/v1/auth/me

現在のユーザー更新

現在認証されているユーザーのプロファイルフィールドを更新。提供されたフィールドのみ更新されます。

Auth:Authorization: Bearer <access_token>
リクエストボディ
json
{
  "displayName": "Jane Smith",          // optional
  "avatarUrl": "https://example.com/avatar.png"  // optional
}
レスポンス
json
{
  "id": "usr_abc123",
  "displayName": "Jane Smith",
  "avatarUrl": "https://example.com/avatar.png",
  ...
}

OAuthエンドポイント

GET/v1/auth/providers

プロバイダー一覧

プロジェクトで有効なOAuthプロバイダーのリストを返します。

Auth:x-api-key: pk_live_...
レスポンス
json
{
  "providers": ["google", "github", "kakao"]
}
GET/v1/auth/oauth/:provider/url

OAuth URLの取得

指定されたOAuthプロバイダーの認証URLを生成。ユーザーをリダイレクトするかポップアップを開くために使用。

Auth:x-api-key: pk_live_...
レスポンス
json
{
  "url": "https://accounts.google.com/o/oauth2/v2/auth?client_id=..."
}
POST/v1/auth/oauth/callback

OAuthコールバック

OAuth認証コードをAuthonトークンと交換。ポップアップ返却後にSDKが呼び出します。

Auth:x-api-key: pk_live_...
リクエストボディ
json
{
  "provider": "google",
  "code": "4/0AX4XfWh...",
  "state": "random_state_string",
  "codeVerifier": "pkce_verifier"   // required if PKCE was used
}
レスポンス
json
{
  "accessToken": "eyJhbGci...",
  "refreshToken": "rt_...",
  "expiresIn": 900,
  "user": { ... }
}

ブランディング

GET/v1/auth/branding

ブランディング取得

プロジェクトのブランディング設定を返します。JS SDKがログインモーダルのスタイリングに使用。

Auth:x-api-key: pk_live_...
レスポンス
json
{
  "brandName": "Acme Corp",
  "primaryColorStart": "#7c3aed",
  "primaryColorEnd": "#4f46e5",
  "lightBg": "#ffffff",
  "lightText": "#111827",
  "darkBg": "#0f172a",
  "darkText": "#f1f5f9",
  "borderRadius": 12,
  "showEmailPassword": true,
  "showDivider": true,
  "termsUrl": "https:0
  13: "https://acme.com/privacy",
  "logoDataUrl": "data:image/png;base64,..."
}

エラーコード

すべてのエラーレスポンスはHTTPステータスコードとJSONボディで一貫した形式に従います:

json
{
  "statusCode": 401,
  "error": "Unauthorized",
  "message": "Invalid or expired access token"
}
ステータスエラー説明
400Bad Requestリクエストボディがないか形式が不正
401UnauthorizedAPIキー / トークンがないか無効か期限切れ
403Forbiddenキーは有効だがこのアクションの権限がない
404Not Foundリクエストされたリソースが存在しない
409Conflictメールがすでに登録済み
422Unprocessable Entityバリデーション失敗 — フィールド要件を確認
429Too Many Requestsレート制限超過 — 指定された遅延後に再試行
500Internal Server Error予期しないサーバーサイドエラー
Authon — ユニバーサル認証プラットフォーム