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

PDF のダウンロード

生成済みのPDFファイルを取得するエンドポイントです。requestId を指定すると1リクエスト分をまとめてZIPで、requestId と fileId を指定すると個別のPDFとしてダウンロードできます。どちらも認証が必要で(appkey ヘッダー、または OAuth 2.0 のアクセストークン)、非同期生成の完了後やWebhook受信後の回収に使います。

ZIP一括ダウンロード​

エンドポイント情報​

  • URL: https://api.re-port-flow.com/v1/file/download/{requestId}
  • メソッド: GET
  • 認証: アプリケーションキー(appkey ヘッダー)が必要

レスポンス (200 OK)​

レスポンスボディ: ZIPファイル(バイナリ)

ヘッダー説明例
Content-Typeコンテンツタイプapplication/zip
Content-Lengthファイルサイズ(バイト)307200
Content-Dispositionファイル名。<テンプレート名>_<requestId>.zip を URL エンコードした値attachment; filename="%E8%AB%8B%E6%B1%82%E6%9B%B8_kZ3mP9qL2xV7nR4t.zip"(テンプレート名が「請求書」の場合)

使用例​

cURL​

curl -X GET https://api.re-port-flow.com/v1/file/download/kZ3mP9qL2xV7nR4t \
-H "appkey: your-app-key" \
--output output.zip

JavaScript​

async function downloadZip(requestId) {
const response = await axios.get(
`https://api.re-port-flow.com/v1/file/download/${requestId}`,
{
headers: { 'appkey': process.env.APP_KEY },
responseType: 'arraybuffer'
}
);

fs.writeFileSync('output.zip', response.data);
return response.data;
}

個別PDFダウンロード​

エンドポイント情報​

  • URL: https://api.re-port-flow.com/v1/file/download/{requestId}/{fileId}
  • メソッド: GET
  • 認証: アプリケーションキー(appkey ヘッダー)が必要

レスポンス (200 OK)​

レスポンスボディ: PDFファイル(バイナリ)

ヘッダー説明例
Content-Typeコンテンツタイプapplication/pdf
Content-Lengthファイルサイズ(バイト)102400
Content-Dispositionファイル名attachment; filename="invoice.pdf"
File-IDファイルIDHn4sT8wQ1cV6bX2e

使用例​

cURL​

curl -X GET https://api.re-port-flow.com/v1/file/download/kZ3mP9qL2xV7nR4t/Hn4sT8wQ1cV6bX2e \
-H "appkey: your-app-key" \
--output invoice.pdf

JavaScript​

async function downloadFile(requestId, fileId) {
const response = await axios.get(
`https://api.re-port-flow.com/v1/file/download/${requestId}/${fileId}`,
{
headers: { 'appkey': process.env.APP_KEY },
responseType: 'arraybuffer'
}
);

const returnedFileId = response.headers['file-id'];
console.log('ダウンロードしたファイルID:', returnedFileId);

return response.data;
}

エラーレスポンス​

エラー本文の形式とコードの一覧は エラーコード一覧 を参照してください。

ステータスcode意味対処
404FILE_NOT_FOUNDrequestId / fileId の誤り、別のワークスペースの requestId(存在を知らせないため 403 ではなく 404)、失敗から 24 時間を過ぎた単一生成(ジョブの記録が消え、失敗とは判定できない)、または出力が削除された(正常に生成した後にファイルが残っていない)生成 API のレスポンスの値と、生成時と同じワークスペースの認証情報を使っているか確認
409FILE_NOT_READYまだ生成中Retry-After(秒)待って再送するか、生成状態の取得 で完了を待つ
422FILE_GENERATION_FAILEDそのリクエスト(または指定したファイル)の生成が失敗した生成状態の取得 の error / failedFiles で理由を確認し、生成し直す
以前の挙動からの変更

以前は、生成中のファイルをダウンロードしようとしても 404 が返っていました。現在は生成中なら 409 FILE_NOT_READY、生成失敗なら 422 FILE_GENERATION_FAILED を返します。404 は、ID の誤り・別のワークスペースの ID、失敗から 24 時間を過ぎた単一生成・出力の削除を意味します(生成中でも、ジョブの記録が無い場合は 404 になります)。404 を「生成中」とみなしてポーリングしていた実装は、生成状態の取得 を使う形に置き換えてください。

404 Not Found​

{
"statusCode": 404,
"code": "FILE_NOT_FOUND",
"message": "File not found: kZ3mP9qL2xV7nR4t",
"error": "Not Found",
"details": [],
"docsUrl": "https://doc.re-port-flow.com/en/docs/guides/error-codes#file_not_found"
}

409 Conflict​

HTTP/1.1 409 Conflict
Retry-After: 2
Content-Type: application/json

{
"statusCode": 409,
"code": "FILE_NOT_READY",
"message": "The file is still being generated. Retry after 2 seconds or poll GET /v1/file/status/kZ3mP9qL2xV7nR4t.",
"error": "Conflict",
"details": [],
"docsUrl": "https://doc.re-port-flow.com/en/docs/guides/error-codes#file_not_ready",
"retryAfter": 2
}

422 Unprocessable Entity​

{
"statusCode": 422,
"code": "FILE_GENERATION_FAILED",
"message": "PDF generation failed for this request (PARAMS_TYPE_MISMATCH). See GET /v1/file/status/kZ3mP9qL2xV7nR4t for the reason.",
"error": "Unprocessable Entity",
"details": [],
"docsUrl": "https://doc.re-port-flow.com/en/docs/guides/error-codes#file_generation_failed"
}

ユースケース​

ZIP内の特定ファイルのみダウンロード​

// async/multiple のレスポンスから requestId と files を取得済みとする
async function downloadSpecificFile(requestId, files) {
const targetFile = files.find(f => f.fileName === 'invoice_001.pdf');

if (targetFile) {
const pdfData = await downloadFile(requestId, targetFile.fileId);
fs.writeFileSync('invoice_001.pdf', pdfData);
}
}

よくある質問​

requestId と fileId、どちらでダウンロードすればよいですか​

リクエスト単位でまとめて取得したい場合は requestId のみでZIP一括ダウンロードを使います。生成した中の1ファイルだけが必要な場合は requestId と fileId の両方を指定して個別PDFダウンロードを使ってください。

404エラーが返ってきた場合はどうすればよいですか​

404(FILE_NOT_FOUND)は、requestId / fileId の誤り、別のワークスペースの ID、失敗から 24 時間を過ぎた単一生成、または出力が削除されたことを意味します。失敗が疑われるときは、生成直後のうちに 422 / 生成状態の取得 で確認してください。生成 API のレスポンスに含まれる値をそのまま使っているか、生成時と同じワークスペースの認証情報を使っているかを確認してください。生成中の場合は通常 409 FILE_NOT_READY が返ります(ジョブの記録を保存できなかったリクエストだけは、生成中でも 404 になります)。

生成が終わったかどうかはどう確認すればよいですか​

生成状態の取得(GET /v1/file/status/{requestId})で status が completed になるのを待つか、Webhook 通知 の file.completed を受け取ってください。失敗の通知(file.failed)は、生成リクエストで webhookUrl を指定した場合だけ、その宛先に届きます。ダウンロード API を繰り返し呼んで確認する必要はありません。

次のステップ​