Soda Runners API

The Runners surface of the Soda Cloud v4 API — 4 operation(s) across 2 path(s).

Operations 4

GET /api/v1/runners List runners #
POST /api/v1/runners Create a soda runner #
GET /api/v1/runners/{runnerId} Get a runner #
DELETE /api/v1/runners/{runnerId} Delete a runner #

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/soda-data-runners-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 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

soda-data-runners-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Soda Cloud API v4 Runners API
  version: v1
  description: The Soda Cloud REST API (v4 public API). Assembled verbatim from the OpenAPI 3.1.0 documents Soda publishes inside each REST API reference page at https://docs.soda.io/reference/soda-apis/rest-api/.
  contact:
    name: Soda
    url: https://www.soda.io
servers:
- description: Cloud EU
  url: https://cloud.soda.io
- description: Cloud US
  url: https://cloud.us.soda.io
security:
- basicAuthApiKey: []
- cookieToken: []
tags:
- name: Runners
  description: Soda Cloud API Runner Endpoints
paths:
  /api/v1/runners:
    get:
      description: 'This endpoint allows you to list runners in your organization.


        This GET is a paginated API that uses the following parameters to request specific details:


        - `size`: Supply an integer value between 10 and 1000, inclusive. The default value is 10.


        - `page`: Supply an integer value. The default value is 0.


        ## Authentication


        User authentication required: `true`


        This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.


        ## Tags


        `Runners`


        ## Rate limiting


        60 requests/60 seconds'
      operationId: GET/api/v1/runners
      parameters:
      - in: query
        name: page
        schema:
          type: integer
          format: int32
      - in: query
        name: size
        schema:
          type: integer
          format: int32
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/PublicApiListRunnersResponse'
          description: Successful response
        '400':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '401':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden
        '429':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests
        '500':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: List runners
      tags:
      - Runners
    post:
      description: 'Creates an API key for a new self-hosted runner deployment.


        Returns the API key credentials (id and secret) to configure the runner. The credentials are only returned at creation time and cannot be retrieved later, so make sure to store them securely.


        After creation the runner does not immediately become visible in Soda Cloud. The runner needs to registers itself using the API key credentials before it becomes available.


        See deployment instructions for setting up the runner.


        ## Authentication


        User authentication required: `true`


        This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.


        ## Authorization


        Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call.


        ## Tags


        `Runners`


        ## Rate limiting


        10 requests/60 seconds'
      operationId: POST/api/v1/runners
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/PublicApiCreateRunnerResponse'
          description: Successful response
        '400':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '401':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden
        '429':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests
        '500':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Create a soda runner
      tags:
      - Runners
  /api/v1/runners/{runnerId}:
    get:
      description: 'This endpoint allows you to retrieve a specific runner by its ID.


        ## Authentication


        User authentication required: `true`


        This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.


        ## Tags


        `Runners`


        ## Rate limiting


        1000 requests/60 seconds'
      operationId: GET/api/v1/runners/{runnerId}
      parameters:
      - in: path
        name: runnerId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/PublicApiGetRunnerResponse'
          description: Successful response
        '400':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '401':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Not found
        '429':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests
        '500':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Get a runner
      tags:
      - Runners
    delete:
      description: 'This endpoint allows you to delete a specific self-hosted runner by its ID. If the runner is still in use, the request will fail with a `400 Bad Request` response.


        Soda-hosted and virtual runners cannot be deleted through this endpoint.


        ## Authentication


        User authentication required: `true`


        This endpoint accepts authentication via API keys in the `Basic` authentication header, or a pre-authenticated token in HTTP cookie `token`. Cookie sessions extend automatically on each request.


        ## Authorization


        Users must have global role permission MANAGE_DATASOURCES_AND_AGENTS to execute this call.


        ## Tags


        `Runners`


        ## Rate limiting


        10 requests/60 seconds'
      operationId: DELETE/api/v1/runners/{runnerId}
      parameters:
      - in: path
        name: runnerId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/PublicApiDeleteRunnerResponse'
          description: Successful response
        '400':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '401':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Not found
        '429':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests
        '500':
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Delete a runner
      tags:
      - Runners
components:
  schemas:
    PublicApiGetRunnerResponse:
      type: object
      properties:
        runner:
          type: object
          $ref: '#/components/schemas/PublicApiRunnerDTO'
    PublicApiListRunnersResponse:
      type: object
      properties:
        content:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/PublicApiRunnerDTO'
        first:
          type: boolean
        last:
          type: boolean
        number:
          type: integer
          format: int32
        size:
          type: integer
          format: int32
        totalElements:
          type: integer
          format: int32
        totalPages:
          type: integer
          format: int32
      required:
      - content
      - first
      - last
      - number
      - size
      - totalElements
      - totalPages
    PublicApiCreateRunnerResponse:
      type: object
      properties:
        apiKeyId:
          type: string
        apiKeySecret:
          type: string
    PublicApiDeleteRunnerResponse:
      type: object
    PublicApiRunnerDTO:
      type: object
      properties:
        id:
          type: string
        isOnline:
          type: boolean
        label:
          type: string
        lastSeenTimestamp:
          type: string
          format: date-time
        name:
          type: string
        type:
          type: object
          $ref: '#/components/schemas/PublicApiRunnerTypeDTO'
        versions:
          type: object
          $ref: '#/components/schemas/PublicApiRunnerVersionsDTO'
    PublicApiRunnerVersionsDTO:
      type: object
      properties:
        agent:
          type: string
          deprecated: true
        library:
          type: string
        runner:
          type: string
    PublicApiRunnerTypeDTO:
      type: string
      enum:
      - SELF_HOSTED
      - SODA_HOSTED
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
  securitySchemes:
    basicAuthApiKey:
      scheme: basic
      type: http
    cookieToken:
      in: cookie
      name: token
      type: apiKey