一括処理は、小さなジョブの安全な繰り返しです
APIはPDFごとに作成、状態確認、ダウンロードという流れで処理します。一括変換では、その流れをファイルごとに繰り返します。安定したIdempotency-Keyを付けると再実行時に既存ジョブを再利用でき、制限付きのワーカープールを使うとAPIや自分のプランを圧迫せずに並列化できます。数件から数千件まで基本構造は同じです。
4ステップで変換します
各PDFを独立したジョブとして処理します。安定したIdempotency-Keyと上限付きの並列処理を使うと、安全に再開できます。
ファイルを列挙する
フォルダー内の各PDFを順に読み、ファイル名または内容ハッシュをIdempotency-Keyにします。
ジョブを作成して待つ
各ファイルを /api/v2/jobs へ送り、ready または error になるまで状態を確認します。
結果を保存する
ready のジョブから /download を取得し、元のPDFと対応する .md 名で保存します。
失敗だけを再実行する
error_code とファイル名を記録し、成功済みのジョブを重複させずに再開します。
文書構造を保ったMarkdown
並列数を制限
最初は同時5件程度の小さなプールから始め、プランのスロット数に合わせて調整します。
冪等な再試行
ファイルごとの安定したキーにより、クラッシュ後の再実行でも完了済みジョブを再利用します。
Webhook
大量処理ではポーリングを増やさず、完了イベントをWebhookで受け取れます。
任意の言語
Python、Node.js、Go、cURLの単一ファイル処理をループで包めます。
フォルダーを順番に変換する例
コード、エンドポイント、ヘッダー名は英語版と同じ契約をそのまま使います。
API="https://pdf2md.dev/api/v2"
AUTH="Authorization: Bearer p2m_your_key"
for pdf in *.pdf; do
# filename as the Idempotency-Key: a rerun reuses the same job
JID=$(curl -fsS -X POST "$API/jobs" -H "$AUTH" \
-H "Idempotency-Key: $pdf" -F file=@"$pdf" | jq -r .job_id)
until [ "$(curl -fsS "$API/jobs/$JID" -H "$AUTH" | jq -r .status)" = "ready" ]; do
sleep 3
done
curl -fsS "$API/jobs/$JID/download" -H "$AUTH" -o "${pdf%.pdf}.md"
echo "converted $pdf"
done
この例は分かりやすさのため直列です。 実運用では、上限付きワーカープール、error状態の処理、truncated の確認、Webhook通知を追加します。
失敗したファイルを記録して処理を続けます
暗号化、破損、サイズ超過などで一部のPDFが失敗しても、一括処理全体を停止させません。status: error と error_code をログへ残し、成功したMarkdownと要確認リストを分けます。長い文書では truncated も確認し、一部結果を完全な結果として登録しないようにします。
よくある質問
複数のPDFを一度に変換する方法は?
ファイルごとに作成、状態確認、ダウンロードを繰り返します。各ファイルへIdempotency-Keyを付け、並列数を制限します。
単一のbulkエンドポイントはありますか?
変換単位は一つのジョブです。一括処理は複数ジョブをまとめて管理する形で、スロット数を超えないようにします。
再実行で重複させない方法は?
ファイル名または内容ハッシュを安定したIdempotency-Keyとして送ります。同じキーは同じジョブを返します。
同時に何件処理できますか?
小さな並列数から始め、プランのスロットと同時変換上限に合わせます。無料プランの上限は低く設定されています。
Webhookを使えますか?
はい。大量処理では、各ジョブの完了をWebhookで受け取る方が多数のポーリングより効率的です。
どの言語で実装できますか?
任意です。Python、Node.js、Go、cURLのガイドにある単一ファイル処理をループで包めます。