Soda Runners API
The Runners surface of the Soda Cloud v4 API — 4 operation(s) across 2 path(s).
The Runners surface of the Soda Cloud v4 API — 4 operation(s) across 2 path(s).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/soda-data-runners-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
# generated: '2026-08-29'
# method: searched
# source: https://docs.soda.io/reference/soda-apis/rest-api/ — assembled from the OpenAPI 3.1.0
# documents Soda publishes inline on each REST API reference page (16 pages, 103 operations,
# zero conflicting definitions). Ownership: info.title 'Soda Cloud API v4', servers
# https://cloud.soda.io + https://cloud.us.soda.io — Soda's own hosts.
openapi: 3.1.0
info:
title: Soda Cloud API v4 — Runners
version: v1
description: The Runners surface of the Soda Cloud v4 public REST API — 4 operation(s). Harvested verbatim
from the OpenAPI documents Soda publishes 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](https://go.soda.io/agent) 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. \n\nSoda-hosted\
\ and virtual runners cannot be deleted through this endpoint.\n\n## Authentication\n\nUser authentication\
\ required: `true`\n\nThis 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.\n\n## Authorization\n\nUsers must have global role permission MANAGE_DATASOURCES_AND_AGENTS\
\ to execute this call.\n\n## Tags\n\n`Runners`\n\n## Rate limiting\n\n10 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:
securitySchemes:
basicAuthApiKey:
scheme: basic
type: http
cookieToken:
in: cookie
name: token
type: apiKey
schemas:
ErrorResponse:
type: object
properties:
code:
type: string
message:
type: string
PublicApiCreateRunnerResponse:
type: object
properties:
apiKeyId:
type: string
apiKeySecret:
type: string
PublicApiDeleteRunnerResponse:
type: object
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
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'
PublicApiRunnerTypeDTO:
type: string
enum:
- SELF_HOSTED
- SODA_HOSTED
PublicApiRunnerVersionsDTO:
type: object
properties:
agent:
type: string
deprecated: true
library:
type: string
runner:
type: string