---
title: "Generate multiple PDFs"
method: POST
path: "/submissions/batches"
tags: ["Submission Batches"]
---

# Generate multiple PDFs

`POST /submissions/batches`

Generates up to 50 PDFs in a single request. Each submission can use a different template
and data. Supports both synchronous (wait for all PDFs) and asynchronous processing. More
efficient than individual requests when creating multiple PDFs.

See also:
- [Batch and Combine PDFs](https://docspring.com/docs/api-guide/generate-pdfs/batch-generate-pdfs/) - Generate and merge PDFs in one request

## Query parameters

- `wait` boolean

## Request body

- object
  - `metadata` object
  - `submissions` object[], required
    - `css` string
    - `data` object
    - `html` string
    - `metadata` object
    - `template_id` string, nullable
    - `template_version` string, nullable
    - `test` boolean
  - `template_id` string, nullable
  - `template_version` string, nullable
  - `test` boolean

## Response `200`

some PDFs with invalid data

- object
  - `status` 'success' | 'error', required
  - `error` string
  - `errors` string[]
  - `submission_batch` SubmissionBatch, required
    - `id` string, nullable, required
    - `state` 'pending' | 'processed' | 'error', required
    - `metadata` object, required
    - `processed_at` string, nullable, required
    - `total_count` integer, required
    - `pending_count` integer, required
    - `error_count` integer, required
    - `completion_percentage` number, required
  - `submissions` object[], required
    - `status` 'success' | 'error' | 'valid_but_not_saved', required
    - `errors` string[]
    - `submission` SubmissionPreview
      - `batch_id` string, nullable, required
      - `data_requests` SubmissionDataRequest[], required
        - `id` string, nullable, required
        - `email` string, nullable, required
        - `name` string, nullable, required
        - `order` integer, nullable, required
        - `sort_order` integer, required
        - `fields` string[], nullable, required
        - `metadata` object, nullable, required
        - `state` 'pending' | 'completed', required
        - `viewed_at` string, nullable, required
        - `completed_at` string, nullable, required
        - `data` object, nullable, required
        - `auth_type` 'none' | 'password' | 'oauth' | 'email_link' | 'phone_number' | 'ldap' | 'saml', required
        - `auth_second_factor_type` 'none' | 'phone_number' | 'totp' | 'mobile_push' | 'security_key' | 'fingerprint', required
        - `auth_provider` string, nullable, required
        - `auth_session_started_at` string, nullable, required
        - `auth_session_id_hash` string, nullable, required
        - `auth_user_id_hash` string, nullable, required
        - `auth_username_hash` string, nullable, required
        - `auth_phone_number_hash` string, nullable, required
        - `ip_address` string, nullable, required
        - `user_agent` string, nullable, required
      - `editable` boolean, nullable, required
      - `error_message` string, nullable, required
      - `expired` boolean, required
      - `expires_at` string, nullable, required
      - `id` string, nullable, required
      - `json_schema_errors` string[], nullable, required
      - `metadata` object, required
      - `password` string, nullable, required
      - `processed_at` string, nullable, required
      - `state` 'pending' | 'processed' | 'invalid_data' | 'error' | 'image_download_failed' | 'image_processing_failed' | 'waiting_for_data_requests' | 'syntax_error' | 'account_suspended' | 'license_revoked' | 'accidental', required
      - `template_id` string, nullable, required
      - `template_type` 'pdf' | 'html', required
      - `template_version` string, nullable, required
      - `test` boolean, required
      - `truncated_text` object, nullable, required
      - `pdf_hash` string, nullable, required
      - `download_url` string, nullable, required
      - `permanent_download_url` string, nullable, required
      - `preview_download_url` string, nullable, required
      - `preview_generated_at` string, nullable, required
      - `audit_trail_download_url` string, nullable, required
      - `actions` SubmissionAction[], required
        - `id` string, nullable, required
        - `integration_id` string, nullable, required
        - `state` 'pending' | 'processed' | 'failed' | 'error', required
        - `action_type` 'webhook' | 'slack_webhook' | 'email' | 'aws_s3_upload', required
        - `action_category` 'notification' | 'file_upload', required
        - `result_data` object, required
        - `error_message` string, nullable, required

## Other responses

- `201` — submissions created
- `400` — invalid JSON
- `401` — authentication failed
- `422` — array of arrays

---

[API](https://skmtc.dev/docspring/apis/docspring-api.md) · [All operations](https://skmtc.dev/docspring/apis/docspring-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/docspring/docspring-api/revisions/5726657b9432/schema)
