Start a database export
const url = 'http://localhost:8000/clusters/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/exports';
const options = {
method: 'POST',
headers: {
'API-Version': '2026-06-01.beta',
'API-Key': '<API-Key>',
'Content-Type': 'application/json'
},
body: '{"format":"pgdump","include_credentials":false}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}curl --request POST \
--url http://localhost:8000/clusters/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/exports \
--header 'API-Key: <API-Key>' \
--header 'API-Version: 2026-06-01.beta' \
--header 'Content-Type: application/json' \
--data '{ "format": "pgdump", "include_credentials": false }'Queues a new database export for the cluster. The export is generated asynchronously;
poll GET /clusters/{cluster_id}/exports/{export_id} until status is completed,
then download the archive from download_url before expires_at.
When include_credentials is true, an encryption_password must be provided and the
resulting archive will be AES-256-CBC encrypted.
Returns 409 with code export_already_running if an export is already pending or
processing for this cluster. Exports older than the two-hour stale threshold do not
block new requests; age is measured from start time, or creation time if not started.
Required scope: clusters:exports:write
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Include the Keycloak credential and related tables. Requires encryption_password to be set.
Password used to encrypt the archive (AES-256-CBC, PBKDF2). Required when include_credentials is true. Never stored; only a hash is retained for verification.
Example
{
"format": "pgdump",
"include_credentials": false
}Responses
Section titled “Responses”Returned when an export has been accepted for processing. Poll the Location URL until status is completed or failed.
object
When the archive will be deleted from storage.
Completion percentage of the export job, from 0 to 100.
Whether the dump includes the credential and related Keycloak tables.
Whether the archive is AES-256-CBC encrypted with the password provided at creation time.
Size of the produced ZIP archive in bytes. Only set once status is completed.
SHA-256 checksum of the produced ZIP archive (hex). Only set once status is completed.
Time-limited presigned URL to download the archive. Only set when status is completed and expires_at is in the future. Returned URLs are valid for at least one hour.
Failure description. Only set when status is failed.
Example
{
"id": "5fa3e1a0-2c9b-4d2f-9b3a-1e8c4d2f9b3a",
"cluster_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"format": "pgdump",
"status": "completed",
"progress": 100,
"include_credentials": false,
"is_encrypted": false,
"file_size_bytes": 4823104,
"sha256_checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"download_url": "https://exports.skycloak.io/.../export.zip?X-Amz-Signature=...",
"expires_at": "2026-04-29T10:15:00Z",
"error_message": null,
"created_at": "2026-04-28T10:00:00Z",
"started_at": "2026-04-28T10:00:05Z",
"completed_at": "2026-04-28T10:15:00Z"
}Headers
Section titled “Headers”URL of the resource being created or modified. Poll this endpoint to track completion.
The server could not understand the request due to invalid syntax.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Access is unauthorized.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Client error
Returned when a workspace plan quota would be exceeded. required_plan indicates the minimum plan needed to complete the request.
object
Machine-readable identifier of the quota that was hit, so a client can tell
quotas apart without parsing detail. Known values include cluster_limit
(the workspace’s total cluster allowance), cluster_size_quota (the
allowance for the requested cluster size) and cluster_size (the requested
size is not offered on the plan at all). New values may be added.
How many of the resource the workspace currently has.
Maximum allowed by the current plan. 0 means the plan does not include the resource at all.
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"current_plan": "example",
"required_plan": "example",
"code": "example",
"current_usage": 1,
"current_limit": 1
}Access is forbidden.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}The server cannot find the requested resource.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}The request conflicts with the current state of the server.
object
Stable machine-readable reason for the conflict: export_already_running.
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"code": "example"
}Client error
object
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"errors": [
{
"field": "example",
"detail": "example",
"code": "example",
"value": "example"
}
]
}Client error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Headers
Section titled “Headers”Server error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Server error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}