Documentation · Review-ready MVP

From access request to
your first API call.

SJJ Cloud is an orchestration layer for VPS providers. Keep your own provider accounts and use one API to provision, operate, and automate them.

Important: The production API base URL is https://api.sjjcloud.com. The endpoint shapes below are the stable MVP contract and examples for integration planning. Your account ID, limits, and provider adapter availability are confirmed in the approval email.
THE CUSTOMER JOURNEY

One clear path to a live workspace.

Every paid account follows the same five stages. This makes access, billing, and API delivery easy to understand.

01RequestApplication form 02ReviewHuman approval 03CheckoutStripe subscription 04ActivateWorkspace enabled 05API keyDelivered once
QUICKSTART

Register, review, pay, connect.

Use this sequence to prepare a customer-facing integration or to test the workflow manually.

01

Request access

Submit your intended use, estimated fleet size, and the providers you already use. Do not send provider secrets in the application form.

POST /v1/access-requests
{
  "email": "ops@example.com",
  "company": "Example Studio",
  "use_case": "multi-provider deployment",
  "expected_instances": 50,
  "providers": ["hetzner", "dmit"]
}
02

Wait for manual review

We verify the use case and send a decision email. The request is read-only until approved.

pending_reviewapprovedneeds_info
03

Open Stripe Checkout

Approved applicants receive a one-time Checkout link for the $199/month Core Plan. The plan renews monthly until cancelled from the billing portal.

GET /v1/billing/checkout
Authorization: Bearer sjj_live_••••

// response
{ "checkout_url": "https://checkout.stripe.com/...", "expires_at": "2026-09-11T00:00:00Z" }
04

Activate the workspace

After Stripe confirms payment, the workspace moves to active. The customer can manage subscription status, payment methods, invoices, and cancellation in the billing portal.

GET /v1/account
// response
{ "status": "active", "plan": "core", "renewal_date": "2026-10-04" }
05

Receive an API key

A secret key is shown once in the dashboard and sent to the verified account email. Store it in a secret manager and rotate it if exposed.

POST /v1/keys
{ "name": "production", "scopes": ["providers:read", "instances:write", "commands:write"] }

// response (shown once)
{ "key": "sjj_live_xxxxxxxxx", "created_at": "2026-09-04T12:00:00Z" }
API REFERENCE

One contract for every provider.

All requests use JSON and the Authorization: Bearer <API_KEY> header. Provider-specific differences are normalized by the adapter layer.

POST/v1/providers/{provider}/credentials

Connect a provider API key

Save an encrypted credential in an isolated workspace. SJJ Cloud uses it only to call the selected provider on your behalf.

{
  "api_key": "provider-secret",
  "label": "production-eu"
}

Never put provider keys in browser code, URLs, screenshots, or support tickets.

POST/v1/instances

Provision a VPS resource

Choose a provider and the portable fields below. Unsupported options return a clear 422 response with the provider capability matrix.

{
  "provider": "hetzner",
  "region": "fsn1",
  "plan": "cx22",
  "bandwidth_gb": 20,
  "image": "ubuntu-24.04",
  "name": "worker-01"
}
regioninstance planbandwidthoperating system
GET/v1/providers/{provider}/instances

List resources by provider

Keep provider boundaries visible while using one normalized schema.

?status=running&region=fsn1&limit=100

// response
{ "provider": "hetzner", "items": [
  { "id": "i_123", "name": "worker-01", "status": "running", "ipv4": "203.0.113.10" }
] }
POST/v1/commands/batch

Dispatch Linux commands in bulk

Target a saved inventory query or explicit instance IDs. Commands run through the provider connection and return per-host results.

{
  "instance_ids": ["i_123", "i_456"],
  "command": "sudo apt-get update -y",
  "timeout_seconds": 60,
  "continue_on_error": true
}
BETA/v1/workflows

Compose repeatable workflows In development

Workflows will organize multiple steps—provision, wait for readiness, install packages, run a command, and notify your team—into one auditable run.

{
  "name": "bootstrap-web-tier",
  "steps": [
    { "action": "provision", "provider": "hetzner", "plan": "cx22" },
    { "action": "wait_for_ssh", "timeout_seconds": 180 },
    { "action": "run_command", "command": "./install-nginx.sh" }
  ]
}
AI/v1/ai/schema

AI-agent friendly by design

Every endpoint can expose machine-readable JSON Schema and concise tool metadata. Agents can discover required fields, call the same REST API, and parse consistent success/error envelopes.

GET /v1/ai/schema?resource=instances
Accept: application/json

// tool metadata includes name, description,
// input_schema, output_schema, auth_scopes
JSON Schemastable tool namesidempotency keysstructured errors
REFERENCE ARCHITECTURE

Secrets stay in your workspace.

Credentials are stored server-side. Your application talks to SJJ Cloud; SJJ Cloud talks to each provider adapter.

Your app / AI agentBearer API keyJSON + schemas SJJ Cloud APIAuth + quotasNormalized contractEncrypted credentials Provider AProvider BProvider …
FOR AI AGENTS

Predictable inputs. Useful outputs.

Agents should not need provider-specific knowledge. Use the schema endpoint to generate tools, then pass an idempotency key for safe retries.

{ }

Discover

Fetch JSON Schema and tool metadata for each operation.

Execute

Call REST endpoints with normal auth and idempotency headers.

Verify

Parse the same structured envelope for success, partial results, or errors.

NEED ACCESS?

Tell us what you are building.

Share your use case and expected scale. We will reply with review status and next steps.

Email support ↗