API v1 is availableStable base URL: https://saveon.ng/api/v1Manage keys →
API v1Stable

A practical API for database infrastructure.

Use the same SaveOn workflows from your own backend, deployment pipeline, internal dashboard, or developer tooling. The portal documents the live v1 routes and keeps examples copy-ready.

Create an API key

JSON-first

application/json responses

Stable v1

Existing paths preserved

Key auth

X-API-Key or Bearer

Naira billing

Wallet-aware provisioning

Base URL

https://saveon.ng/api/v1

Quickstart

Make your first authenticated request

Generate a key in Settings, store it in your server environment, and call the account endpoint before provisioning resources.

01

Create a key

Keys are shown once. Treat them like production credentials.

02

Store it server-side

Use an environment variable such as SAVEON_API_KEY.

03

Call the account endpoint

Use the response to confirm access and current allowance.

bash
export SAVEON_API_KEY="saveon_live_your_key_here"
curl https://saveon.ng/api/v1/account \
  -H "X-API-Key: $SAVEON_API_KEY"
Authentication

Two supported key headers

The public v1 API accepts an API key through `X-API-Key` or `Authorization: Bearer saveon_live_…`. Keep keys on a trusted server and never ship them in browser JavaScript.

bash
curl https://saveon.ng/api/v1/account \
  -H "X-API-Key: saveon_live_your_key_here"
bash
curl https://saveon.ng/api/v1/account \
  -H "Authorization: Bearer saveon_live_your_key_here"
Account

Account and allowance

Use the account response to display wallet balance, verification state, database count, and current database allowance in an internal tool.

GET/accountAPI key

Get account

Returns the API key owner’s account profile, wallet balance, and database allowance.

Request

bash
curl https://saveon.ng/api/v1/account \
  -H "X-API-Key: saveon_live_your_key_here"

Response

json
{
  "user": {
    "id": "uuid",
    "email": "you@example.com",
    "name": "Ada",
    "wallet_balance_naira": 25000,
    "database_count": 1,
    "database_limit": 3
  }
}
Databases

Provision and operate databases

The database group covers listing, creation, details, secure connection retrieval, and deletion. The examples below use the actual live v1 paths.

GET/databasesAPI key

List databases

Lists databases owned by the API key owner.

Request

bash
curl https://saveon.ng/api/v1/databases \
  -H "X-API-Key: saveon_live_your_key_here"

Response

json
{
  "databases": [
    {
      "id": "uuid",
      "name": "my-app-db",
      "plan_id": "developer",
      "region": "cloud-region",
      "status": "active",
      "created_at": "2026-08-18T12:00:00.000Z"
    }
  ],
  "count": 1
}
POST/databasesAPI key

Create a database

Creates a PostgreSQL database, verifies the wallet balance, and charges the selected plan reservation.

Names must start with a letter.

Names are 3–30 characters and may contain letters, numbers, hyphens, and underscores.

The account must be verified and have enough wallet balance.

The current account allowance is three databases unless your account configuration says otherwise.

Request

bash
curl -X POST https://saveon.ng/api/v1/databases \
  -H "X-API-Key: saveon_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{  "name": "my-project-db",  "plan_id": "developer"}'

Response

json
{
  "database": {
    "id": "uuid",
    "name": "my-project-db",
    "plan_id": "developer",
    "region": "cloud-region",
    "status": "active"
  },
  "message": "Database \"my-project-db\" is ready."
}
GET/databases/:idAPI key

Get database

Returns the database record for a database owned by the API key owner.

Request

bash
curl https://saveon.ng/api/v1/databases/YOUR_DATABASE_ID \
  -H "X-API-Key: saveon_live_your_key_here"

Response

json
{
  "database": {
    "id": "uuid",
    "name": "my-app-db",
    "plan_id": "developer",
    "region": "cloud-region",
    "status": "active",
    "provider_project_id": "internal",
    "created_at": "2026-08-18T12:00:00.000Z"
  }
}
GET/databases/:id/connectionAPI key

Get connection details

Returns the connection details for an active database. Treat the response as a secret.

Never commit this response to source control.

Do not expose connection details in client-side logs.

Rotate credentials if the value is exposed.

Request

bash
curl https://saveon.ng/api/v1/databases/YOUR_DATABASE_ID/connection \
  -H "X-API-Key: saveon_live_your_key_here"

Response

json
{
  "connection_string": "postgresql://…",
  "host": "…",
  "database": "…",
  "port": 5432
}
DELETE/databases/:idAPI key

Delete database

Permanently deletes an owned database and its underlying infrastructure.

This action cannot be undone.

Export or migrate your data before deletion.

Use a separate production key with restricted operational access.

Request

bash
curl -X DELETE https://saveon.ng/api/v1/databases/YOUR_DATABASE_ID \
  -H "X-API-Key: saveon_live_your_key_here"

Response

json
{ "message": "Database deleted." }
API keys

Manage integration credentials

API-key management is dashboard-authenticated. The key creation response reveals plaintext only once; the public v1 resource endpoints use the resulting `saveon_live_…` key.

GET/apikeysDashboard bearer token

List API keys

Lists active and revoked API-key metadata for the signed-in dashboard session.

Request

bash
curl https://saveon.ng/api/v1/apikeys \
  -H "X-API-Key: saveon_live_your_key_here"

Response

json
{
  "success": true,
  "data": { "keys": [{ "id": "uuid", "name": "production", "prefix": "saveon_live_…", "is_active": true }] }
}
POST/apikeysDashboard bearer token

Create an API key

Creates an API key. The plaintext key is returned once and cannot be retrieved later.

Request

bash
curl -X POST https://saveon.ng/api/v1/apikeys \
  -H "X-API-Key: saveon_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "name": "production" }'

Response

json
{
  "success": true,
  "data": {
    "key": "saveon_live_…",
    "prefix": "saveon_live_…",
    "message": "Copy this API key now. It will not be shown again."
  }
}
DELETE/apikeys/:idDashboard bearer token

Revoke an API key

Immediately revokes an API key by its dashboard key ID.

Request

bash
curl -X DELETE https://saveon.ng/api/v1/apikeys/YOUR_DATABASE_ID \
  -H "X-API-Key: saveon_live_your_key_here"

Response

json
{ "success": true, "message": "API key revoked" }
Responses and errors

Build predictable integrations

Successful resource responses use the route-specific payload documented above. Errors return an HTTP status and a human-readable `error` field. Treat 401, 403, 404, and 402 as non-retryable until the request or account state changes.

json
{
  "error": "Human-readable error message"
}
javascript
const response = await fetch(url, options);
const body = await response.json();
if (!response.ok) {
  throw new Error(body.error ?? 'SaveOn API request failed');
}
StatusMeaningRetry?
400Invalid or missing inputNo, correct the request
401Missing or invalid API keyNo, authenticate
402Insufficient wallet balanceNo, fund the wallet
403Verification, allowance, or permission issueNo, resolve account state
404Resource not foundNo, check the ID
503Infrastructure provisioning unavailableRetry with backoff
Security checklist

Operate safely

Keep API keys in server-side environment variables.
Use separate keys for development, staging, and production.
Never log or commit connection strings.
Revoke a key immediately if it is exposed.
Use least privilege in your own application.
Treat delete operations as irreversible.

What is intentionally not public

Internal provider credentials, provider account names, raw project identifiers, payment secrets, and internal monitoring routes are not part of the public v1 contract. They remain server-side.

Manage API keysOpen databasesContact supportCurrent API base: https://saveon.ng/api/v1