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/datacrunch:datacrunch-journal-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: 3.2.0
info:
title: Verda Cloud Public Journal API
description: '# Introduction
Verda Cloud API allows you to deploy, control instances & more via external code. ## Open API schema
Download OpenAPI 3.1.0 schema here: /v1/openapi.json
The API is a RESTful API over HTTPS, all requests & responses use JSON as the data exchange format. ## Official SDKs
The following SDK packages maintained by Verda Cloud and use this API:
- **Python SDK**: https://github.com/verda-cloud/sdk-python
- **Go SDK**: https://github.com/verda-cloud/verdacloud-sdk-go
- **Terraform** and **OpenTofu** provider: https://github.com/verda-cloud/terraform-provider-verda
# Quick Start Guide
We use OAuth 2.0 Client Credentials authentication scheme. You can generate credentials via the console UI https://console.verda.com for external applications to use Verda API. The credentials are used to generate Access & Refresh tokens. All requests to this API must be authenticated using the Access token, except for a few open endpoints. Access tokens have a short lifespan, and can be regenerated using the Refresh token. ## 1. Get Credentials from the Verda Cloud Dashboard
Go to the Project page => **Keys** => **Cloud API Credentials** section and click on **Create**. These credentials will be used like a username & password for your application. Store the client secret safely - like a password. ## 2. Generate Access Token
An Access Token is needed to be sent with any API call for authentication. The Access Token has a limited lifetime and is expired after a while as defined in `expires_in`. It is used as a bearer token
### To get an access token, call the token endpoint with the credentials obtained in step 1:
```json http
{
"method": "post",
"url": "https://api.verda.com/v1/oauth2/token",
"headers": {
"Content-Type": "application/json"
},
"body": {
"grant_type": "client_credentials",
"client_id": "",
"client_secret": ""
}
}
```
A valid response would look similar to this:
```json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZXkiOiJ5b3UgYWN1YWxseSBjaGVja2VkIHRoaXM_In0.0RjcdKQ1NJP9gbRyXITE6LFFLwKGzeeshuubnkkfkb8",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3ciOiJhbmQgdGhpcyB0b28_In0.AC5gk-o-MOptUgrouEErlhr8WT3Hg_RR6px6A0I7ZEk",
"scope": "cloud-api-v1"
}
```
`access_token` is the token value, to be used in the next step. `expires_in` is the duration in seconds until the token is expired. `refresh_token` can be used to create a new access token if expired. When an Access Token expires, create a new one using the refresh token:
```json http
{
"method": "post",
"url": "https://api.verda.com/v1/oauth2/token",
"headers": {
"Content-Type": "application/json"
},
"body": {
"grant_type": "refresh_token",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3ciOiJhbmQgdGhpcyB0b28_In0.AC5gk-o-MOptUgrouEErlhr8WT3Hg_RR6px6A0I7ZEk"
}
}
```
The response will include a new token. ## 3. Make REST API Calls
That''s it, you are ready to use the API, don''t forget to add the Access Token to your calls:
Let''s call the `/balance` endpoint. Add the Access Token value to the `Authorization` header, preceded by the "Bearer" string and a space:
```json http
{
"method": "get",
"url": "https://api.verda.com/v1/balance",
"headers": {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZXkiOiJ5b3UgYWN1YWxseSBjaGVja2VkIHRoaXM_In0.0RjcdKQ1NJP9gbRyXITE6LFFLwKGzeeshuubnkkfkb8"
}
}
```
# Rate Limits
Authenticated public API requests are rate limited per project in 60 second windows. ## Limits enforced
- **Project limit**: 500 requests per minute for all authenticated API requests made for the same project
- **Endpoint limit**: 60 requests per minute for the same project, HTTP method, and request path combination
The endpoint limit key includes the full request path. Route-specific endpoint policies override the regular endpoint limit for the matching request path.'
version: v1
contact:
name: Verda Cloud Oy
url: https://verda.com
email: info@verda.com
servers:
- url: https://api.verda.com
security:
- bearer: []
tags:
- name: Journal
description: 'Operations related to activity journal and audit log for cloud resources.
**Beta:** Journal and audit log API is under active development and may change without notice.
Shows history of actions performed on resources, such as instance deployment, volume creation, deletion, etc, via public API, Console UI or internally (e.g. spot discontinue).'
paths:
/v1/audit/log:
get:
description: Retrieves all events for the project, for all resources matching the filter criteria. The format to generate audit log is based on CloudEvents specification.
operationId: AuditLogController_getAuditLog
parameters:
- name: action
required: false
in: query
description: Filter by action type
schema:
type: string
enum:
- other
- create
- start
- start_complete
- shutdown_complete
- shutdown
- delete
- delete_complete
- attach
- attach_complete
- detach
- detach_complete
- clone
- resize
- rename
- transfer
- trash
- trash_complete
- restore
- cancel
- provisioning
- running
- configure_spot
- authenticate
- expire
- accept
- update_role
- revoke
- login
- logout
- login_failed
- auth_mfa_enable
- auth_mfa_disable
- auth_mfa_challenge
- auth_mfa_verify
- password_reset
- complete
- redeem
- suspend
- unsuspend
- approve
- decline
- update
- rotate_secret
- disable
- enable
- name: object_type
required: false
in: query
description: Filter by object type
schema:
type: string
enum:
- compute
- volume
- ssh_key
- invite
- user
- member
- cloud_api_credential
- object_storage_bucket
- object_storage_key_pair
- custom_image
- startup_script
- topup
- coupon
- bank_transfer
- bank_transfer_account
- balance
- other
- object_storage
- quota_request
- webhook
- auto_top_up
- name: start_date
required: false
in: query
description: Return events created at or after this timestamp. Cannot be earlier than 90 days ago. Default is 90 days ago.
schema:
example: '2026-01-01T00:00:00.000Z'
type: string
- name: end_date
required: false
in: query
description: Return events created at or before this timestamp. Cannot be before the start date.
schema:
type: string
- name: page_size
required: false
in: query
description: Number of items per page, default 20 maximum 100
schema:
default: 20
type: number
- name: cursor
required: false
in: query
description: Cursor to start from, as specified by the previous response
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/GetAuditLogResponseListDto'
'403':
description: The API credentials belong to a `developer` member rather than the project owner or an `admin` member.
security:
- bearer: []
summary: Retrieve audit log for the project
tags:
- Journal
/v1/audit/log/download:
post:
description: Streams the full audit log (matching the given filters, within the retention window) to object storage and returns a short-lived pre-signed download URL.
operationId: AuditLogController_downloadAuditLog
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadAuditLogParamsDto'
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadAuditLogResponseDto'
'403':
description: The API credentials belong to a `developer` member rather than the project owner or an `admin` member.
security:
- bearer: []
summary: Export project audit log as a JSON file
tags:
- Journal
/v1/journal:
get:
operationId: JournalController_getJournal
parameters:
- name: page
required: false
in: query
description: Page number, starting from 1
schema:
default: '1'
type: number
- name: pageSize
required: false
in: query
description: Number of items per page, default 10 maximum 100
schema:
default: '10'
type: number
- name: compute_id
required: false
in: query
description: Specify either compute_id or volume_id
schema:
type: string
- name: volume_id
required: false
in: query
description: Specify either volume_id or compute_id
schema:
type: string
- name: action_code
required: false
in: query
description: Filter by action code
schema:
type: string
enum:
- create
- start
- start:complete
- shutdown:complete
- shutdown
- delete
- delete:complete
- attach
- attach:complete
- detach
- detach:complete
- clone
- resize
- rename
- restore
- transfer
- trash
- trash:complete
- configure_spot
- cancel
- provisioning
- running
- installation:failed
- validating
- deleting
- error
- name: object_type
required: false
in: query
description: Filter by object type
schema:
type: string
enum:
- compute
- volume
- name: hydrate
required: false
in: query
description: Hydrate every event with user, instance and volume objects
schema:
type: boolean
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GetActivityJournalResponseDto'
security:
- bearer: []
summary: Get activity journal for a compute or volume
tags:
- Journal
/v1/journal/compute/{computeId}:
get:
description: Get all events for a compute (instance or cluster). Includes also associated volume or shared storage attach / detach events.
operationId: JournalController_getComputeJournal
parameters:
- name: computeId
required: true
in: path
schema:
type: string
- name: page
required: false
in: query
description: Page number, starting from 1
schema:
default: '1'
type: number
- name: pageSize
required: false
in: query
description: Number of items per page, default 10 maximum 100
schema:
default: '10'
type: number
- name: compute_id
required: false
in: query
description: Specify either compute_id or volume_id
schema:
type: string
- name: volume_id
required: false
in: query
description: Specify either volume_id or compute_id
schema:
type: string
- name: action_code
required: false
in: query
description: Filter by action code
schema:
type: string
enum:
- create
- start
- start:complete
- shutdown:complete
- shutdown
- delete
- delete:complete
- attach
- attach:complete
- detach
- detach:complete
- clone
- resize
- rename
- restore
- transfer
- trash
- trash:complete
- configure_spot
- cancel
- provisioning
- running
- installation:failed
- validating
- deleting
- error
- name: object_type
required: false
in: query
description: Filter by object type
schema:
type: string
enum:
- compute
- volume
- name: hydrate
required: false
in: query
description: Hydrate every event with user, instance and volume objects
schema:
type: boolean
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GetActivityJournalResponseDto'
security:
- bearer: []
summary: Get activity journal for a compute
tags:
- Journal
/v1/journal/volume/{volumeId}:
get:
description: Get all events for a volume. Does not include compute-related events.
operationId: JournalController_getVolumeJournal
parameters:
- name: volumeId
required: true
in: path
schema:
type: string
- name: page
required: false
in: query
description: Page number, starting from 1
schema:
default: '1'
type: number
- name: pageSize
required: false
in: query
description: Number of items per page, default 10 maximum 100
schema:
default: '10'
type: number
- name: compute_id
required: false
in: query
description: Specify either compute_id or volume_id
schema:
type: string
- name: volume_id
required: false
in: query
description: Specify either volume_id or compute_id
schema:
type: string
- name: action_code
required: false
in: query
description: Filter by action code
schema:
type: string
enum:
- create
- start
- start:complete
- shutdown:complete
- shutdown
- delete
- delete:complete
- attach
- attach:complete
- detach
- detach:complete
- clone
- resize
- rename
- restore
- transfer
- trash
- trash:complete
- configure_spot
- cancel
- provisioning
- running
- installation:failed
- validating
- deleting
- error
- name: object_type
required: false
in: query
description: Filter by object type
schema:
type: string
enum:
- compute
- volume
- name: hydrate
required: false
in: query
description: Hydrate every event with user, instance and volume objects
schema:
type: boolean
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GetActivityJournalResponseDto'
security:
- bearer: []
summary: Get activity journal for a volume
tags:
- Journal
components:
schemas:
ActivityVolumeDto:
type: object
properties:
id:
type: string
example: ded19b3b-8c85-47fe-ad6c-bc9878a02f43
name:
type: string
example: volume-1
created_at:
type: string
example: '2026-03-17T14:15:52.872Z'
gb:
type: number
example: 100
is_shared_fs:
type: boolean
example: false
template_type:
type: string
enum:
- HDD
- NVMe
- HDD_Shared
- NVMe_Shared
- NVMe_Local_Storage
- NVMe_Shared_Cluster
- NVMe_OS_Cluster
example: NVMe
location_code:
type: string
example: FIN-01
required:
- id
- name
- created_at
- gb
- is_shared_fs
- template_type
- location_code
ActivityComputeDto:
type: object
properties:
id:
type: string
example: 30444e9e-efdb-44d1-885b-e940e561281c
hostname:
type: string
example: example-fin-01
compute_type:
type: string
example: 4A100.88V
is_cluster:
type: boolean
example: false
ip:
type: object
example: 1.2.3.4
nullable: true
os_volume_id:
type: object
example: e819fcd3-9fe3-454b-b366-6aa9409f0a64
nullable: true
location_code:
type: object
example: FIN-01
nullable: true
required:
- id
- hostname
- compute_type
- is_cluster
GetActivityJournalResponseDto:
type: object
properties:
id:
type: string
example: instance-log-123
description: Event ID, unique within the project. Please note that it is not UUID but a combined string to identify the event.
object_id:
type: string
example: 572a5cfe-e104-4eb5-83fd-8dccfc95c784
description: ID of the object that the event is related to.
object_type:
type: string
enum:
- compute
- volume
example: compute
description: Object type that the event is related to.
action_code:
type: string
enum:
- create
- start
- start:complete
- shutdown:complete
- shutdown
- delete
- delete:complete
- attach
- attach:complete
- detach
- detach:complete
- clone
- resize
- rename
- restore
- transfer
- trash
- trash:complete
- configure_spot
- cancel
- provisioning
- running
- installation:failed
- validating
- deleting
- error
example: start
description: Action that was performed on the object.
actor_id:
type: object
example: dd65adb9-50c5-426e-b258-adb1fc9080b6
nullable: true
description: ID of the actor that performed the action. For some actions, such as spot discontinue, the actor is not available and assumed to be system.
actor_email:
type: object
example: user@datacrunch.io
nullable: true
description: Email of the actor that performed the action.
project_id:
type: string
example: b0ca6ac7-243d-4d86-b123-e45f4f64fa0b
description: ID of the project that the event is related to.
timestamp:
type: string
example: '2026-03-17T14:15:52.872Z'
description: When the event happened.
location_code:
type: string
example: FIN-01
description: Datacenter location code where the event happened or this object is located.
request_origin:
type: string
example: public-api-v1
description: Origin of the request that caused the event. For example, public API, Console UI, or undefined for the internal system.
request_ip:
type: string
example: 127.0.0.1
description: IP address of the request that caused the event.
error_message:
type: string
example: GPU_QUOTA_EXCEEDED
description: For error events, the error message
parent_id:
type: string
example: compute-log-123
description: For some events, for example attach volume during instance provisioning, the ID of the parent event.
service:
type: string
example: VolumeProvider
description: For some events, the internal service that caused the event.
target_location_code:
type: string
example: ICE-01
description: For cross-datacenter events, the location code of the target location.
volume:
description: Associated volume object, if the object is a volume.
allOf:
- $ref: '#/components/schemas/ActivityVolumeDto'
compute:
description: Detailed compute object, if the object type is a compute.
allOf:
- $ref: '#/components/schemas/ActivityComputeDto'
target_volume_id:
type: string
example: 5c2841cd-336d-4331-b32f-a1bc3869f68f
description: For some events, the ID of the target volume.
target_volume:
nullable: true
description: Associated target volume object
type: object
allOf:
- $ref: '#/components/schemas/ActivityVolumeDto'
target_compute_id:
type: string
example: 69467793-74b7-4142-9edd-44d22604655b
description: For some events, the ID of the target compute.
target_compute:
nullable: true
description: Associated target compute object
type: object
allOf:
- $ref: '#/components/schemas/ActivityComputeDto'
source_volume_id:
type: string
example: 16ffc732-0b75-4a16-91b7-b061918c687f
description: For some events, the ID of the source volume.
source_volume:
nullable: true
description: Associated source volume object
type: object
allOf:
- $ref: '#/components/schemas/ActivityVolumeDto'
source_compute_id:
type: string
example: 918e630a-11c9-4123-b5ed-8f8fabadc72e
description: For some events, the ID of the source compute.
source_compute:
nullable: true
description: Associated source compute object
type: object
allOf:
- $ref: '#/components/schemas/ActivityComputeDto'
properties:
type: object
example:
delete_reason: evicted_by_on_demand
additionalProperties: true
description: Additional properties of the event.
required:
- id
- object_id
- object_type
- action_code
- project_id
- timestamp
- location_code
GetAuditLogResponseListDto:
type: object
properties:
data:
description: List of audit log events
type: array
items:
$ref: '#/components/schemas/AuditLogResponseDto'
cursor:
type: string
example: log_033FNaNcc0AtphhH71DLBW
description: Cursor for next page, if there are more results
required:
- data
DownloadAuditLogResponseDto:
type: object
properties:
url:
type: string
description: Pre-signed URL to download the exported audit log JSON file. Short-lived; request a new export once it expires.
example: https://object.storage.com/project-id/audit-log-20260317-141552-uuid.json?X-Amz-Signature=...
expires_at:
type: string
description: ISO timestamp after which the download URL expires.
example: '2026-03-17T14:30:52.872Z'
required:
- url
- expires_at
DownloadAuditLogParamsDto:
type: object
properties:
action:
type: string
enum:
- other
- create
- start
- start_complete
- shutdown_complete
- shutdown
- delete
- delete_complete
- attach
- attach_complete
- detach
- detach_complete
- clone
- resize
- rename
- transfer
- trash
- trash_complete
- restore
- cancel
- provisioning
- running
- configure_spot
- authenticate
- expire
- accept
- update_role
- revoke
- login
- logout
- login_failed
- auth_mfa_enable
- auth_mfa_disable
- auth_mfa_challenge
- auth_mfa_verify
- password_reset
- complete
- redeem
- suspend
- unsuspend
- approve
- decline
- update
- rotate_secret
- disable
- enable
description: Filter by action type
object_type:
type: string
enum:
- compute
- volume
- ssh_key
- invite
- user
- member
- cloud_api_credential
- object_storage_bucket
- object_storage_key_pair
- custom_image
- startup_script
- topup
- coupon
- bank_transfer
- bank_transfer_account
- balance
- other
- object_storage
- quota_request
- webhook
- auto_top_up
description: Filter by object type
start_date:
type: string
description: Return events created at or after this timestamp. Cannot be earlier than 90 days ago. Default is 90 days ago.
example: '2026-01-01T00:00:00.000Z'
end_date:
type: string
description: Return events created at or before this timestamp. Cannot be before the start date.
AuditLogResponseDto:
type: object
properties:
specversion:
type: string
example: '1.0'
description: The version of the CloudEvents specification that the event uses.
id:
type: string
example: log_033FNaNcc0AtphhH71DLBW
source:
type: string
example: https://api.verda.com/project/d6e7f8a9-b0c1-2345-defa-456789012345
type:
type: string
example: com.verda.api.cloud.compute.create.v1
description: The type of event that occurred, as `com.verda.api.<producer>.<object_type>.<action>.v1`.
subject:
type: string
example: 7bdb4161-c7d2-478c-9850-05719adc8381
description: This identifies the subject of the event in the context of the event producer. Typically it is ID of the object that the event is related to.
time:
type: string
example: '2026-03-17T14:15:52.872Z'
description: The time the event occurred.
data:
type: object
description: The data of the event, varies for different object types. For the subject of the event, the corresponding object is embedded; other related objects are referenced by ID.
example:
location_code: FIN-01
request_origin: console-11.17.0
actor_id: 5bbb59cb-fced-44a4-85c6-5005e7480a8f
compute:
id: 7bdb4161-c7d2-478c-9850-05719adc8381
hostname: tiny-tree-unfolds-fin-01
instance_type: CPU.4V.16G
is_cluster: false
ip: 1.1.1.1
os_volume_id: a6e77869-5012-42c0-b98e-792b4ba2cad9
location_code: FIN-01
required:
- specversion
- id
- source
- type
- subject
- time
- data
securitySchemes:
bearer:
scheme: bearer
bearerFormat: JWT
type: http
description: '[Generate the token here](#tag/authentication/POST/v1/oauth2/token). Bearer token to authenticate requests to the public API. You can generate a token by calling the `/v1/oauth2/token` endpoint.'
x-provenance:
method: harvested
publisher: DataCrunch
source: https://api.datacrunch.io/v1/openapi.json
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)