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

# Get a Parse Job

> Check a parse job and get its result: Markdown, per-page output and extracted JSON.

Returns the job's status. While it runs, `progress` says which page it is on (`{ "message": "Reading page 3 of 12", "done": 3, "total": 12 }`). Once `status` is `completed`, the response has the full result, the same shape [POST /parse](/api-reference/parse/parse) returns. Add `?pages=true` to include per-page Markdown.

```bash theme={null}
curl "https://api.spidra.io/api/parse/9de383e6-fd5a-4c82-b3dd-f4dc73647aa8?pages=true" \
  -H "Authorization: Bearer $SPIDRA_API_KEY"
```

A failed job has `status: "failed"` and an `error` such as `"This PDF is password protected. Remove the password and try again."`. It isn't charged.


## OpenAPI

````yaml GET /parse/{jobId}
openapi: 3.1.0
info:
  title: Spidra API
  version: 1.0.0
  description: >-
    Public API endpoints for web scraping via Spidra. Authenticate with
    `Authorization: Bearer YOUR_API_KEY`.
servers:
  - url: https://api.spidra.io/api
security:
  - BearerAuth: []
  - ApiKeyAuth: []
paths:
  /parse/{jobId}:
    get:
      tags:
        - Parse
      summary: Get a Parse Job
      parameters:
        - name: jobId
          in: path
          required: true
          schema:
            type: string
        - name: pages
          in: query
          required: false
          schema:
            type: boolean
          description: Include per-page Markdown.
      responses:
        '200':
          description: The job, with its result once completed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobId:
                    type: string
                  status:
                    type: string
                    enum:
                      - queued
                      - running
                      - completed
                      - failed
                  fileName:
                    type:
                      - string
                      - 'null'
                  sourceUrl:
                    type:
                      - string
                      - 'null'
                  fileId:
                    type:
                      - string
                      - 'null'
                    description: Parse the same file again with other options for 24 hours.
                  format:
                    type:
                      - string
                      - 'null'
                  totalPages:
                    type:
                      - integer
                      - 'null'
                  pagesParsed:
                    type:
                      - integer
                      - 'null'
                  creditsUsed:
                    type: integer
                  error:
                    type: string
                    description: Why the document failed. Failed documents aren't charged.
                  progress:
                    type: object
                    properties:
                      message:
                        type: string
                      done:
                        type: integer
                      total:
                        type: integer
                  markdown:
                    type: string
                  pages:
                    type: array
                    items:
                      type: object
                      properties:
                        pageNumber:
                          type: integer
                        markdown:
                          type: string
                        method:
                          type: string
                          enum:
                            - text
                            - ocr
                          description: 'text: the page''s own text; ocr: read with AI'
                        error:
                          type: string
                    description: With includePages (or ?pages=true).
                  json:
                    description: Extracted fields, when prompt or schema was given.
                  warnings:
                    type: array
                    items:
                      type: string
                  metadata:
                    type: object
                    properties:
                      fileName:
                        type:
                          - string
                          - 'null'
                      sourceUrl:
                        type:
                          - string
                          - 'null'
                      format:
                        type: string
                      totalPages:
                        type: integer
                      pagesParsed:
                        type: integer
                      ocrPages:
                        type: integer
                  durationMs:
                    type:
                      - integer
                      - 'null'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        status:
          type: string
          enum:
            - error
        message:
          type: string
      required:
        - status
        - message
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.