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

# Download a published version as CSV

> A published shortlist version as CSV, the same file the client downloads from their portal: rank, tier, name, title, company, location, LinkedIn address and why each person is on it; or as JSON Lines with format=jsonl. Columns: rank, tier, gaps, name, title, company, location, profile_url, evidence, snapshot_id, snapshot_version, snapshot_hash, canonical_shortlist_hash, generated_at. UTF-8 with a byte order mark, so Excel reads it as written. ?format=jsonl returns JSON Lines instead: one person per line, as get_shortlist_version lists them, with version_id and version. Does not use credits.

Needs scope `shortlists:read`.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/shortlist/versions/{versionId}.csv
openapi: 3.1.0
info:
  title: Revcenter API
  version: v1
  description: >-
    Projects, searches, scored candidates and shortlists. Generated from the
    agent API's registry.
servers:
  - url: https://api.revcenter.ai/v1
security:
  - bearer: []
tags:
  - name: Login
  - name: Account
  - name: Actions
  - name: Reference
  - name: Projects
  - name: Searches
  - name: Scoring
  - name: Shortlists
  - name: Candidates
  - name: Webhooks
  - name: Health
paths:
  /projects/{projectId}/shortlist/versions/{versionId}.csv:
    get:
      tags:
        - Shortlists
      summary: Download a published version as CSV
      description: >-
        A published shortlist version as CSV, the same file the client downloads
        from their portal: rank, tier, name, title, company, location, LinkedIn
        address and why each person is on it; or as JSON Lines with
        format=jsonl. Columns: rank, tier, gaps, name, title, company, location,
        profile_url, evidence, snapshot_id, snapshot_version, snapshot_hash,
        canonical_shortlist_hash, generated_at. UTF-8 with a byte order mark, so
        Excel reads it as written. ?format=jsonl returns JSON Lines instead: one
        person per line, as get_shortlist_version lists them, with version_id
        and version. Does not use credits.


        Needs scope `shortlists:read`.
      operationId: export_shortlist_version
      parameters:
        - name: projectId
          in: path
          required: true
          description: A project id
          schema:
            type: string
        - name: versionId
          in: path
          required: true
          description: A published version id
          schema:
            type: string
        - name: format
          in: query
          required: false
          description: >-
            csv (the default) for a spreadsheet, with a UTF-8 byte order mark;
            jsonl for JSON Lines: one person per line with the whole read
            profile, lossless, for an AI agent
          schema:
            type: string
            enum:
              - csv
              - jsonl
      responses:
        '200':
          description: OK
          headers:
            X-RateLimit-Limit:
              description: >-
                Requests allowed this minute (the tighter of the key's and the
                workspace's).
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left this minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute resets, in Unix seconds.
              schema:
                type: integer
          content:
            text/csv:
              schema:
                type: string
              example: >
                rank,tier,gaps,name,title,company,location,profile_url,evidence,snapshot_id,snapshot_version,snapshot_hash,canonical_shortlist_hash,generated_at

                1,tier1,,Dana Whitfield,Plant Controller,Garden State
                Foods,"Cherry Hill,
                NJ",https://www.linkedin.com/in/example,Qualified
                match,9a7c5e3b-1d2f-4a6b-8c0d-2e4f6a8b0c13,2,5f0c…,b81e…,2026-10-18T15:20:04.000Z
            application/x-ndjson:
              schema:
                type: string
                description: 'format=jsonl: one JSON object per line.'
              example: >
                {"rank":1,"id":"3c2b1a09-8f7e-4d6c-9b5a-4e3d2c1b0a99","name":"Dana
                Whitfield","title":"Plant Controller","company":"Garden State
                Foods","location":"Cherry Hill,
                NJ","linkedin_url":"https://www.linkedin.com/in/example","why":["Qualified
                match"],"tier":"tier1","gaps":[],"version_id":"9a7c5e3b-1d2f-4a6b-8c0d-2e4f6a8b0c13","version":2}
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '402':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '409':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/Error'
        '500':
          $ref: '#/components/responses/Error'
        '503':
          $ref: '#/components/responses/Error'
components:
  responses:
    Error:
      description: 'An error: one envelope everywhere. A 429 carries Retry-After.'
      headers:
        X-RateLimit-Limit:
          description: >-
            Requests allowed this minute (the tighter of the key's and the
            workspace's).
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests left this minute.
          schema:
            type: integer
        X-RateLimit-Reset:
          description: When the minute resets, in Unix seconds.
          schema:
            type: integer
        Retry-After:
          description: Seconds to wait (on 429 and 503).
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: 'Stable: every code is on the Errors page.'
            message:
              type: string
            details:
              type:
                - object
                - 'null'
              description: >-
                Structured specifics, when there are any (for example
                retry_after_seconds).
            request_id:
              type: string
        meta:
          $ref: '#/components/schemas/Meta'
      example:
        error:
          code: search_not_found
          message: No search with that id in this workspace.
          details: null
          request_id: req_01JABCDEF
        meta:
          request_id: req_01JABCDEF
    Meta:
      type: object
      properties:
        request_id:
          type: string
        total:
          type: integer
          description: On lists that count everything that matched.
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: An API key from Settings → Usage → API (rvc_live_…).

````

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