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

# Get an export and its download URL

> Read one export. While the file is being generated the status is `pending` or `running` and `download_url` is null — that is a normal poll, not an error. Once the status is `ready`, the response carries a **short-lived signed `download_url`**.

The URL is deliberately short-lived and freely re-fetchable: read this endpoint again at any time for a fresh one, for as long as the export lives. So there is never a reason to store or share the URL itself.

If the export `failed`, `error_reason` says why. Once the file has passed its 7-day deadline it is deleted and this endpoint returns 410 — request a new export to regenerate it. An export belonging to another organization returns 404, never 403.



## OpenAPI

````yaml /openapi.json get /flows/jobs/exports/{export_id}
openapi: 3.1.0
info:
  title: GetDialed API
  version: 0.1.0
servers:
  - url: https://api.getdialed.ai/v1
    description: Production
security: []
paths:
  /flows/jobs/exports/{export_id}:
    get:
      tags:
        - jobs
      summary: Get an export and its download URL
      description: >-
        Read one export. While the file is being generated the status is
        `pending` or `running` and `download_url` is null — that is a normal
        poll, not an error. Once the status is `ready`, the response carries a
        **short-lived signed `download_url`**.


        The URL is deliberately short-lived and freely re-fetchable: read this
        endpoint again at any time for a fresh one, for as long as the export
        lives. So there is never a reason to store or share the URL itself.


        If the export `failed`, `error_reason` says why. Once the file has
        passed its 7-day deadline it is deleted and this endpoint returns 410 —
        request a new export to regenerate it. An export belonging to another
        organization returns 404, never 403.
      operationId: get_jobs_export_flows_jobs_exports__export_id__get
      parameters:
        - name: export_id
          in: path
          required: true
          schema:
            type: string
            title: Export Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportResponse'
        '401':
          description: Missing or invalid authentication
          content:
            application/json:
              example:
                detail: Authentication required
        '404':
          description: >-
            No such export for this organization (cross-tenant access also
            returns 404)
          content:
            application/json:
              example:
                detail: Export not found
        '410':
          description: The export's file passed its deletion deadline and no longer exists
          content:
            application/json:
              example:
                detail: >-
                  This export has passed its 7-day deadline and the file has
                  been deleted. Request the export again to regenerate it.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded — retry after the Retry-After header
          headers:
            Retry-After:
              description: Seconds to wait before retrying
              schema:
                type: integer
          content:
            application/json:
              example:
                detail: 'Rate limit exceeded: 100 per 1 minute'
        '503':
          description: >-
            The export surface is not configured on this deployment — the
            request fails closed and no export record is created
          content:
            application/json:
              example:
                detail: >-
                  CSV export is not available on this deployment. No export was
                  created — contact support rather than retrying.
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    ExportResponse:
      properties:
        id:
          type: string
          title: Id
          description: Identifier of this export.
        status:
          type: string
          enum:
            - pending
            - running
            - ready
            - failed
            - expired
          title: Status
          description: >-
            Lifecycle state: pending, running, ready, failed, or expired once
            the file has passed its deletion deadline.
        row_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Row Count
          description: >-
            Number of rows in the generated file. Null until the export is
            ready.
        error_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Reason
          description: >-
            Why a failed export could not be produced: row_cap_exceeded when the
            filters matched more rows than one export may contain,
            source_unavailable when the records were no longer retained, or
            generation_failed. Null unless the export failed.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the export was requested.
        expires_at:
          type: string
          format: date-time
          title: Expires At
          description: >-
            When the generated file is deleted — 7 days after the export was
            requested.
        download_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Download Url
          description: >-
            Short-lived signed download URL, present once the export is ready.
            Re-read the export to get a fresh one.
        download_url_expires_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Download Url Expires At
          description: >-
            When this download URL stops working. The export itself lives until
            expires_at.
      type: object
      required:
        - id
        - status
        - created_at
        - expires_at
      title: ExportResponse
      description: >-
        An export and, once it is ready, how to download it.


        `status` moves from `pending` to `running` while the file is generated,
        then

        to `ready` — or to `failed` if the export could not be produced, in
        which

        case `error_reason` says why. `expired` means the file has passed its

        deletion deadline and is gone.


        `download_url` is a short-lived signed URL that appears once the export
        is

        ready. It expires quickly by design and is re-fetchable: read the export

        again whenever you need a fresh URL. The file itself is deleted 7 days
        after

        the export was created; after that, request the export again to
        regenerate it

        from the underlying jobs, for as long as those jobs are inside your
        retention

        window.
      example:
        created_at: '2026-08-11T12:00:00Z'
        download_url: https://example-bucket.s3.amazonaws.com/...
        download_url_expires_at: '2026-08-11T12:15:00Z'
        expires_at: '2026-08-18T12:00:00Z'
        id: exp_0123456789abcdef
        row_count: 1284
        status: ready
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    HTTPBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````