dbmigratepro-com Backups API
The Backups API from dbmigratepro-com — 5 operation(s) for backups.
The Backups API from dbmigratepro-com — 5 operation(s) for backups.
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/dbmigratepro-com:dbmigratepro-com-backups-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: DBMigratePro REST Backups API
version: 1.0.0
summary: Migrate, convert, back up, and restore MySQL and PostgreSQL databases over HTTP.
description: 'Everything the dashboard does, it does through this API — there is no privileged back
channel — so a script or an AI agent can drive the whole product.
**Authentication.** A personal API token from Settings → API Tokens, sent as
`Authorization: Bearer `. Tokens are full-account: no endpoint currently checks a
narrower ability. Requests are scoped to the token owner''s *acting team*, which
`POST /api/teams/{team}/switch` changes — so the same token can see different resources
over time.
**Connection URLs are write-only.** Database URLs and storage secrets are encrypted at
rest and never appear in a response. There is no read-back endpoint.
**Rate limits, tiered by what an endpoint costs us** (per authenticated user, keyed on
user id):
- AI endpoints: 10/minute and 200/day — each call spends money on a model.
- Probe endpoints (anything that dials a database you supply): 20/minute.
- Reads: 300/minute. Writes: 60/minute. Token minting: 10/hour.
- Restores are deliberately left out of the probe and write tiers — they inherit only the
generous read limit above, because a restore has to work in the middle of an outage.
Unauthenticated public reads are IP-limited instead.
Each operation below carries an `x-rate-limit` field naming its tier.
**Rules for agents.** Two are not negotiable. An agent must never complete a payment on
a user''s behalf: when a run needs one, the response carries a `checkout_url` to hand
back to the user, and the run starts by itself once they authorise it. And a destructive
call — delete, reset — must be confirmed by the user first. A failed migration is never
charged, and restores are never charged at all, so both are safe to explain plainly.
This document is generated from the live route table. The narrative guides are at
https://dbmigratepro.com/docs, and there is an MCP server for clients that speak it —
see https://dbmigratepro.com/docs/mcp-setup.'
contact:
name: DBMigratePro support
url: https://dbmigratepro.com/contact
servers:
- url: https://dbmigratepro.com
security:
- bearerAuth: []
tags:
- name: Backups
paths:
/api/backups:
post:
operationId: postBackups
tags:
- Backups
summary: Create a backup schedule for a database. Daily is the shortest interval accepted
security:
- bearerAuth: []
x-rate-limit: 60/minute
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 255
nullable: true
frequency:
type: integer
minimum: 1440
db_url:
type: string
maxLength: 2000
source_db_type:
type: string
enum:
- mysql
- postgresql
nullable: true
retention_count:
type: integer
minimum: 1
maximum: 365
nullable: true
notify:
type: boolean
enabled:
type: boolean
storage_bucket_id:
type: integer
nullable: true
storage_provider:
type: string
enum:
- s3
- gcs
- custom
nullable: true
required:
- frequency
- db_url
responses:
'200':
description: Success.
'201':
description: Created, for the endpoints that create a resource.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'422':
description: Validation failed. The body carries `message` and `errors`.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
get:
operationId: getBackups
tags:
- Backups
summary: List the current team's backup schedules
security:
- bearerAuth: []
x-rate-limit: 300/minute
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
/api/backups/{backup}:
get:
operationId: getBackupsBackup
tags:
- Backups
summary: One backup schedule, with its recent runs and its storage destination
security:
- bearerAuth: []
x-rate-limit: 300/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
put:
operationId: putBackupsBackup
tags:
- Backups
summary: Update a backup schedule
security:
- bearerAuth: []
x-rate-limit: 300/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 255
nullable: true
frequency:
type: integer
minimum: 1440
db_url:
type: string
maxLength: 2000
source_db_type:
type: string
enum:
- mysql
- postgresql
nullable: true
retention_count:
type: integer
minimum: 1
maximum: 365
notify:
type: boolean
enabled:
type: boolean
storage_bucket_id:
type: integer
nullable: true
storage_provider:
type: string
enum:
- s3
- gcs
- custom
nullable: true
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'422':
description: Validation failed. The body carries `message` and `errors`.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
patch:
operationId: patchBackupsBackup
tags:
- Backups
security:
- bearerAuth: []
x-rate-limit: 300/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 255
nullable: true
frequency:
type: integer
minimum: 1440
db_url:
type: string
maxLength: 2000
source_db_type:
type: string
enum:
- mysql
- postgresql
nullable: true
retention_count:
type: integer
minimum: 1
maximum: 365
notify:
type: boolean
enabled:
type: boolean
storage_bucket_id:
type: integer
nullable: true
storage_provider:
type: string
enum:
- s3
- gcs
- custom
nullable: true
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'422':
description: Validation failed. The body carries `message` and `errors`.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
summary: Patch backups backup
x-summary-source: derived
delete:
operationId: deleteBackupsBackup
tags:
- Backups
summary: Delete a backup schedule and its stored objects
security:
- bearerAuth: []
x-rate-limit: 300/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
/api/backups/{backup}/run:
post:
operationId: postBackupsBackupRun
tags:
- Backups
summary: Run a backup now instead of waiting for the schedule
security:
- bearerAuth: []
x-rate-limit: 60/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
responses:
'200':
description: Success.
'201':
description: Created, for the endpoints that create a resource.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'422':
description: Validation failed. The body carries `message` and `errors`.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
/api/backups/{backup}/runs:
get:
operationId: getBackupsBackupRuns
tags:
- Backups
summary: Paginated, searchable run history for one schedule
security:
- bearerAuth: []
x-rate-limit: 300/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
/api/backups/{backup}/runs/{backupRun}/download:
get:
operationId: getBackupsBackupRunsBackupRunDownload
tags:
- Backups
summary: State of a prepared download, plus a signed URL once it is ready
security:
- bearerAuth: []
x-rate-limit: 300/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
- name: backupRun
in: path
required: true
schema:
type: string
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
post:
operationId: postBackupsBackupRunsBackupRunDownload
tags:
- Backups
summary: Ask for a decrypted, downloadable copy of a completed run
security:
- bearerAuth: []
x-rate-limit: 60/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
- name: backupRun
in: path
required: true
schema:
type: string
responses:
'200':
description: Success.
'201':
description: Created, for the endpoints that create a resource.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'422':
description: Validation failed. The body carries `message` and `errors`.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
delete:
operationId: deleteBackupsBackupRunsBackupRunDownload
tags:
- Backups
summary: Discard a prepared download copy
security:
- bearerAuth: []
x-rate-limit: 300/minute
parameters:
- name: backup
in: path
required: true
schema:
type: string
- name: backupRun
in: path
required: true
schema:
type: string
responses:
'200':
description: Success.
'401':
description: Missing or invalid API token.
'403':
description: The resource belongs to another team, or the endpoint is admin-only.
'404':
description: No such resource.
'429':
description: Rate limit exceeded for this tier. Retry after the `Retry-After` header.
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'A personal API token from Settings → API Tokens, sent as `Authorization: Bearer <token>`.'
externalDocs:
description: Documentation
url: https://dbmigratepro.com/docs