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

# Download export

> Sends you to the file. The answer is a `302` to a signed link that works for 30 minutes, so tell your HTTP client to follow redirects. With curl, pass `-L`. The file is gzip.

Cost: Free.

Needs: Read.




## OpenAPI

````yaml /openapi.yaml get /exports/{export}/download
openapi: 3.1.0
info:
  title: Radarkit API
  version: 1.0.0
  summary: Your AI visibility data, outside the dashboard.
  description: >
    Radarkit tracks how AI assistants answer the questions your customers ask,
    and what each answer says about your brand. This API gives you that data as
    JSON.


    Every request needs an API key in the `Authorization` header. Every response
    has the same shape: `data`, `meta`, `credits` and `request_id`. Most calls
    cost 1 API credit. Heavier calls cost 2. Exports spend Export rows instead,
    one per row.
  contact:
    name: Radarkit support
    email: mail@radarkit.ai
    url: https://radarkit.ai
servers:
  - url: https://api.radarkit.ai/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Your key, your plan and both balances. Free.
  - name: Projects
    description: One project is one brand or website. Every other call needs a project id.
  - name: Topics
    description: Topics group prompts. Every prompt belongs to one topic.
  - name: Prompts
    description: The questions Radarkit asks every AI model on a schedule.
  - name: Visibility
    description: The daily visibility score per model, precomputed.
  - name: Responses
    description: One row per AI answer, with everything Radarkit found in it.
  - name: Sources
    description: The web pages AI answers cite or consult.
  - name: Competitors
    description: Who the answers recommend and how often.
  - name: Rankings
    description: Recommended domains with their position in the answer.
  - name: Query fanout
    description: The web searches a model ran before answering, one row per answer.
  - name: Web search
    description: How often the models searched and what they searched for, summarised.
  - name: Sentiment
    description: How the answers talk about your brand.
  - name: Exports
    description: >
      Thousands of rows as one gzip file. Four calls in order: estimate, create,
      poll, download.


      Estimate is free and returns the exact row count. Create charges that many
      Export rows and queues the job. Poll the export until its status is
      `ready`. Download follows a redirect to a signed link that works for 30
      minutes. Files are kept for 7 days.
  - name: Content
    description: Have the Content agent write an article for a prompt, then poll the run.
paths:
  /exports/{export}/download:
    get:
      tags:
        - Exports
      summary: Download export
      description: >
        Sends you to the file. The answer is a `302` to a signed link that works
        for 30 minutes, so tell your HTTP client to follow redirects. With curl,
        pass `-L`. The file is gzip.


        Cost: Free.


        Needs: Read.
      operationId: downloadExport
      parameters:
        - $ref: '#/components/parameters/export'
      responses:
        '200':
          description: >-
            The gzip file streamed directly, when a signed link is not
            available.
          content:
            application/gzip:
              schema:
                type: string
                format: binary
        '302':
          description: Follow the `Location` header to the file.
          headers:
            Location:
              description: A signed link to the gzip file, valid for 30 minutes.
              schema:
                type: string
                format: uri
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '402':
          description: '`PLAN_INACTIVE` or `OWNER_PLAN_INACTIVE`: a plan is not active.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            `SCOPE_MISSING`: the key has no Read permission.
            `PROJECT_FORBIDDEN`: the key cannot reach the export's project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: '`NOT_FOUND`: no export with that id that this key can see.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            `EXPORT_NOT_READY`: the export is still queued or running, or it
            failed or expired. `details.status` says which.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: EXPORT_NOT_READY
                  message: This export is running.
                  details:
                    status: running
                request_id: req_01j9x4x1d2e3f4g5h6i7j8k9l3
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    export:
      name: export
      in: path
      required: true
      description: The export id. From Create export or List exports.
      schema:
        type: string
        format: uuid
      example: 9b2f6a3e-1c4d-4e5f-8a9b-0c1d2e3f4a5b
  responses:
    Unauthenticated:
      description: >-
        `UNAUTHENTICATED`: no key, a wrong key, or a revoked or expired key.
        `KEY_IN_QUERY` (400) if the key was in the URL.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: UNAUTHENTICATED
              message: >-
                Missing or invalid API key. Send it as: Authorization: Bearer
                rk_live_YOUR_KEY
            request_id: req_01j9x4q7z8y9x0w1v2u3t4s5r6
    RateLimited:
      description: >-
        `RATE_LIMITED`: too many calls. Wait the seconds in `Retry-After` and
        send the same request again. Nothing was charged.
      headers:
        Retry-After:
          description: Seconds to wait.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RATE_LIMITED
              message: Too many requests. Slow down and retry.
              details:
                retry_after: 21
            request_id: req_01j9x4r2s3t4u5v6w7x8y9z0a1
  schemas:
    Error:
      type: object
      description: Every failed call has this shape and no `data`.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Stable. Build on this, not on the message.
            message:
              type: string
              description: For people. May change.
            details:
              description: >-
                More when there is more to say. Which field failed, how long to
                wait, which id already exists.
              oneOf:
                - type: object
                - type: array
                  items:
                    type: object
        request_id:
          $ref: '#/components/schemas/RequestId'
    RequestId:
      type: string
      description: >-
        A unique id for this call. Also in the `X-Request-Id` header. Quote it
        when you contact support.
      example: req_01j9x4m2p7q8r9s0t1u2v3w4x5
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your API key. Create one in Settings, API keys. Send it as
        `Authorization: Bearer rk_live_YOUR_KEY`.

````