Nexla Sources API

Operations for managing data sources.

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/nexla-sources-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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

OpenAPI Specification

nexla-sources-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v1
  title: Nexla Rest Sources API
  termsOfService: https://nexla.com/terms-of-service/
  contact:
    name: Nexla Support
    url: https://docs.nexla.com
    email: support@nexla.com
  license:
    name: Nexla
    url: https://nexla.com
  x-logo:
    url: https://cdn.nexla.io/ui/assets/brand/v2/nexla-logo-color-portrait.svg
    backgroundColor: '#ffffff'
  description: '# Introduction


    The Nexla API is a REST-ful API used to easily create and manage resources in Nexla in ways that best fit any use case. It can be used to configure and monitor data flows for different data-integration use cases and to perform all aspects of data engineering automation offered by the Nexla platform.


    The Nexla API supports all data flow-creation and -management actions in the platform, as well as administrative user- and organization-level account-management tasks. Note that all other client packages, such as the Nexla CLI and Nexla UI, also connect to the overall Nexla infrastructure through the Nexla API.


    The API references in this document lists all API endpoints and the corresponding payloads.


    Check out the [API Developer Guides](https://developers.nexla.com/docs/nexla-api) to view guides and tutorials for recommended use cases for different endpoints.


    # API Data Format and Versions


    The API uses JSON for all data exchanges.


    You __should__ specify the API version that should be used in the Accept header of each request. For example, to access Version 1 of the API, the Accept header should be the following:

    ```

    Accept: application/vnd.nexla.api.v1+json

    ```


    The Nexla API also supports a generic version header, which will default your access to the latest version of the data source/destination API.



    ```

    Accept: application/json

    ```


    # Authentication


    Most Nexla API endpoints require `Bearer Token` authentication mechanism for making an authenticated request to the API. While this token can be generated programmatically outside Nexla UI by starting a session with an `api_key`, unless unavoidable, we recommend starting your session from the Nexla UI and using the `Nexla Session Token` from the Nexla UI as the Authorization header for calls to the Nexla API.


    <SecurityDefinitions />'
servers:
- url: https://{nexla-api-host}
  variables:
    nexla-api-host:
      default: dataops.nexla.io/nexla-api
      description: Nexla API URL your Nexla instance
security:
- NexlaSessionToken: []
tags:
- name: Sources
  description: Operations for managing data sources.
paths:
  /data_sources:
    get:
      tags:
      - Sources
      operationId: get_data_sources
      summary: Get All Sources
      description: 'Returns all data sources accessible to the authenticated user.

        '
      externalDocs:
        description: Nexla Rest API guide for Data Sources
        url: "https://developers.nexla.com/docs/data-sources#list-all-sources \n"
      parameters:
      - $ref: '#/components/parameters/access_roles'
      - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_many'
        '403':
          description: Forbidden
        '404':
          description: Not found
    post:
      tags:
      - Sources
      operationId: create_data_source
      summary: Create a Source
      description: "Creates a new data source in the authenticated user's account. \n\nDepending on the type of source you want to create (`source_type`), properties like `source_config` and `data_credentials_id` will require appropriate configuration. \n\n> Note: `name`, `source_type`, `source_config` and `data_credentials_id` are required.\n"
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/data_source'
              - required:
                - name
                - source_type
                - source_config
                - data_credentials_id
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '400':
          description: Unauthorized
  /data_sources/{source_id}:
    get:
      tags:
      - Sources
      summary: Get Source by ID
      description: 'Returns a source object if a valid ID is provided.

        '
      operationId: get_data_source
      parameters:
      - name: source_id
        in: path
        description: The unique ID of the source that needs to be fetched.
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/expand'
      - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
    put:
      tags:
      - Sources
      operationId: update_data_source
      summary: Update a Source
      description: "Updates a data source in the authenticated user's account. \n\nDepending on the type of source you want to update (`source_type`), properties like `source_config` and `data_credentials_id` will require appropriate configuration.\n\n> Note: This method does not perform partial updating of `source_config`. The entire `source_config` object will be updated if this is added to the payload.\n"
      parameters:
      - name: source_id
        in: path
        description: The unique ID of the source that needs to be updated.
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/data_source'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '400':
          description: Unauthorized
    delete:
      tags:
      - Sources
      summary: Delete a Source
      description: Deletes a source from your Nexla account.
      operationId: delete_data_source
      parameters:
      - name: source_id
        in: path
        description: The unique ID of the source that needs to be deleted.
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/accept'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: Response status code
                  message:
                    type: string
                    description: Response status text
        '404':
          description: Not found error
  /data_sources/{source_id}?expand=1:
    get:
      tags:
      - Sources
      operationId: get_data_source_expanded
      summary: Get Source by ID with Expanded References
      description: 'Returns a source object along with advanced information about associated references if a valid ID is provided.

        '
      parameters:
      - name: source_id
        in: path
        description: The unique ID of the source that needs to be fetched
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/expand'
      - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one_expand'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sources/{source_id}/activate:
    put:
      tags:
      - Sources
      operationId: activate_source
      summary: Activate a Source
      description: "Activate a paused data source.  \n"
      parameters:
      - name: source_id
        in: path
        description: The unique ID of the source that needs to be activated.
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sources/{source_id}/pause:
    put:
      tags:
      - Sources
      operationId: pause_source
      summary: Pause a Source
      description: "Pause an active data source.  \n"
      parameters:
      - name: source_id
        in: path
        description: The unique ID of the source that needs to be paused.
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/accept'
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
  /data_sources/{source_id}/copy:
    post:
      tags:
      - Sources
      operationId: copy_source
      summary: Copy a Source
      description: "Use this endpoint to create a copy of an existing flow. \n"
      parameters:
      - name: source_id
        in: path
        description: The unique ID of the source that needs to be copied.
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/vnd.nexla.api.v1+json:
            schema:
              type: object
              properties:
                reuse_data_credentials:
                  type: boolean
                  description: 'Set this to `true` if you do want to reuse the credentials of this source instead of creating a clone of the credentials also.

                    '
                copy_access_controls:
                  type: boolean
                  description: "Set this to `true` if you want the new source to be accessible by all users who have access to the this sink.  \n"
                owner_id:
                  type: integer
                  description: 'The default API behavior is to create the new source in the account of the authenticated user making this call. Set this property if you want a different user to be the owner of the new source.

                    '
                org_id:
                  type: integer
                  description: 'The default API behavior is to create the new source in the org that the authenticated user making this call belongs to. Set this property if you want the source to be created in a different org.

                    '
      responses:
        '200':
          $ref: '#/components/responses/data_source_one'
        '403':
          description: Forbidden
        '404':
          description: Not found
components:
  schemas:
    org:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        email_domain:
          type: string
        email:
          type: 'null'
        client_identifier:
          type: 'null'
    data_set_schema:
      type: object
      properties:
        properties:
          type: object
          additionalProperties:
            type: string
            x-additionalPropertiesName: nexset_attribute_name
        $schema:
          type: string
          format: url
        $schema-id:
          type: integer
    AccessRoles:
      type: array
      description: "This property reflects all the permissions the user/team/organization has to this resource. \n\n1. `collaborator`: The user/team/organization can view the resource but not make any modifications to it.\n2. `operator`: The user/team/organization can view the resource and can activate/pause it, but not make any other modifications to it.\n3. `administrator`: The user/team/organization has complete administrative rights to this resource.\n4. `owner`: This user created the resource and so has complete administrative rights to it. \n"
      items:
        type: string
        enum:
        - owner
        - collaborator
        - operator
        - admin
    owner:
      type: object
      properties:
        id:
          type: integer
        full_name:
          type: string
        email:
          type: string
          format: email
    data_source:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        data_credentials_id:
          type: integer
          description: '__Credential ID__: Nexla data credential that contains all authentication information for this source.


            Note that this is not applicable for `file_upload`, `nexla_rest` and `email` sources but is required for all other connectors.

            '
        stream_config:
          type: object
          description: 'Field only used for ELT Vendor Endpoints

            '
        source_type:
          type: string
          description: '__Connector Type__: Connector codename.

            '
        code_container_id:
          type: integer
          description: 'ID of code container to attach to this source.

            '
        code_container:
          type: object
          description: "Code Container details that will be created and attached to this source. Note: you can't pass both `code_container` and `code_container_id` together, \ncode_container_id will take priority.\n"
          properties:
            code:
              anyOf:
              - type: string
              - type: object
              - type: array
            name:
              type: string
            description:
              type: string
            resource_type:
              type: string
              enum:
              - source
              - source_custom
            code_type:
              type: string
              enum:
              - jolt_standard
              - jolt_custom
              - python
              - python3
              - javascript
              - flink_sql
              - spark_sql
            code_encoding:
              type: string
              enum:
              - none
              - base64
            code_config:
              type: object
            custom_config:
              type: object
            repo_type:
              type: string
              enum:
              - embedded
              - github
            repo_config:
              type: object
      discriminator:
        propertyName: source_type
        mapping:
          as400: '#/components/schemas/as400_data_source'
          aws_athena: '#/components/schemas/aws_athena_data_source'
          azure_blb: '#/components/schemas/azure_blb_data_source'
          azure_data_lake: '#/components/schemas/azure_data_lake_data_source'
          azure_synapse: '#/components/schemas/azure_synapse_data_source'
          bigquery: '#/components/schemas/bigquery_data_source'
          box: '#/components/schemas/box_data_source'
          cloudsql_mysql: '#/components/schemas/cloudsql_mysql_data_source'
          cloudsql_postgres: '#/components/schemas/cloudsql_postgres_data_source'
          cloudsql_sqlserver: '#/components/schemas/cloudsql_sqlserver_data_source'
          confluent_kafka: '#/components/schemas/confluent_kafka_data_source'
          databricks: '#/components/schemas/databricks_data_source'
          db2: '#/components/schemas/db2_data_source'
          dropbox: '#/components/schemas/dropbox_data_source'
          dynamodb: '#/components/schemas/dynamodb_data_source'
          file_upload: '#/components/schemas/file_upload_data_source'
          firebase: '#/components/schemas/firebase_data_source'
          firebolt: '#/components/schemas/firebolt_data_source'
          ftp: '#/components/schemas/ftp_data_source'
          gcp_alloydb: '#/components/schemas/gcp_alloydb_data_source'
          gcp_spanner: '#/components/schemas/gcp_spanner_data_source'
          gcs: '#/components/schemas/gcs_data_source'
          gdrive: '#/components/schemas/gdrive_data_source'
          google_pubsub: '#/components/schemas/google_pubsub_data_source'
          hana_jdbc: '#/components/schemas/hana_jdbc_data_source'
          hive: '#/components/schemas/hive_data_source'
          jms: '#/components/schemas/jms_data_source'
          kafka: '#/components/schemas/kafka_data_source'
          min_io_s3: '#/components/schemas/min_io_s3_data_source'
          mongo: '#/components/schemas/mongo_data_source'
          mysql: '#/components/schemas/mysql_data_source'
          netsuite_jdbc: '#/components/schemas/netsuite_jdbc_data_source'
          nexla_monitor: '#/components/schemas/nexla_monitor_data_source'
          nexla_rest: '#/components/schemas/nexla_rest_data_source'
          oracle: '#/components/schemas/oracle_data_source'
          oracle_autonomous: '#/components/schemas/oracle_autonomous_data_source'
          pinecone: '#/components/schemas/pinecone_data_source'
          postgres: '#/components/schemas/postgres_data_source'
          redshift: '#/components/schemas/redshift_data_source'
          rest: '#/components/schemas/rest_data_source'
          s3: '#/components/schemas/s3_data_source'
          s3_iceberg: '#/components/schemas/s3_iceberg_data_source'
          sharepoint: '#/components/schemas/sharepoint_data_source'
          snowflake: '#/components/schemas/snowflake_data_source'
          soap: '#/components/schemas/soap_data_source'
          sqlserver: '#/components/schemas/sqlserver_data_source'
          sybase: '#/components/schemas/sybase_data_source'
          teradata: '#/components/schemas/teradata_data_source'
          tibco: '#/components/schemas/tibco_data_source'
          webdav: '#/components/schemas/webdav_data_source'
  parameters:
    access_roles:
      name: access_role
      in: query
      schema:
        type: string
        enum:
        - collaborator
        - operator
        - admin
        - owner
        description: "Add this query parameter to a request to view resources for which the authenticated user has permission. \n\n1. `collaborator`: Resources to which the user has access via the collaborator or higher permissions.\n2. `operator`: Resources to which the user has access via the operator or higher permissions.\n3. `admin`: Resources to which the user has access via the administrator or owner permissions.\n4. `owner`: Resources created by the user.\nNote that the absence of this property in the request is treated as `owner`, so you do not need to set `access_role=owner` in the query.\n"
        externalDocs:
          description: Nexla API access roles
          url: https://developers.nexla.com/docs/access-modes
    expand:
      name: expand
      in: query
      schema:
        type: integer
        enum:
        - 1
        description: 'Add this parameter to a resource fetch request to receive details about related resources in the response.

          '
    accept:
      name: Accept
      in: header
      schema:
        type: string
        enum:
        - application/vnd.nexla.api.v1+json
        - application/json
        description: 'Setting to `application/vnd.nexla.api.v1+json` is recommended.

          '
  responses:
    data_source_one:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              owner:
                $ref: '#/components/schemas/owner'
              org:
                $ref: '#/components/schemas/org'
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              name:
                type: string
              description:
                type: 'null'
              status:
                type: string
              data_sets:
                type: array
                items:
                  type: object
                  properties:
                    version:
                      type: integer
                    id:
                      type: integer
                    owner_id:
                      type: integer
                    org_id:
                      type: integer
                    name:
                      type: string
                    description:
                      type: string
                    updated_at:
                      type: string
                      format: date-time
                    created_at:
                      type: string
                      format: date-time
              ingest_method:
                type: string
              source_format:
                type: string
              source_config:
                type: object
                description: 'The source configuration properties that were set as `source_config` in the payload-to-source create/update API calls.

                  '
                additionalProperties:
                  type: string
                  x-additionalPropertiesName: source_config_property
              poll_schedule:
                type: 'null'
              managed:
                type: boolean
              code_container_id:
                type: 'null'
              source_type:
                type: string
              connector_type:
                type: string
              connector:
                type: object
                properties:
                  id:
                    type: integer
                  type:
                    type: string
                  connection_type:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  nexset_api_compatible:
                    type: boolean
              api_keys:
                type: array
              auto_generated:
                type: boolean
              data_credentials:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  description:
                    type: string
                  owner:
                    $ref: '#/components/schemas/owner'
                  org:
                    $ref: '#/components/schemas/org'
                  access_roles:
                    $ref: '#/components/schemas/AccessRoles'
                  credentials_version:
                    type: string
                  managed:
                    type: boolean
                  credentials_type:
                    type: string
                  connector:
                    type: object
                    properties:
                      id:
                        type: integer
                      type:
                        type: string
                      connection_type:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      nexset_api_compatible:
                        type: boolean
                  api_keys:
                    type: array
                  credentials_non_secure_data:
                    type: object
                    additionalProperties:
                      type:
                      - string
                      - object
                      - integer
                      x-additionalPropertiesName: credential_property
                  verified_status:
                    type: string
                  verified_at:
                    type: string
                    format: date-time
                  copied_from_id:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
                  tags:
                    type: array
              run_ids:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                    created_at:
                      type: string
                      format: date-time
              copied_from_id:
                type: 'null'
              updated_at:
                type: string
                format: date-time
              created_at:
                type: string
                format: date-time
              tags:
                type: array
              flow_type:
                type: string
              ingestion_mode:
                type: string
    data_source_many:
      description: Success
      content:
        application/json:
          schema:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                name:
                  type: string
                description:
                  type:
                  - string
                  - 'null'
                status:
                  type: string
                ingest_method:
                  type: string
                source_format:
                  type: string
                managed:
                  type: boolean
                code_container_id:
                  type:
                  - integer
                  - 'null'
                copied_from_id:
                  type:
                  - integer
                  - 'null'
                created_at:
                  type: string
                  format: date-time
                updated_at:
                  type: string
                  format: date-time
                source_type:
                  type: string
                connector_type:
                  type: string
                connector:
                  type: object
                  properties:
                    id:
                      type: integer
                    type:
                      type: string
                    connection_type:
                      type: string
                    name:
                      type: string
                    description:
                      type: string
                    nexset_api_compatible:
                      type: boolean
                access_roles:
                  $ref: '#/components/schemas/AccessRoles'
                auto_generated:
                  type: boolean
                owner:
                  $ref: '#/components/schemas/owner'
                org:
                  $ref: '#/components/schemas/org'
                data_sets:
                  type: array
                tags:
                  type: array
                flow_type:
                  type: string
                ingestion_mode:
                  type: string
                run_ids:
                  type: array
                has_template:
                  type: boolean
                vendor_endpoint:
                  type: object
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                vendor:
                  type: object
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    display_name:
                      type: string
                    connection_type:
                      type: string
    data_source_one_expand:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: integer
              owner:
                $ref: '#/components/schemas/owner'
              org:
                $ref: '#/components/schemas/org'
              access_roles:
                $ref: '#/components/schemas/AccessRoles'
              name:
                type: string
              description:
                type: 'null'
              status:
                type: string
              data_sets:
                type: array
                items:
                  type: object
                  properties:
                    version:
                      type: integer
                    id:
                      type: integer
                    owner_id:
                      type: integer
                    org_id:
                      type: integer
                    name:
                      type: string
                    description:
                      type: string
                    updated_at:
                      type: string
                      format: date-time
                    created_at:
                      type: string
                      format: date-time
                    sample_service_id:
                      type:
                      - 'null'
                    source_schema:
                      $ref: '#/components/schemas/data_set_schema'
                    transform:
                      type: object
                      properties:
                        version:
                          type: integer
                        data_maps:
                          type: array
                        transforms:
                          type: array
                        custom_config:
                          type: object
                    output_schema:
                      $ref: '#/components/schemas/data_set_schema'
              ingest_method:
                type: string
              source_format:
                type: string
              source_config:
                type: object
                additionalProperties:
                  type: string
              poll_schedule:
                type: 'null'
              managed:
                type: boolean
              code_container_id:
                type: 'null'
              source_type:
                type: string
              connector_type:
                type: string
              connector:
                type: object
                properties:
                  id:
                    type: integer
                  type:
                    type: string
                  connection_type:
                    type: string
                  name:
                    type: string
                  description:
                    type: string
                  nexset_api_compatible:
                    type: boolean
              api_keys:
                type: array
              auto_generated:
                type: boolean
              data_credentials:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  description:
                    type: string
                  owner:
                    $ref: '#/components/schemas/owner'
                  org:
                    $ref: '#/components/schemas/org'
                  access_roles:
                    $ref: '#/components/schemas/AccessRoles'
                  credentials_version:
                    type: string
                  managed:
                    type: boolean
                  credentials_type:
                    type: string
                  connector:
                    type: object
                    properties:
                      id:
                        type: integer
                      type:
                        type: string
                      connection_type:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                      nexset_api_compatible:
                        type: boolean
                  api_keys:
                    type: array
                  credentials_non_secure_data:
                    type: object
                    additionalProperties:
                      type:
                      - string
                      - object
                      - integer
                      x-additionalPropertiesName: credential_property
                  verified_status:
                    type: string
                  verified_at:
                    type: string
                    format: date-time
                  copied_from_id:
                    type: 'null'
                  updated_at:
                    type: string
                    format: date-time
                  created_at:
                    type: string
                    format: date-time
                  tags:
                    type: array
              run_ids:
                type: array
                i

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nexla/refs/heads/main/openapi/nexla-sources-api-openapi.yml