Artie Source Readers API

The Source Readers API from Artie — 5 operation(s) for source readers.

Operations 8

GET /source-readers List source readers #
POST /source-readers Create a source reader #
DELETE /source-readers/{uuid} Delete a source reader #
GET /source-readers/{uuid} Get a source reader #
POST /source-readers/{uuid} Update a source reader #
POST /source-readers/{uuid}/deploy Deploy a source reader #
POST /source-readers/{uuid}/status Update source reader status #
POST /source-readers/validate-unsaved Validate an unsaved source reader #

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/artie:artie-source-readers-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

artie-source-readers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: External API endpoints for Artie
  title: Artie Source Readers API
  version: v1.0.139
servers:
- url: https://api.artie.com
security:
- ApiKey: []
tags:
- name: Source Readers
paths:
  /source-readers:
    get:
      description: Lists all source readers for the authenticated company.
      operationId: source_reader_list
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PayloadsSourceReader'
                type: array
          description: OK
        '500':
          description: Internal Server Error
      summary: List source readers
      tags:
      - Source Readers
      x-artie-mcp:
        destructiveHint: false
        exclusionReason: Returns source-reader configuration that can contain credentials.
        exposure: excluded
        idempotentHint: true
        inputSensitivity: none
        openWorldHint: false
        operationId: source_reader_list
        outputSensitivity: restricted-credentials
        readOnlyHint: true
        remediation: Use safe pipeline metadata tools and manage source-reader credentials outside MCP.
        requiredScopes:
        - source_readers:read
        retrySemantics: safe
        title: List source readers
        triggerDescription: Use when you need to list source readers.
    post:
      description: Creates a new source reader for the authenticated company.
      operationId: source_reader_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RouterSourceReaderCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadsSourceReader'
          description: OK
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
      summary: Create a source reader
      tags:
      - Source Readers
      x-artie-mcp:
        destructiveHint: false
        exclusionReason: Accepts and returns source-reader configuration that can contain credentials.
        exposure: excluded
        idempotentHint: false
        inputSensitivity: restricted-credentials
        openWorldHint: false
        operationId: source_reader_create
        outputSensitivity: restricted-credentials
        readOnlyHint: false
        remediation: Create source readers through the authenticated Dashboard setup flow.
        requiredScopes:
        - source_readers:write
        retrySemantics: unsafe
        title: Create a source reader
        triggerDescription: Use when you need to create a source reader.
  /source-readers/{uuid}:
    delete:
      description: Permanently deletes a source reader by UUID. The source reader must not be associated with any active pipelines before deletion.
      operationId: source_reader_delete
      parameters:
      - in: path
        name: uuid
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
      summary: Delete a source reader
      tags:
      - Source Readers
      x-artie-mcp:
        bodilessSuccess: true
        destructiveHint: true
        exposure: exposed
        idempotentHint: true
        inputSensitivity: none
        openWorldHint: true
        operationId: source_reader_delete
        outputSensitivity: none
        readOnlyHint: false
        requiredScopes:
        - source_readers:delete
        retrySemantics: safe-after-state-check
        title: Delete a source reader
        triggerDescription: Deletes a source reader unused by any active pipeline. Does not delete the source connector.
    get:
      description: Retrieves a source reader by UUID, including database, settings, and table configuration. Sensitive fields may be present. MCP clients should echo this payload into source_reader_update.
      operationId: source_reader_detail
      parameters:
      - in: path
        name: uuid
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadsSourceReader'
          description: OK
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      summary: Get a source reader
      tags:
      - Source Readers
      x-artie-mcp:
        destructiveHint: false
        exposure: exposed
        idempotentHint: true
        inputSensitivity: none
        openWorldHint: false
        operationId: source_reader_detail
        outputSensitivity: restricted-credentials
        readOnlyHint: true
        requiredScopes:
        - source_readers:read
        retrySemantics: safe
        title: Get a source reader
        triggerDescription: Returns a source reader by uuid from pipeline_detail.sourceReaderUUID, not a pipeline uuid or connector uuid. Includes database, tablesConfig, and settings (replicationSlotOverride, publicationNameOverride, heartbeats). Sensitive fields may be present. Echo this into source_reader_update; do not invent a partial body. If pipeline_start 400s that two readers share slot artie, GET this, set settings.replicationSlotOverride to a unique lowercase name (digits and underscores, <=63), POST source_reader_update, then retry start.
    post:
      description: Updates an existing source reader by UUID. Echo the last source_reader_detail payload and change only the intended fields; omitting name, database, or connectorUUID overwrites them with empty values.
      operationId: source_reader_update
      parameters:
      - in: path
        name: uuid
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayloadsSourceReader'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadsSourceReader'
          description: OK
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
      summary: Update a source reader
      tags:
      - Source Readers
      x-artie-mcp:
        destructiveHint: false
        exposure: exposed
        idempotentHint: false
        inputSensitivity: restricted-credentials
        openWorldHint: false
        operationId: source_reader_update
        outputSensitivity: restricted-credentials
        readOnlyHint: false
        requiredScopes:
        - source_readers:write
        retrySemantics: unsafe
        title: Update a source reader
        triggerDescription: Applies a SourceReader from source_reader_detail. Echo the last GET and change only the intended fields. Omitting name, database, or connectorUUID blanks them. To fix a duplicate Postgres slot (pipeline_start 400 that two readers share artie), set settings.replicationSlotOverride to a unique lowercase name, then pipeline_start. This is not pipeline_update or connector_update.
  /source-readers/{uuid}/deploy:
    post:
      description: Deploys a shared source reader to the data plane. The source reader must be shared and pass validation before it can be deployed.
      operationId: source_reader_deploy
      parameters:
      - in: path
        name: uuid
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
      summary: Deploy a source reader
      tags:
      - Source Readers
      x-artie-mcp:
        bodilessSuccess: true
        destructiveHint: false
        exposure: exposed
        idempotentHint: false
        inputSensitivity: none
        openWorldHint: true
        operationId: source_reader_deploy
        outputSensitivity: none
        readOnlyHint: false
        requiredScopes:
        - source_readers:write
        retrySemantics: safe-after-state-check
        title: Deploy a source reader
        triggerDescription: Deploys a shared, validated source reader. To take a draft pipeline live, use pipeline_start.
  /source-readers/{uuid}/status:
    post:
      description: Changes the status of a shared source reader (e.g. running, paused). Only shared source readers are supported; for non-shared source readers, use the pipeline status endpoint instead.
      operationId: source_reader_update_status
      parameters:
      - in: path
        name: uuid
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RouterSourceReaderUpdateStatusRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadsSourceReader'
          description: OK
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
      summary: Update source reader status
      tags:
      - Source Readers
      x-artie-mcp:
        destructiveHint: false
        exclusionReason: Returns source-reader configuration that can contain credentials.
        exposure: excluded
        idempotentHint: false
        inputSensitivity: none
        openWorldHint: true
        operationId: source_reader_update_status
        outputSensitivity: restricted-credentials
        readOnlyHint: false
        remediation: Change source-reader status through the authenticated Dashboard setup flow.
        requiredScopes:
        - source_readers:write
        retrySemantics: safe-after-state-check
        title: Update source reader status
        triggerDescription: Use when you need to update source reader status.
  /source-readers/validate-unsaved:
    post:
      description: Validates a source reader configuration without persisting it.
      operationId: source_reader_validate_unsaved
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RouterSourceReaderValidateUnsavedRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterSourceReaderValidateUnsavedResponse'
          description: OK
        '204':
          description: No Content
        '500':
          description: Internal Server Error
      summary: Validate an unsaved source reader
      tags:
      - Source Readers
      x-artie-mcp:
        bodilessSuccess: true
        destructiveHint: false
        exclusionReason: Accepts unsaved source-reader configuration that can contain credentials.
        exposure: excluded
        idempotentHint: true
        inputSensitivity: restricted-credentials
        openWorldHint: true
        operationId: source_reader_validate_unsaved
        outputSensitivity: none
        readOnlyHint: true
        remediation: Validate source-reader credentials through the authenticated Dashboard setup flow.
        requiredScopes:
        - source_readers:read
        retrySemantics: safe
        title: Validate an unsaved source reader
        triggerDescription: Use when you need to validate an unsaved source reader.
