Warning: JavaScript is not enabled or not loaded. Please enable JavaScript for the best experience.
Get API Key
API operational v2.4
v2.4 · Stable / Updated Apr 2026

Cloud API Documentation.

Everything you need to authenticate, call endpoints, and ship integrations in minutes. Built for developers who prefer reading curl over reading marketing copy.

Uptime
99.99%
Latency
~42ms
Endpoints
120+
quickstart.sh
# Base URL
GET https://api.cloudplatform.dev/v2
# Authenticate with bearer token
curl https://api.cloudplatform.dev/v2/me \
  -H "Authorization: Bearer $API_KEY"

Keep your $API_KEY server-side. Never commit keys to version control.

# what_it_does

A programmable cloud platform exposing compute, storage, messaging, and identity primitives behind a single, consistent HTTPS API. One credential, one base URL, one set of conventions across every resource.

# core_capabilities

01
Resource API

CRUD over JSON resources with predictable URIs and pagination.

02
Event streams

Webhooks and server-sent events for asynchronous state changes.

03
Idempotency

Safe retries via Idempotency-Key on all writes.

04
Scoped tokens

Granular API keys with per-resource permissions and rotation.

# typical_use_cases

  • Backend services that provision infrastructure or persist domain data.
  • Frontend apps consuming user-scoped data via short-lived bearer tokens.
  • DevOps automation: CI/CD pipelines, scheduled jobs, infrastructure-as-code.
  • Event-driven integrations consuming webhooks for downstream workflows.
conventions.http
# Base URL
https://api.platform.dev/v1

# Auth
Authorization: Bearer $API_KEY

# Request
Content-Type: application/json; charset=utf-8
Idempotency-Key: <uuid-v4>

# Response envelope
{
  "data":     { ... },
  "meta":     { "request_id": "req_8fA2", "page": 1 },
  "error":    null
}

# Errors → RFC 7807 problem+json
HTTP/1.1 422 Unprocessable Entity
{ "type": "validation_error", "detail": "..." }
02 / Authentication

Authentication

Every request to the API must be authenticated using a secret API key passed as a bearer token in the Authorization header.

scheme
Bearer
transport
HTTPS only
key prefix
sk_live_ / sk_test_
rotation
≤ 90 days
#1

API Keys

Generate keys from your dashboard. Each key is scoped to a project and environment. Treat keys like passwords — never commit them to source control or expose them in client-side code.

  • sk_live_* — production traffic, billable
  • sk_test_* — sandbox traffic, free, no side effects
  • Restrict each key by IP allowlist and scope (read / write / admin)
#2

Authorization Header

Include your API key as a bearer token in every request:

request.http
HTTP
GET /v1/resources HTTP/1.1
Host: api.example.com
Authorization: Bearer $API_KEY
Content-Type: application/json
Accept: application/json

Or with curl:

$ shell
$ curl https://api.example.com/v1/resources \
    -H "Authorization: Bearer $API_KEY" \
    -H "Content-Type: application/json"
#3

Environment Variables

Load keys from environment variables — never hardcode them. Use a .env file locally and a secrets manager in production.

.env gitignored
# production
API_KEY=sk_live_4eC39H...qLs7Jk
API_BASE_URL=https://api.example.com/v1

# sandbox
API_KEY_TEST=sk_test_4eC39H...qLs7Jk
#4

Security & Rotation

do
  • Rotate keys every 90 days
  • Use separate keys per environment
  • Revoke immediately on suspected leak
  • Send keys server-side only
  • Enable IP allowlists in production
don't
  • Embed keys in client bundles
  • Commit keys to git history
  • Share keys across teams over chat
  • Reuse production keys in dev
  • Log full keys in error traces

Rotation tip: create a new key, deploy it, verify traffic on the new key, then revoke the old one. Both keys remain valid during the overlap window.

// 03 /v1

Endpoints

Five core resource groups expose the full surface of the platform. All routes are JSON over HTTPS, share consistent pagination, filtering, and error semantics.

