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_ | サーバー専用。完全な管理者アクセス。絶対に公開しない。 |
| Bearer | eyJhbGci... | サインインからのユーザーアクセストークン。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/urlOAuth 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/callbackOAuthコールバック
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"
}| ステータス | エラー | 説明 |
|---|---|---|
| 400 | Bad Request | リクエストボディがないか形式が不正 |
| 401 | Unauthorized | APIキー / トークンがないか無効か期限切れ |
| 403 | Forbidden | キーは有効だがこのアクションの権限がない |
| 404 | Not Found | リクエストされたリソースが存在しない |
| 409 | Conflict | メールがすでに登録済み |
| 422 | Unprocessable Entity | バリデーション失敗 — フィールド要件を確認 |
| 429 | Too Many Requests | レート制限超過 — 指定された遅延後に再試行 |
| 500 | Internal Server Error | 予期しないサーバーサイドエラー |