メインコンテンツまでスキップ

クイックスタート

5分で最初のAPI呼び出しを行いましょう。

前提条件​

  • PROOFアカウント(ウェブアプリで登録)
  • APIキー(開発者ポータルで作成)
  • curlまたはHTTPクライアント

ステップ1:APIキーを取得​

  1. PROOFウェブアプリにログインします
  2. 開発者ポータル(/developer)に移動します
  3. キー作成をクリックします
  4. 完全なキーをコピーします — 一度のみ表示されます

ステップ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}")

次のステップ​