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

# Jobs

> Create, monitor, and export extraction jobs.

## Recommended flow

```bash theme={null}
# 1) Create job
okra jobs create ./report.pdf -o json

# 2) Wait for completion
okra jobs wait <job-id> --timeout 600

# 3) Fetch results
okra jobs results <job-id> -o json > results.json

# 4) Export
okra jobs export <job-id> -f markdown -o report.md
okra jobs export <job-id> -f xlsx -o report.xlsx
okra jobs export <job-id> -f docx -o report.docx
```

## Commands

```bash theme={null}
okra jobs create ./report.pdf
okra jobs create https://example.com/report.pdf
okra jobs list
okra jobs list --status completed
okra jobs list -l 10 -p 2          # limit 10, page 2
okra jobs get <job-id>
okra jobs get <job-id> --web        # open in browser
okra jobs results <job-id>
okra jobs results <job-id> --tables-only
okra jobs results <job-id> --text-only
okra jobs cancel <job-id>
```

### `jobs list` flags

| Flag                    | Description                                                     |
| ----------------------- | --------------------------------------------------------------- |
| `-s, --status <status>` | Filter by status: `queued`, `processing`, `completed`, `failed` |
| `-l, --limit <n>`       | Results per page (default: 20)                                  |
| `-p, --page <n>`        | Page number (default: 1)                                        |
| `-o, --output <format>` | Output format: `table`, `json`, `csv`                           |

Default sort: newest first. Combine with global `--json` for field filtering:

```bash theme={null}
okra jobs list --json job_id,filename,status -l 5
```

### `jobs cancel`

Cancel a running job (soft delete — marks status as `cancelled`).

```bash theme={null}
okra jobs cancel <job-id>
okra jobs cancel <job-id> -o json
```

Only jobs with status `queued`, `downloading`, `extracting`, or `processing` can be cancelled. Completed or failed jobs are already terminal.

**Bulk cancel** the last N jobs:

```bash theme={null}
okra jobs list --jq '.[-4:].[].job_id' | tr -d '"' | xargs -I{} okra jobs cancel {}
```

## Schema extraction

Run structured extraction against a completed job using a schema definition or template.

```bash theme={null}
# Using a template
okra jobs schema <job-id> --template invoice

# Using a JSON schema file
okra jobs schema <job-id> --schema ./my-schema.json

# Filter to specific pages
okra jobs schema <job-id> --template receipt --pages 1-3

# Include n8n Data Table mapping
okra jobs schema <job-id> --schema ./schema.json --n8n-reference -o json
```
