Indraft Export API

The export API from Indraft — 2 operation(s) for export.

GitHub OpenAPI

Operations 2

GET /v1/export Export every record, custom object type, and the change ledger, as one JSON file #
GET /v1/export.zip Export the whole workspace as an archive of CSV files and one JSON document #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/indraft-io:indraft-io-export-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

indraft-io-export-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Indraft Io Export API
  version: '1'
  description: 'Operations tagged export across 2 of this provider''s published API definitions: indraft-io-openapi.json, indraft-io.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.indraft.io
security:
- bearerAuth: []
tags:
- name: Export
paths:
  /v1/export:
    get:
      summary: Export every record, custom object type, and the change ledger, as one JSON file
      description: Every record, every type you defined, and the ledger, in one documented file. Needs a credential explicitly created to export whose creator is an owner, so it is not something a token left in a configuration file can do quietly. Above 100 MB it refuses rather than returning part of your workspace.
      tags:
      - Export
      operationId: get_v1_export
      x-indraft-capability: data:export
      x-indraft-scopes:
      - data:export
      responses:
        '200':
          description: Success
          headers:
            ratelimit-limit:
              description: Requests permitted in the window closest to refusing this caller.
              schema:
                type: integer
            ratelimit-remaining:
              description: Requests left in that window. Zero means the next request is refused.
              schema:
                type: integer
            ratelimit-reset:
              description: Seconds until that window resets.
              schema:
                type: integer
            ratelimit-policy:
              description: Every window in force, not only the one reported above.
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  format:
                    type: string
                    enum:
                    - indraft.workspace-export
                  version:
                    type: string
                    enum:
                    - 1
                  exportedAt:
                    type: string
                  workspaceId:
                    type: string
                  tables:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: object
                        additionalProperties: {}
                  counts:
                    type: object
                    additionalProperties:
                      type: integer
                required:
                - format
                - version
                - exportedAt
                - workspaceId
                - tables
                - counts
                additionalProperties: true
        '401':
          description: No credential, or one that has been revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Authenticated, and this capability is not held.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Infrastructure protection tripped. This is not a product quota.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            ratelimit-limit:
              description: Requests permitted in the window closest to refusing this caller.
              schema:
                type: integer
            ratelimit-remaining:
              description: Requests left in that window. Zero means the next request is refused.
              schema:
                type: integer
            ratelimit-reset:
              description: Seconds until that window resets.
              schema:
                type: integer
            ratelimit-policy:
              description: Every window in force, not only the one reported above.
              schema:
                type: string
            retry-after:
              description: Seconds to wait before retrying. The request itself was fine.
              schema:
                type: integer
        '500':
          description: A defect on our side. The hint says so, and carries an incident id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.indraft.io
  /v1/export.zip:
    get:
      summary: Export the whole workspace as an archive of CSV files and one JSON document
      description: The same contents as the JSON export, as one spreadsheet per table plus a written explanation of how the files join up. It opens in Excel, Numbers, Sheets and LibreOffice with no conversion.
      tags:
      - Export
      operationId: get_v1_export_zip
      x-indraft-capability: data:export
      x-indraft-scopes:
      - data:export
      responses:
        '200':
          description: A ZIP holding README.txt, manifest.json, workspace.json and one CSV per table. Streamed, so the first bytes arrive before the last table has been read.
          headers:
            ratelimit-limit:
              description: Requests permitted in the window closest to refusing this caller.
              schema:
                type: integer
            ratelimit-remaining:
              description: Requests left in that window. Zero means the next request is refused.
              schema:
                type: integer
            ratelimit-reset:
              description: Seconds until that window resets.
              schema:
                type: integer
            ratelimit-policy:
              description: Every window in force, not only the one reported above.
              schema:
                type: string
          content:
            application/zip:
              schema:
                type: string
                format: binary
        '401':
          description: No credential, or one that has been revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Authenticated, and this capability is not held.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Infrastructure protection tripped. This is not a product quota.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            ratelimit-limit:
              description: Requests permitted in the window closest to refusing this caller.
              schema:
                type: integer
            ratelimit-remaining:
              description: Requests left in that window. Zero means the next request is refused.
              schema:
                type: integer
            ratelimit-reset:
              description: Seconds until that window resets.
              schema:
                type: integer
            ratelimit-policy:
              description: Every window in force, not only the one reported above.
              schema:
                type: string
            retry-after:
              description: Seconds to wait before retrying. The request itself was fine.
              schema:
                type: integer
        '500':
          description: A defect on our side. The hint says so, and carries an incident id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.indraft.io
components:
  schemas:
    ErrorDetail:
      type: object
      additionalProperties: true
      description: The structured payload a recovery needs. Its shape differs per code; the keys below are the ones that recur, and anything else a code carries is present alongside them.
      properties:
        fieldErrors:
          type: object
          additionalProperties:
            type: string
          description: One message per field the caller sent, keyed by that field. The key `(body)` is the request body itself, which is what an unrecognised key reports under.
        reason:
          type: string
          description: One sentence, where the refusal is about the request rather than a field. A refusal that names alternatives puts them here.
        available:
          type: array
          items:
            type: string
          description: What could have been asked for instead. Present on a filter, sort or group-by the API does not serve, so a correction is one edit rather than a round trip to read the schema.
        options:
          type: array
          items:
            type: string
          description: The values an enum accepts, on a value it does not.
        currentVersion:
          type: integer
          description: What the record's version actually is, on `stale_version`. With the value you sent it is everything needed to decide whether to re-read and retry or to stop.
        expectedVersion:
          type: integer
          description: The version you sent, echoed back on `stale_version`.
        requiredScope:
          type: string
          description: 'The capability the credential lacks. Empty nowhere: a route no credential can reach is human-only and says so in its scopes instead.'
    Error:
      type: object
      required:
      - code
      - message
      - recoveryHint
      - requestId
      properties:
        code:
          type: string
          enum:
          - unauthorized
          - forbidden_scope
          - standing_override_refused
          - workspace_not_found
          - validation_error
          - record_not_found
          - ambiguous_identity
          - duplicate_identity
          - stale_version
          - invalid_stage_transition
          - idempotency_conflict
          - not_reversible
          - merge_conflict
          - rate_limited
          - quota_exceeded
          - payload_too_large
          - workspace_capacity
          - payment_required
          - billing_state_stale
          - operation_in_flight
          - internal_error
        message:
          type: string
        recoveryHint:
          type: string
        requestId:
          type: string
        detail:
          $ref: '#/components/schemas/ErrorDetail'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An Indraft API token, or a WorkOS-issued session or MCP access token.
x-refined-from:
- indraft-io-openapi.json
- indraft-io.json