ベースURL
https://scantoexcel.ai/api/v1認証
すべてのAPIリクエストには、Authorization ヘッダーで送信するAPIキーが必要です。
Authorization: Bearer sk_live_your_api_key
APIキーはダッシュボードから無料で発行できます。キーが表示されるのは作成時の1回のみで、サーバーにはハッシュのみが保存されます。すぐにコピーしてください。ダッシュボードからいつでも再発行・無効化できます。抽出できるページ数はクレジットで決まります。
クイックスタート
書類の画像やPDFから、1回のAPI呼び出しでデータを抽出できます。
cURL
# JSON response curl -X POST https://scantoexcel.ai/api/v1/extract \ -H "Authorization: Bearer sk_live_your_api_key" \ -F "file=@receipt.jpg" \ -F "output=json" # Excel file straight to disk curl -X POST https://scantoexcel.ai/api/v1/extract \ -H "Authorization: Bearer sk_live_your_api_key" \ -F "file=@invoice.pdf" \ -F "output=xlsx" -o result.xlsx
Python
import requests
response = requests.post(
"https://scantoexcel.ai/api/v1/extract",
headers={"Authorization": "Bearer sk_live_your_api_key"},
files={"file": open("receipt.jpg", "rb")},
data={"output": "json"}
)
data = response.json()
print(data["title"]) # "Receipt"
print(data["rows"]) # [["Item", "Qty", "Price"], ...]JavaScript / Node.js
const form = new FormData();
form.append("file", fs.createReadStream("receipt.jpg"));
form.append("output", "json");
const res = await fetch("https://scantoexcel.ai/api/v1/extract", {
method: "POST",
headers: { Authorization: "Bearer sk_live_your_api_key" },
body: form,
});
const data = await res.json();
console.log(data.title); // "Receipt"
console.log(data.rows); // [["Item", "Qty", "Price"], ...]APIリファレンス
POST
/v1/extract書類の画像やPDFをアップロードすると、構造化された表データが返されます。AIが視覚的なレイアウトを解析し、すべてのテキストを正しい行と列に割り当てます。複数ページのPDFは、上から順に1つの rows 配列として返されます。料金は1ページにつき1クレジットで、抽出に失敗した場合は自動的に返還されます。
リクエスト (multipart/form-data)
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
file | File | はい | 画像(JPG、PNG、WebP)またはPDF(最大10ページ)。最大20 MB。 |
output | String | いいえ | "json"(デフォルト)、"xlsx"、または "csv"。JSONは構造化データを返します。xlsx/csvはファイルをバイナリ本文で返し、X-Extraction-Id、X-Pages、X-Credits-Used、X-Credits-Remaining ヘッダーが付きます。 |
detail | String | いいえ | "high"(デフォルト、情報量の多い書類向け)または "low"(高速、画像トークンが少ない)。 |
webhook_url | String | いいえ | 抽出完了時に結果全体がPOSTされるHTTPS URL。下記「Webhook」を参照してください。 |
レスポンス (JSON)
{
"id": "aB3dE9fGhIjK1LmN",
"status": "completed",
"title": "Receipt - Coffee Shop",
"rows": [
["Item", "Qty", "Price"],
["Latte", "2", "9.50"],
["Croissant", "1", "4.25"],
["", "Total", "13.75"]
],
"pages": 1,
"usage": {
"credits_used": 1,
"credits_remaining": 999
}
}レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
id | String | 永続的な抽出ID。GET /v1/extractions/{id} で使用します |
status | String | completed または failed |
title | String | AIが生成した書類のタイトル |
rows | String[][] | セル値の2次元配列。通常、1行目は見出しです。 |
pages | Number | 処理したページ数(=消費クレジット数) |
usage | Object | credits_used と credits_remaining(無制限プランでは null) |
レート制限
毎分60リクエスト (APIキーごと)
月1,000回のAPI呼び出し (APIプランの場合。料金を参照)
20 MB (最大ファイルサイズ)
10ページ (PDF1件あたりの上限、1ページにつき1クレジット)
さらに上限が必要ですか?エンタープライズプランについてはお問い合わせください。
Webhook
リクエストにHTTPSの webhook_url フォームフィールドを含めると、抽出完了後すぐにその宛先へ結果全体をPOSTします(配信タイムアウト8秒、再送なし)。
{
"event": "extraction.completed",
"id": "aB3dE9fGhIjK1LmN",
"status": "completed",
"title": "Invoice #1042",
"rows": [["Item", "Qty", "Price"], ...],
"pages": 1,
"usage": { "credits_used": 1, "credits_remaining": 999 }
}