components:
  schemas:
    RouterSourceReaderUpdateStatusRequest:
      properties:
        status:
          $ref: '#/components/schemas/EnumsSourceReaderStatus'
      required:
      - status
      type: object
    PayloadsSourceReaderTable:
      properties:
        excludeColumns:
          items:
            type: string
          type: array
        includeColumns:
          items:
            type: string
          type: array
        name:
          type: string
        schema:
          type: string
        unifyAcrossDatabases:
          type: boolean
        unifyAcrossSchemas:
          type: boolean
      type: object
    PayloadsAzureBlobStorageConfig:
      properties:
        accountURL:
          type: string
        containerName:
          type: string
        sasToken:
          type: string
      type: object
    RouterSourceReaderValidateUnsavedRequest:
      properties:
        sourceReader:
          $ref: '#/components/schemas/PayloadsSourceReader'
      required:
      - sourceReader
      type: object
    RouterSourceReaderValidateUnsavedResponse:
      properties:
        error:
          type: string
      required:
      - error
      type: object
    EnumsMSSQLArchiveLocationType:
      enum:
      - azure_blob
      - smb_share
      type: string
    PayloadsSourceReaderSettingsPayload:
      properties:
        archiveLocationType:
          $ref: '#/components/schemas/EnumsMSSQLArchiveLocationType'
        archiveLogPassword:
          type:
          - 'null'
          - string
        archiveLogPath:
          type:
          - 'null'
          - string
        archiveLogPrivateLinkUUID:
          format: uuid
          type:
          - 'null'
          - string
        archiveLogUsername:
          type:
          - 'null'
          - string
        azureBlobStorageConfig:
          $ref: '#/components/schemas/PayloadsAzureBlobStorageConfig'
        backfillBatchSize:
          minimum: 0
          type:
          - 'null'
          - integer
        backfillDefaults:
          $ref: '#/components/schemas/PayloadsBackfillDefaultsPayload'
        collectionScopedMode:
          type:
          - 'null'
          - boolean
        compositeTypesAsText:
          type:
          - 'null'
          - boolean
        databasesToSync:
          items:
            type: string
          type:
          - 'null'
          - array
        disableAutoFetchTables:
          type:
          - 'null'
          - boolean
        disableFullDocumentBeforeChange:
          type:
          - 'null'
          - boolean
        disableNoCursorTimeout:
          type:
          - 'null'
          - boolean
        enableClientSideFullDocumentLookup:
          type:
          - 'null'
          - boolean
        enableHeartbeats:
          type:
          - 'null'
          - boolean
        enableRelationMessageCaching:
          type:
          - 'null'
          - boolean
        enableSchemaHistoryCompaction:
          type:
          - 'null'
          - boolean
        maxConnIdleTimeSeconds:
          type:
          - 'null'
          - integer
        messageCompression:
          enum:
          - gzip
          - ''
          - null
          type:
          - 'null'
          - string
        mssqlChangeTrackingConcurrency:
          type:
          - 'null'
          - integer
        mssqlChangeTrackingMaxIdleConns:
          type:
          - 'null'
          - integer
        mssqlChangeTrackingPollIntervalMs:
          minimum: 0
          type:
          - 'null'
          - integer
        mssqlReplicationMethod:
          type:
          - 'null'
          - string
        oneTopicPerSchema:
          type:
          - 'null'
          - boolean
        publicationAutoCreateMode:
          type:
          - 'null'
          - string
        publicationNameOverride:
          type:
          - 'null'
          - string
        publishViaPartitionRoot:
          type:
          - 'null'
          - boolean
        replicationSlotOverride:
          type:
          - 'null'
          - string
        s3PathMappings:
          items:
            $ref: '#/components/schemas/PayloadsS3PathMapping'
          type:
          - 'null'
          - array
        unifyAcrossDatabases:
          type:
          - 'null'
          - boolean
        unifyAcrossDatabasesRegex:
          type:
          - 'null'
          - string
        unifyAcrossSchemas:
          type:
          - 'null'
          - boolean
        unifyAcrossSchemasMaxParallelism:
          maximum: 3
          minimum: 0
          type:
          - 'null'
          - integer
        unifyAcrossSchemasRegex:
          type:
          - 'null'
          - string
        useAdvanceOnPrimaryKeepAlive:
          type:
          - 'null'
          - boolean
        useFailoverReplicationSlot:
          type:
          - 'null'
          - boolean
        useNumericTypesForMoney:
          type:
          - 'null'
          - boolean
        useReaderForOracleStreaming:
          type:
          - 'null'
          - boolean
      type: object
    PayloadsSourceReaderTablesConfig:
      additionalProperties:
        $ref: '#/components/schemas/PayloadsSourceReaderTable'
      type:
      - 'null'
      - object
    PayloadsS3Parser:
      properties:
        columnOrder:
          items:
            type: string
          type: array
        csv:
          $ref: '#/components/schemas/PayloadsS3CSVParser'
        type:
          enum:
          - csv
          - json
          - parquet
          - ach
          type: string
      required:
      - type
      type: object
    PayloadsBackfillDefaultsPayload:
      properties:
        chunkSize:
          maximum: 1e+08
          minimum: 100000
          type: integer
        pagination:
          enum:
          - client
          - server
          type: string
        parallelism:
          maximum: 50
          minimum: 1
          type: integer
        preset:
          enum:
          - normal
          - performance
          type: string
        readMode:
          enum:
          - primaryKey
          - range
          - ctid
          type: string
      type: object
    EnumsSourceReaderStatus:
      enum:
      - draft
      - paused
      - running
      type: string
    PayloadsS3MetadataColumns:
      properties:
        columns:
          items:
            enum:
            - artieSourcePath
            - artieSourceFileName
            - artieSourceLastModified
            - artieSourceETag
            - artieSourceRecordNumber
            - artieSourceIngestedAt
            type: string
          type: array
      type: object
    RouterSourceReaderCreateRequest:
      properties:
        connectorUUID:
          format: uuid
          type: string
        containerName:
          type: string
        dataPlaneName:
          type: string
        database:
          type: string
        isShared:
          type: boolean
        name:
          type: string
        settings:
          $ref: '#/components/schemas/PayloadsSourceReaderSettingsPayload'
        tablesConfig:
          $ref: '#/components/schemas/PayloadsSourceReaderTablesConfig'
      required:
      - connectorUUID
      type: object
    PayloadsS3Match:
      properties:
        fileNameRegex:
          type: string
      type: object
    PayloadsS3PathMapping:
      properties:
        id:
          type: string
        match:
          $ref: '#/components/schemas/PayloadsS3Match'
        metadata:
          $ref: '#/components/schemas/PayloadsS3MetadataColumns'
        parser:
          $ref: '#/components/schemas/PayloadsS3Parser'
        prefix:
          type: string
        primaryKey:
          items:
            type: string
          type: array
        referenceID:
          type: string
      required:
      - id
      - referenceID
      - prefix
      - match
      - parser
      - metadata
      type: object
    PayloadsS3CSVParser:
      properties:
        commentPrefix:
          type: string
        delimiter:
          type: string
        headers:
          items:
            type: string
          type: array
        nullValues:
          items:
            type: string
          type: array
        trimWhitespace:
          type: boolean
      type: object
    PayloadsSourceReader:
      properties:
        apiBaseURL:
          type: string
        companyUUID:
          format: uuid
          type: string
        connectorUUID:
          format: uuid
          type: string
        containerName:
          type: string
        createdAt:
          format: date-time
          type: string
        dataPlaneName:
          type: string
        database:
          type: string
        environmentUUID:
          format: uuid
          type: string
        isShared:
          type:
          - 'null'
          - boolean
        isValid:
          type: boolean
        name:
          type: string
        settings:
          $ref: '#/components/schemas/PayloadsSourceReaderSettingsPayload'
        status:
          $ref: '#/components/schemas/EnumsSourceReaderStatus'
        tablesConfig:
          $ref: '#/components/schemas/PayloadsSourceReaderTablesConfig'
        updatedAt:
          format: date-time
          type: string
        uuid:
          format: uuid
          type: string
      required:
      - uuid
      - name
      - companyUUID
      - dataPlaneName
      - environmentUUID
      - connectorUUID
      - status
      - isValid
      - database
      - containerName
      - settings
      type: object
  securitySchemes:
    ApiKey:
      description: API key passed as a Bearer token in the Authorization header.
      scheme: bearer
      type: http
x-provenance:
  method: harvested
  publisher: Artie
  source: https://raw.githubusercontent.com/artie-labs/artie-api-spec/refs/heads/master/openapi.yaml
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)