REST API

ScanToExcel API

AIによる書類データ抽出をアプリに直接組み込めます。画像やPDFを送信すると、構造化された表データをJSON・.xlsx・CSVで受け取れます。

ベース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)

パラメータ型必須説明
fileFileはい画像(JPG、PNG、WebP)またはPDF(最大10ページ)。最大20 MB。
outputStringいいえ"json"(デフォルト)、"xlsx"、または "csv"。JSONは構造化データを返します。xlsx/csvはファイルをバイナリ本文で返し、X-Extraction-Id、X-Pages、X-Credits-Used、X-Credits-Remaining ヘッダーが付きます。
detailStringいいえ"high"(デフォルト、情報量の多い書類向け)または "low"(高速、画像トークンが少ない)。
webhook_urlStringいいえ抽出完了時に結果全体が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
  }
}

レスポンスフィールド

フィールド型説明
idString永続的な抽出ID。GET /v1/extractions/{id} で使用します
statusStringcompleted または failed
titleStringAIが生成した書類のタイトル
rowsString[][]セル値の2次元配列。通常、1行目は見出しです。
pagesNumber処理したページ数(=消費クレジット数)
usageObjectcredits_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 }
}

ScanToExcelで開発を始めましょう

APIキーを取得すれば、数分でデータ抽出を始められます。