---
title: "Extract File"
method: POST
path: "/api/v1/extract"
tags: ["Extraction"]
---

# Extract File

`POST /api/v1/extract`

Upload and process a PDF or Excel bank statement for extraction.

Provide either ``file`` (binary upload) or ``file_url``.

Args:
    file: The PDF or Excel file to extract data from
    file_url: URL pointing to a supported file (alternative to file upload)
    password: Optional password for encrypted PDFs

## Response `200`

Successful Response

- ExtractionResponse — Response model for extraction endpoints
  - `success` boolean, required — Whether the request was successful
  - `message` string, required — Human-readable message
  - `request_id` string — Unique identifier for the request
  - `job_id` string, required — Unique identifier for the extraction job
  - `status` 'uploaded' | 'queued' | 'processing' | 'completed' | 'failed' | 'signin_required' | 'expired', required — Standardized status codes for the API
  - `deduplicated` boolean — True if this response refers to an existing in-flight job for identical content

## Other responses

- `400` — Invalid input
- `422` — Validation Error
- `500` — Processing error

---

[API](https://skmtc.dev/razorextract/apis/razor-extract-api.md) · [All operations](https://skmtc.dev/razorextract/apis/razor-extract-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/razorextract/razor-extract-api/revisions/21de962e43c4/schema)
