> ## Documentation Index
> Fetch the complete documentation index at: https://docs.exterview.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Bulk Ingest (REST)

> Typed REST routes for bulk candidate and job ingestion.

<Warning>
  Blocked from publishing until the auth and gating checklist in [Authentication
  & Scopes](/get-started/authentication) lands.
</Warning>

## Purpose

Typed REST routes for loading candidates and jobs in bulk, plus a status route to poll progress.

## Published routes

| Endpoint                                         | Why                                            |
| ------------------------------------------------ | ---------------------------------------------- |
| `GET /api/health`                                | Liveness check, no auth required               |
| `POST /api/candidates/bulk-upload-resumes`       | Typed candidate ingest, `write` scope          |
| `GET /api/candidates/bulk-upload-status/{jobId}` | Poll bulk-upload progress                      |
| `POST /api/jobs/add-by-file`                     | Typed job ingest from a JD file, `write` scope |

<Warning>
  `POST /api/upload` is **not** published. Generic blob upload is an abuse and
  quota risk. Partners must ingest through the typed routes above.
</Warning>

## FAQs

<AccordionGroup>
  <Accordion title="How do we track a bulk upload?">
    Poll `GET /api/candidates/bulk-upload-status/{jobId}` until it reports complete.
  </Accordion>

  <Accordion title="Can we upload arbitrary files?">
    No. The generic upload route is not published. Use the typed candidate and job
    ingest routes.
  </Accordion>

  <Accordion title="What scope do ingest routes need?">
    The `write` scope. The health check needs no auth.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Jobs & Candidates" icon="briefcase" href="/supporting/jobs-candidates">
    The single-record CRUD behind these batch routes.
  </Card>

  <Card title="Developer Preview" icon="arrows-rotate" href="/api-reference/introduction">
    The pattern for polling asynchronous results.
  </Card>
</CardGroup>
