Control-plane API
Two APIs, two jobs. The S3 endpoint moves objects and is what your application talks to. The control plane — documented here — manages the things around them. It is a plain JSON API at prod.api.popcloud.ca.
This page is generated from the service’s own OpenAPI schema, so it cannot drift from the running API. 46 endpoints, in 6 groups.
Authenticating
Log in, keep the access token for the session, and send it as a bearer token. It is short-lived; a refresh cookie is set alongside it and POST /v1/auth/refresh issues the next one.
TOKEN=$(curl -fsS -X POST https://prod.api.popcloud.ca/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"you@example.com","password":"…"}' \
| python3 -c 'import json,sys; print(json.load(sys.stdin)["access_token"])')
curl -fsS https://prod.api.popcloud.ca/v1/buckets -H "Authorization: Bearer $TOKEN"Your PCAK storage credentials do not work here — they authenticate to the S3 endpoint and carry no control-plane authority. For automation that matters:
- You’ll see
- There is no API key to give a CI job or a Terraform provider that needs to create a bucket, mint a credential, or set CORS rules.
- Why
- The control plane authenticates people: an access token from `POST /v1/auth/login` plus a refresh cookie. Storage credentials (PCAK…) authenticate against the S3 endpoint only — they carry no control-plane authority.
- Instead
- For automation, log in from the job with a dedicated user's credentials, hold the access token for the run, and refresh if the run outlives it. Do not embed a human's long-lived session in shared CI. Bucket and credential creation is otherwise a one-time setup step you can do in the dashboard.
Collections & schema
- Postman collection — imports into Insomnia too. Set
baseUrlandaccessTokenand go. - .http file — for the VS Code REST Client and JetBrains HTTP client.
- OpenAPI schema — generate a typed client in your language.
Authentication
The control plane authenticates people, not machines: an access token plus a rotating refresh cookie. There is no API key — see the limitations page.
Your account
Who the current token belongs to, and their organisation.
Organisation
Organisation-level settings and members.
Credentials
Create, scope, rotate and revoke the PCAK credentials your applications sign with. The secret is returned exactly once.
Buckets, objects & CORS
Bucket lifecycle (which the S3 API deliberately does not offer), CORS rules for browser uploads, and server-side presigning.
System
Health and version.