クイックスタート
5分で最初のAPI呼び出しを行いましょう。
前提条件
- PROOFアカウント(ウェブアプリで登録)
- APIキー(開発者ポータルで作成)
curlまたはHTTPクライアント
ステップ1:APIキーを取得
- PROOFウェブアプリにログインします
- 開発者ポータル(
/developer)に移動します - キー作成をクリックします
- 完全なキーをコピーします — 一度のみ表示されます
ステップ2:アカウントを確認
キーが機能することを確認し、クレジット残高を確認します:
curl -H "X-API-Key: chu_live_xxxxxxxx" \
https://your-domain.com/api/v1/account
レスポンス:
{
"user_id": "uuid",
"email": "user@example.com",
"points_balance": 10000,
"today_usage": { "points_spent": 0, "requests": 0 }
}
ステップ3:ファイルをアップロード
PDFをアップロードし、コストプレビューを取得します(まだクレジットは消費されません):
curl -X POST https://your-domain.com/api/v1/jobs/upload \
-H "X-API-Key: chu_live_xxxxxxxx" \
-F "files=@document.pdf" \
-F "ocr_model=premium"
レスポンス:
{
"job_id": "job-abc123",
"status": "pending",
"file_type": "pdf",
"total_pages": 10,
"cost": { "pages": 10, "points": 50, "usd": "$0.05" },
"balance": 10000
}
ステップ4:ジョブを確認
確認するとクレジットが差し引かれ、処理が開始されます:
curl -X POST https://your-domain.com/api/v1/jobs/job-abc123/confirm \
-H "X-API-Key: chu_live_xxxxxxxx"
レスポンス:
{
"job_id": "job-abc123",
"status": "queued",
"remaining_points": 9950
}
ステップ5:完了をポーリング
ステータスがdoneになるまで確認します:
curl -H "X-API-Key: chu_live_xxxxxxxx" \
https://your-domain.com/api/v1/jobs/job-abc123
レスポンス(完了時):
{
"job_id": "job-abc123",
"status": "done",
"total_pages": 10,
"done_pages": 10,
"cost_points": 50,
"downloadable": true
}
ステップ6:結果をダウンロード
結果ファイルをダウンロードするための署名付きURLを取得します:
curl -H "X-API-Key: chu_live_xxxxxxxx" \
"https://your-domain.com/api/v1/jobs/job-abc123/download?type=xlsx_basic"
レスポンス:
{
"download_url": "https://supabase-storage.example.com/results/job-abc123/result.xlsx?token=..."
}
Python例
import requests
API_KEY = "chu_live_xxxxxxxx"
BASE = "https://your-domain.com/api/v1"
HEADERS = {"X-API-Key": API_KEY}
# アップロード
with open("document.pdf", "rb") as f:
resp = requests.post(f"{BASE}/jobs/upload", headers=HEADERS,
files={"files": f}, data={"ocr_model": "premium"})
job_id = resp.json()["job_id"]
# 確認
requests.post(f"{BASE}/jobs/{job_id}/confirm", headers=HEADERS)
# ポーリング
import time
while True:
status = requests.get(f"{BASE}/jobs/{job_id}", headers=HEADERS).json()
if status["status"] in ("done", "error"):
break
time.sleep(5)
# ダウンロード
url = requests.get(f"{BASE}/jobs/{job_id}/download?type=csv_basic",
headers=HEADERS).json()["download_url"]
print(f"ダウンロード: {url}")