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

# GET /v1/runs/{run_id}/artifacts/{fmt}

> Download a finished run as CSV or GeoJSON — rendered on read, no export step.

Renders a completed run's stored result as a downloadable file. No export
job, no staging bucket — the artifact is rendered on read from the run
itself.

| `fmt`     | Shape                                                   |
| --------- | ------------------------------------------------------- |
| `csv`     | One row per location, spreadsheet-ready values          |
| `geojson` | A `FeatureCollection`, one `Point` feature per location |

```bash theme={null}
# Straight into a spreadsheet
curl -s "https://api.mireye.com/v1/runs/$RUN_ID/artifacts/csv" \
  -H "Authorization: Bearer $MIREYE_API_TOKEN" \
  -o screen.csv

# Straight onto a map
curl -s "https://api.mireye.com/v1/runs/$RUN_ID/artifacts/geojson" \
  -H "Authorization: Bearer $MIREYE_API_TOKEN" \
  -o screen.geojson
```

The artifact exists exactly as long as the run does — **30 days**. Rendering
one costs no credits; you already paid for the run. If you need it longer
than 30 days, download it.

The CSV flattens each field to its value. When you need the provenance for
each value — source, URL, timestamp, confidence — read the run body from
[`GET /v1/runs/{run_id}`](/api-reference/runs) instead, or re-fetch the
shortlist. A spreadsheet is a working artifact, not an audit trail.


## OpenAPI

````yaml GET /v1/runs/{run_id}/artifacts/{fmt}
openapi: 3.1.0
info:
  title: Mireye Earth
  description: >-
    Provenance-tagged geospatial data for US coordinates. POST /v1/fetch for
    deterministic field values (POST /v1/fetch/batch for up to 25 locations at
    once); POST /v1/ask for natural-language Q&A; GET /v1/meta/fields for the
    catalog.
  version: 0.16.0
servers: []
security: []
paths:
  /v1/runs/{run_id}/artifacts/{fmt}:
    get:
      summary: Download a completed run's result as a file
      description: >-
        Renders the run's stored result as a downloadable artifact: `csv` (one
        row per location, spreadsheet-ready values) or `geojson` (a
        FeatureCollection, one Point per location). Rendered on read — the
        artifact exists exactly as long as the run does (30 days).
      operationId: run_artifact_v1_runs__run_id__artifacts__fmt__get
      parameters:
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            title: Run Id
        - name: fmt
          in: path
          required: true
          schema:
            enum:
              - csv
              - geojson
            type: string
            title: Fmt
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    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

````