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

# Get a download link

> A download link for one file of `GET /files/`, by its `id`: `url`, signed and valid one hour, fetched as is without your API key, and `next_step`, a ready-to-run call per provider for the live profile behind any row. A file not unlocked for this workspace answers `403`, its `error` saying how to unlock it. Free.



## OpenAPI

````yaml /openapi.json post /files/{file_id}/download-link/
openapi: 3.1.0
info:
  title: Datacircle API
  version: '1'
  description: >-
    Datacircle is a data co-op.


    Step 1: Query your favorite B2B data APIs through us. Same request, same
    price, no markup.


    Step 2: You're DONE. Every morning, you get the flat file of your data plus
    everyone else's.


    You send the provider's own request to api.datacircle.dev, with your
    Datacircle key. That's the only change.


    Right now we have 3 live LinkedIn profile APIs that we trust: Up2Data,
    HarvestAPI and Fetchin. Each request goes to the provider and gets the
    profile as it is today.


    Add \$50 to your account: you get \$50 of API PLUS the flat file.


    Sign up at datacircle.dev with your work email: a \$5 credit, that's 2,105
    LinkedIn profiles at \$2.375 per 1,000.


    Use it from Claude, ChatGPT or Cursor: add api.datacircle.dev/mcp as an MCP
    server.


    The docs: [docs.datacircle.dev](https://docs.datacircle.dev).
  termsOfService: https://datacircle.dev/terms
  contact:
    name: Datacircle
    url: https://datacircle.dev
    email: wayne@datacircle.dev
  x-logo:
    url: https://datacircle.dev/favicon.png
    altText: Datacircle
servers:
  - url: https://api.datacircle.dev
security:
  - token: []
tags:
  - name: Datacircle
    description: 'Your Datacircle account: balance, adding funds, files, API key.'
  - name: Up2Data
    description: >-
      LinkedIn Profile API: Up2Data's own request, sent to api.datacircle.dev
      with your Datacircle key and `X-Data-Provider: up2data`.
  - name: HarvestAPI
    description: >-
      LinkedIn Profile API: HarvestAPI's own request, sent to api.datacircle.dev
      with your Datacircle key and `X-Data-Provider: harvestapi`.
  - name: Fetchin
    description: >-
      LinkedIn Profile API: Fetchin's own request, sent to api.datacircle.dev
      with your Datacircle key and `X-Data-Provider: fetchin`.
externalDocs:
  description: Datacircle docs
  url: https://docs.datacircle.dev
paths:
  /files/{file_id}/download-link/:
    post:
      tags:
        - Datacircle
      summary: Get a download link
      description: >-
        A download link for one file of `GET /files/`, by its `id`: `url`,
        signed and valid one hour, fetched as is without your API key, and
        `next_step`, a ready-to-run call per provider for the live profile
        behind any row. A file not unlocked for this workspace answers `403`,
        its `error` saying how to unlock it. Free.
      parameters:
        - name: file_id
          in: path
          required: true
          description: The file's `id`, from `GET /files/` (List files).
          schema:
            type: integer
      responses:
        '200':
          description: '`{"url": ...}`, valid one hour'
          content:
            application/json:
              schema:
                type: object
                required:
                  - url
                  - next_step
                properties:
                  url:
                    type: string
                    description: >-
                      A signed download URL for the file, valid one hour. Fetch
                      it as is, without your API key.
                  next_step:
                    type: object
                    required:
                      - why
                      - curls
                      - docs_url
                    properties:
                      why:
                        type: string
                        description: >-
                          What the file holds and what your balance can pull for
                          its rows.
                      curls:
                        type: array
                        description: >-
                          One ready-to-run call per provider. Keys never name a
                          provider: providers come and go in the list.
                        items:
                          type: object
                          required:
                            - provider
                            - curl
                          properties:
                            provider:
                              type: string
                              description: >-
                                The provider the call goes to: `up2data`,
                                `harvestapi` or `fetchin`, its `X-Data-Provider`
                                value.
                            curl:
                              type: string
                              description: A ready-to-run curl, your API key filled in.
                      docs_url:
                        type: string
                        description: Where Datacircle's docs are (a URL).
                    description: >-
                      What to do with the file next: pull the live LinkedIn
                      profile behind any row, with no markup.
              example:
                url: >-
                  https://….r2.cloudflarestorage.com/…/daily/2026-10-11/coop_up2data.parquet?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=…
                next_step:
                  why: >-
                    This file holds 189 rows as of its export. Your $5 signup
                    credit pulls the live LinkedIn profile behind any row, no
                    markup.
                  curls:
                    - provider: up2data
                      curl: >-
                        curl -X POST
                        "https://api.datacircle.dev/v1/profiles/enrich" -H
                        "Authorization: Token
                        9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b" -H
                        "X-Data-Provider: up2data" -H "Content-Type:
                        application/json" -d '{"url":
                        "https://www.linkedin.com/in/williamhgates"}'
                    - provider: harvestapi
                      curl: >-
                        curl
                        "https://api.datacircle.dev/linkedin/profile?url=https://www.linkedin.com/in/williamhgates"
                        -H "Authorization: Token
                        9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b" -H
                        "X-Data-Provider: harvestapi"
                    - provider: fetchin
                      curl: >-
                        curl
                        "https://api.datacircle.dev/api/v1/profile?profileUrlOrUrn=https://www.linkedin.com/in/williamhgates"
                        -H "Authorization: Token
                        9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b" -H
                        "X-Data-Provider: fetchin"
                  docs_url: https://docs.datacircle.dev
        '403':
          description: >-
            Not unlocked for this workspace: `error` says why, and how to unlock
            it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: >-
                  the Up2Data co-op file unlocks once this workspace has added
                  $50 in funds
components:
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: What went wrong, in plain words.
  securitySchemes:
    token:
      type: http
      scheme: bearer
      description: >-
        Your API key: `Authorization: Bearer <your API key>`. `Authorization:
        Token <your API key>` works too.

````

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