1. クイックスタート
Regunow API は HTTPS、Bearer 認証、バージョン付きプレフィックス /api/v1 を使用します。このドキュメントはアカウントなしで閲覧できます。API リクエストには、有効な Pro アクセスと現行ポリシーへの同意が必要です。
- Regunow にサインインし、設定 → API キーでキーを作成します。
- 秘密キーを安全に保管してください。キーの作成時に一度だけ表示されます。
- ホストとキーを設定し、バックエンドまたは信頼できる自動処理から最初の質問を送信します。
# Use your Regunow host and a key from Settings → API Keys.
export REGUNOW_BASE_URL="https://YOUR_REGUNOW_HOST"
export REGUNOW_API_KEY="YOUR_API_KEY"
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/chat/completions" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: first-question-001" \
-d '{
"messages": [{
"role": "user",
"content": "Which EU product-safety obligations apply to a connected consumer device?"
}],
"mode": "jurisdiction",
"jurisdiction": "eu"
}'回答は output.content にあります。レスポンスには出典と請求クレジットも含まれます。このリクエストはクレジットを消費します。新しい質問ごとに新しい冪等性キーを使用してください。
JavaScript の例(Node.js)
// Node.js: set REGUNOW_BASE_URL and REGUNOW_API_KEY in your environment.
// Generate one key per operation; keep it unchanged when retrying that operation.
import { randomUUID } from "node:crypto";
const idempotencyKey = randomUUID();
const response = await fetch(
process.env.REGUNOW_BASE_URL + "/api/v1/chat/completions",
{
method: "POST",
headers: {
Authorization: "Bearer " + process.env.REGUNOW_API_KEY,
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey,
},
body: JSON.stringify({
messages: [{ role: "user", content: "Summarize EU product-safety obligations." }],
mode: "jurisdiction",
jurisdiction: "eu",
}),
},
);
const result = await response.json();
if (!response.ok) {
throw new Error(result.error.code + ": " + result.error.message);
}
console.log(result.output.content);2. 認証
すべてのリクエストで HTTP の Authorization ヘッダーに API キーを指定します。URL、Cookie、リクエスト本文に含まれるキーは受け付けません。
Authorization: Bearer rgn_live_...キーは環境変数またはシークレット管理サービスに保存してください。ブラウザーコード、モバイルアプリのパッケージ、公開リポジトリ、ログに含めないでください。異なるオリジンのブラウザーからのアクセスは有効になっていません。サーバー経由でリクエストしてください。
無効化、削除、有効期限切れのキーは直ちに認証できなくなります。Regunow は秘密キーのハッシュのみを保存するため、既存の秘密キーを再表示できません。必要に応じて代替キーを作成してください。
Pro アクセスとポリシーへの同意はリクエストごとに確認されます。legal_acceptance_required が返された場合、キーの所有者がサインインして法的条件への同意を開く必要があります。API キーではポリシーに同意できません。
3. モデルとオプション
GET/api/v1/models
対応するモデル、思考の深さ、法域、回答言語、機能を確認できます。この認証必須のエンドポイントに個別のクレジット請求はなく、回答生成前のキー確認に利用できます。
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/models" \
-H "Authorization: Bearer $REGUNOW_API_KEY"| フィールド | 内容 |
|---|---|
models | モデル ID、表示名、既定の思考の深さ、対応する思考の深さの値。 |
default | 既定のモデルと思考の深さの選択。 |
jurisdictions | 対応する法域の識別子と表示名。 |
languages | 対応する回答言語のコードと表示名。 |
capabilities | ストリーミングとファイルの対応状況、ファイル数とサイズの上限。 |
利用環境のカタログが返す値を使用してください。法域モードでは model と effort を省略すると、許可された既定値が使われます。指定する場合は、既定の Sonnet 4.6 / 高に一致させる必要があります。添付なしの回答では検索サービスが回答モデルを管理し、レスポンスのモデルフィールドは検証済みの選択を示します。
4. チャット回答の生成
POST/api/v1/chat/completions
messages 配列を含む JSON 本文を送信します。既定では API は回答全体を JSON で返します。テキストを逐次受信するには stream を true に設定します。
| フィールド | デフォルト | 説明 |
|---|---|---|
messages | 必須 | user と assistant が交互に並ぶ 1–20 件のメッセージで、最後は user にします。各メッセージに role と文字列の content を含めます。 |
mode | freestyle | 柔軟な規制調査には freestyle、対応する法域の調査には jurisdiction を使用します。 |
jurisdiction | null | 法域モードで必須です。カタログの識別子を使用してください。フリースタイルでは省略するか null にします。 |
model | カタログの既定値 | 対応するモデル ID。法域モードでは既定の Sonnet の選択が必要です。 |
effort | モデルの既定値 | 選択したモデルが対応する思考の深さ。法域モードでは高が必要です。 |
web_search | auto / off | フリースタイルでは auto、on、off を指定でき、既定値は auto です。法域モードでは off のみを受け付けます。 |
response_language | en | カタログにある回答言語コード。ドキュメントの言語は回答言語を制限しません。 |
stream | false | Server-Sent Events(SSE)を使用するには true に設定します。 |
file_ids | なし | キー所有者のアカウントに属する利用可能なファイルの UUID を、重複なしで最大 5 件指定できます。 |
{
"messages": [{
"role": "user",
"content": "What retention period does this policy specify? Cite the document."
}],
"mode": "freestyle",
"web_search": "off",
"response_language": "en",
"file_ids": ["YOUR_FILE_ID"]
}YOUR_FILE_ID をアップロード成功時に返された UUID に置き換えます。続けて質問する際は関連するユーザーとアシスタントの履歴を送り、使用する file_ids も再送してください。API は会話履歴や添付を自動的には記憶しません。
システムメッセージと未知のフィールドは拒否されます。画像生成、レポート生成、音声入力、保存済みメモリへのアクセスはこの API では提供していません。アップロードした画像を質問の入力として使用できます。
5. 回答と引用
回答生成に成功すると、object: "regunow.chat.completion"、回答、出典メタデータ、使用量、所要時間が返されます。以下の値は例示です。
{
"id": "request-uuid",
"request_id": "request-uuid",
"object": "regunow.chat.completion",
"created": 1790812800,
"model": "jp.anthropic.claude-sonnet-4-6",
"latency": {
"time_to_first_token_ms": 2345,
"time_to_answer_completion_ms": 9876
},
"output": {
"input_files": [],
"role": "assistant",
"content": "The complete answer...",
"finish_reason": "end_turn",
"citations": [],
"sources": [],
"web_search": false
},
"usage": {
"input_tokens": 1234,
"output_tokens": 456,
"charged_microcredits": 789000,
"charged_credits": 0.789
}
}output.contentは確定した回答本文です。引用位置はこの最終文字列を参照し、sourceIndexesはoutput.sources内の項目を示します。- 出典にはタイトル、ファイル名、MIME タイプ、URI、取得した抜粋が含まれます。抜粋と引用を回答とともに表示してください。
- 出典 URI は場所を示し、非公開ストレージを指す場合があります。ユーザーが開けるリンクには公開された発行者 URL のみを使用してください。規制の出典ファイルのダウンロードや翻訳は API では提供していません。
- 添付を使用した場合、
output.input_filesが送信したファイルを示します。添付の出典にはfile_idがあり、規制とウェブの出典にはfile_id: nullがあります。添付の URI はnullです。 - 入力ファイルが存在しても、すべての記述を裏付けるとは限りません。モデルが本文中の引用を省略したり、画像やスキャンの抜粋が空になったりする場合があります。
検索サービスがトークン数を公開しない場合は null になります。これは不明を意味し、ゼロではありません。charged_credits は記録された顧客への請求額です。created は秒単位の Unix タイムスタンプで、レイテンシーはミリ秒単位です。
すべてのエンドポイントのレスポンスに X-Request-Id ヘッダーが含まれます。調査用にこの識別子を保管してください。チャット回答とエラーの JSON にも request_id が含まれます。
6. ストリーミング
"stream": true を設定します。レスポンスは text/event-stream を使用します。cURL では -N を追加して出力バッファリングを無効にします。
curl --fail-with-body -N \
"$REGUNOW_BASE_URL/api/v1/chat/completions" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: streaming-question-001" \
-d '{
"messages": [{"role":"user","content":"Summarize EU product-safety obligations."}],
"mode": "jurisdiction",
"jurisdiction": "eu",
"stream": true
}'空行で区切られた完全な SSE イベントを読み取ってください。ネットワークのチャンクにはイベントの一部や複数のイベントが含まれる場合があります。choices[0].delta.content を到着順に追加します。: で始まる接続維持用コメントは無視してください。
data: {"choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"choices":[{"index":0,"delta":{"content":"The answer begins..."},"finish_reason":null}]}
data: {"choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"choices":[],"usage":{"prompt_tokens":1234,"completion_tokens":456,"total_tokens":1690},"regunow":{"output":{},"latency":{},"usage":{"charged_credits":0.789,"charged_microcredits":789000}}}
data: [DONE]最後のメタデータイベントでは choices 配列が空になります。確定した回答、引用、出典は regunow.output、所要時間は regunow.latency、クレジットは regunow.usage から読み取ります。トークン数には usage.prompt_tokens と usage.completion_tokens を使用します。
検索や引用処理により一時的に停止する場合があります。最終メタデータが届くまでテキストは暫定扱いにしてください。ストリーミング開始後のエラーは error オブジェクトと、その後の [DONE] で通知されます。HTTP 200 だけでは成功を確認できません。開始前の認証・検証エラーは通常の JSON エラーレスポンスになります。
完了した処理の再取得も SSE で、保存済み回答を 1 つのテキストチャンクとして X-Idempotent-Replayed: true とともに返します。
7. ファイル
文書または画像をアップロードし、その ID をチャットリクエストに添付します。ファイルはキー所有者のライブラリとストレージ容量を共有します。文書は最大 10 MiB、画像は最大 5 MiB です。
| 分類 | 形式 |
|---|---|
| 文書 | PDF, TXT, CSV, TSV, Markdown, DOC, DOCX, ODT, RTF, XLSX, ODS, PPTX, ODP |
| 画像 | JPEG, PNG, WebP, GIF |
直接アップロード(推奨)
この 3 段階の手順では元のファイルのバイト列をストレージへ直接送り、アプリケーションのリクエスト本文上限を回避します。ホスト環境との連携、特に大きいファイルに使用してください。
POST/api/v1/files/upload-intents
name、mime_type、bytes(正確なファイルサイズ)のみを送ります。成功すると HTTP 201 とともに保留中のファイル ID と、300 秒間有効な署名付きアップロード URL が返されます。
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files/upload-intents" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: policy-intent-001" \
-d '{"name":"policy.txt","mime_type":"text/plain","bytes":16384}'{
"id": "YOUR_FILE_ID",
"status": "pending",
"upload_method": "PUT",
"upload_url": "SIGNED_UPLOAD_URL",
"upload_headers": {"Content-Type": "text/plain"},
"expires_in": 300
}FILE_ID に返された id を設定します。返された upload_method、upload_url、upload_headers を使って元のバイト列をそのまま送ります。正確な Content-Length を指定してください。アップロード URL に Regunow API キーを送らず、署名付き URL をログに残さないでください。
# Set UPLOAD_URL from the intent response. Use its returned upload_headers.
# This example assumes policy.txt is exactly 16,384 bytes.
curl --fail-with-body -X PUT "$UPLOAD_URL" \
-H "Content-Type: text/plain" \
-H "Content-Length: 16384" \
--data-binary @./policy.txtPOST/api/v1/files/{fileId}/complete
別の冪等性キーで {} を送ります。完了処理はバイト列を検証し、HTTP 200 と利用可能なファイルを返します。成功後にのみ、その ID を file_ids で使用できます。
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files/$FILE_ID/complete" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: policy-complete-001" \
-d '{}'URL の期限が切れたら、未使用の保留ファイルを削除し、新しいキーで再度準備してください。準備の再取得では URL の有効期限は延長されません。完了結果が不明な場合は、まずファイルの状態を取得します。まだ保留中なら新しい冪等性キーで完了を再試行してください。古いキーは保存済み結果を返します。すでに利用可能なファイルの完了処理はメタデータを返します。
マルチパートアップロード
POST/api/v1/files
小さいファイルは、file という名前の multipart/form-data フィールド 1 つで送信します。base64 やリモート URL ではなく元のバイト列を送ってください。ホスティングのゲートウェイには API のファイル上限より小さい本文上限がある場合があります。
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files" \
-H "Authorization: Bearer $REGUNOW_API_KEY" \
-H "Idempotency-Key: policy-upload-001" \
-F "file=@./policy.pdf;type=application/pdf"成功すると HTTP 201 と利用可能なファイルが返されます。別途完了処理を呼ぶ必要はありません。
{
"id": "YOUR_FILE_ID",
"object": "regunow.file",
"name": "policy.pdf",
"mime_type": "application/pdf",
"category": "file",
"bytes": 16384,
"status": "available",
"created_at": "2026-10-01T00:00:00Z",
"request_id": "request-uuid",
"usage": {"charged_microcredits":500,"charged_credits":0.0005}
}ファイルの一覧、取得、削除
| メソッド | エンドポイント | 動作 |
|---|---|---|
| GET | /api/v1/files | 利用可能なファイルを一覧表示します。limit の既定値は 20、範囲は 1–100 です。結果には data、has_more、next_after が含まれます。次のページには next_after を after として渡します。 |
| GET | /api/v1/files/{fileId} | ファイルのメタデータと状態(保留中、利用可能、失敗)を取得します。 |
| DELETE | /api/v1/files/{fileId} | ライブラリのファイルと分析・プレビューの生成物を完全に削除します。object: "regunow.file.deleted" と deleted: true を返します。 |
curl --fail-with-body \
"$REGUNOW_BASE_URL/api/v1/files?limit=20" \
-H "Authorization: Bearer $REGUNOW_API_KEY"同じアカウントのキーは、そのライブラリの利用可能なファイルにアクセスできます。存在しないファイルも他のアカウントのファイルも 404 を返します。1 アカウントで複数のユーザーに提供する場合、添付や削除の前に自分のアプリケーションでユーザー権限を確認してください。
保留中や失敗したアップロードは、クリーンアップが成功するまで容量を消費します。24 時間を超えた未完了アップロードはクリーンアップ対象です。利用可能なファイルはアップロード検証済みですが、抽出は質問時に行われるため、破損、暗号化、判読不能な文書は分析時に失敗することがあります。
8. クレジットと上限
回答生成、アップロード、削除は従量利用を記録します。モデルカタログやファイルメタデータの読み取りには個別のクレジット請求はありません。文書抽出と画像分析はチャットリクエストを通じて請求されます。
usage.charged_credits で処理の請求額を確認します。1 クレジットは 1,000,000 マイクロクレジットです。キーのクレジット上限はアカウントのクレジットとは別で、どちらもリクエストを制限する場合があります。設定 → API キーで使用量の確認と上限設定を行ってください。
| 制限 | 許容量 |
|---|---|
| API キー | アカウントごとに 25 個 |
| 同時実行の回答生成とファイル変更 | キーごとに 10 件 |
| 回答生成の JSON 本文 | 192 KiB |
| 回答生成ごとのメッセージ数 | 1–20 |
| メッセージ本文 | 1 メッセージあたり 32,000 文字、合計 64,000 文字 |
| 回答生成ごとの添付数 | 重複なしで 5 ファイル |
| 文書サイズ | 1 ファイルあたり 10 MiB |
| 画像サイズ | 1 ファイルあたり 5 MiB |
| ライブラリ容量 | アカウントのライブラリと共有で 5 GiB |
| 冪等性キー | 空白を除く印字可能な ASCII 文字 1–120 文字 |
| 再取得可能な期間 | 精算後 24 時間 |
各メッセージと添付が API 上限内でも、モデルのコンテキストと画像の制限は適用されます。キー予算は、作成時または前回の期間更新時を起点とした日次、週次、月次のローリング期間でリセットされます。
予算が残っている時点で開始したリクエストは、最終費用が生成後に確定するため、わずかな残額を多少超える場合があります。上限に達すると新しい回答生成とファイル変更は停止します。予約により同時リクエストが同じキー予算を重複して使うことを防ぎます。
9. 安全な再試行
回答生成、アップロード、アップロード完了、削除ごとに Idempotency-Key を送ってください。任意ですが、接続失敗後の処理や請求の重複を避けるため強く推奨します。
Idempotency-Key: a-unique-key-for-this-operation- 新しい処理ごとに一意のキーを生成し、元のリクエストとともに保存します。
- 同じ API キー、冪等性キー、変更のない入力で再試行します。精算後は 24 時間、保存されたステータスとレスポンスを再取得でき、追加のプロバイダー呼び出しや請求はありません。
- 再取得には
X-Idempotent-Replayed: trueが含まれます。異なる入力でのキー再使用や、最初のリクエストが処理中の場合は 409 を返します。 - 保存済み結果にはエラーも含まれます。同じキーを使うと、再実行せずに同じ失敗を返す場合があります。新しい処理を始める前に結果を確認してください。
- 再取得期間が過ぎると、同じキーの再使用でも新しいリクエストとなり、追加請求が発生する場合があります。
一時的なネットワーク、レート制限、サービスの障害には指数バックオフを使用してください。結果が不明なリクエストを解決する間は同じ冪等性キーを保持します。無効な入力、期限切れの認証情報、クレジット不足は原因を修正してから再試行してください。
ファイルを削除しても、再取得期間内のキャッシュ済み回答やアップロードのレスポンスは消えません。削除後のアップロード再取得は元のレスポンスを返し、ファイルを再作成しません。
10. エラー
エラーは一定の JSON 構造を使用します。処理には error.code を確認し、サポートへの問い合わせ時には request_id または X-Request-Id ヘッダーを保管してください。
{
"error": {
"type": "request_error",
"code": "invalid_request",
"message": "messages must contain 1 to 20 alternating user/assistant messages, end with a user message, and stay within 64,000 characters."
},
"request_id": "request-uuid"
}| ステータス | 主なコード | 対処方法 |
|---|---|---|
| 400 | invalid_request | JSON、許可されたフィールド、メッセージ、モデルオプション、ファイル ID を確認します。 |
| 401 | invalid_api_key | Bearer ヘッダーを確認し、期限切れ、無効化、削除されたキーを交換します。 |
| 402 | account_quota_exceeded, api_key_limit_exceeded | アカウントのクレジットとキーのクレジット上限を確認します。 |
| 403 | pro_required, legal_acceptance_required | Pro アクセスを復旧するか、所有者が Regunow で現行ポリシーに同意します。 |
| 404 | file_not_found | キー所有者のアカウントに属するファイルを使用します。 |
| 409 | idempotency_conflict, request_in_progress | 入力を変更する場合は新しいキーを使います。処理中の場合は待ってから元の処理を再試行します。 |
| 413 | request_too_large | メッセージやファイルを小さくします。ゲートウェイの本文上限が原因なら直接アップロードを使います。 |
| 415 | unsupported_media_type | エンドポイントが指定する Content-Type と、圧縮していないリクエスト本文を使用します。 |
| 429 | concurrency_limit_exceeded, upstream_rate_limited | 同時実行数を減らし、指数バックオフで再試行します。 |
| 502–504 | upstream_unavailable, upstream_timeout, service_unavailable, usage_settlement_failed | 一時的な障害は、間隔を延ばしながら同じ冪等性キーで再試行します。保存済みの失敗が再度返される場合があります。 |