Base URL: https://api.platform.dev/v1
resource_01 stable

Projects

Top-level container for environments, deployments, and team access.

  • GET /projects
  • POST /projects
  • PATCH /projects/:id
  • DEL /projects/:id
paginatecursor
filtername, owner
errors404, 409
resource_02 stable

Environments

Isolated runtime targets — staging, prod, preview — scoped per project.

  • GET /projects/:id/envs
  • POST /envs/:id/vars
  • PUT /envs/:id

// secrets returned redacted; use ?reveal=true with elevated scope

resource_03 stable

Deployments

Trigger, inspect, and roll back builds across any environment.

  • POST /deployments
  • GET /deployments/:id/logs
  • POST /deployments/:id/rollback

// streams via SSE on Accept: text/event-stream

resource_04 beta

Metrics

Time-series telemetry for requests, latency, errors, and custom events.

GET /metrics/requests
GET /metrics/latency
GET /metrics/errors
POST /metrics/query
range1m–30d
group_byenv, route
limit10k pts
resource_05 stable

Webhooks

Subscribe to platform events with signed, retried HTTP callbacks.

  • POST /webhooks
  • GET /webhooks/:id/deliveries
  • POST /webhooks/:id/redeliver
// example payload application/json
{
  "id": "evt_8f3a91",
  "type": "deployment.succeeded",
  "created": "2026-04-28T10:14:22Z",
  "data": {
    "project": "prj_42",
    "env": "production",
    "sha": "a1b2c3d"
  }
}

Pagination

Cursor-based via ?cursor= & ?limit=. Max 100 / page.

Filtering

Query params per resource. Combine with &sort=-created.

Errors

RFC-7807 problem+json. Stable code field for programmatic handling.

# faq

Frequently asked questions

Quick answers to the questions developers ask most when integrating with our API. Need more? Reach out to support.

  • 01

    What are the API rate limits?

    Default limits are 1,000 req/min per key on the Free tier and 10,000 req/min on Pro. Burst capacity is enforced via a token bucket.

    Inspect the X-RateLimit-Remaining and Retry-After response headers. A 429 indicates you've been throttled.

  • 02

    How is API versioning handled?

    Versions are pinned in the URL path, e.g. /v1/resource. Breaking changes ship under a new major version.

    Minor, backwards-compatible additions are released continuously on the current version. Deprecated versions receive a 12-month support window with notices in the Sunset header.

  • 03

    Is there a sandbox for testing?

    Yes. Use https://sandbox.api.example.dev with a key prefixed sk_test_. Sandbox state is isolated and reset every 24 hours.

    All endpoints behave identically to production except for billing and outbound webhooks, which are simulated.

  • 04

    Which official SDKs are available?

    First-party SDKs are maintained for Node.js, Python, Go, Ruby, and Java. Each handles auth, retries with exponential backoff, and pagination.

    An OpenAPI 3.1 spec is published at /openapi.json for generating clients in other languages.

  • 05

    How do webhook retries work?

    Any non-2xx response triggers retries with exponential backoff (1m, 5m, 30m, 2h, 12h) for up to 72 hours.

    Each delivery is signed with X-Signature (HMAC-SHA256). Endpoints must respond within 10 seconds and be idempotent based on event.id.

  • 06

    Why am I getting 401 / 403 errors?

    401 Unauthorized usually means a missing or malformed Authorization: Bearer <token> header, an expired token, or sending a test key to production.

    403 Forbidden means the key is valid but lacks scope for that resource. Review key permissions in the dashboard.

  • 07

    What support and SLAs can I expect?

    Community support via GitHub Discussions and email is available on all plans, typically responding within 1 business day. Pro and Enterprise plans include a private Slack channel.

    Enterprise customers receive a 99.99% uptime SLA with credits for breaches. Live status and incident history are published at status.example.dev.

Still stuck? Open an issue with a request ID — every response includes X-Request-Id to speed up triage.