propgate docs

CLIsignup, confirm, keys

accounts

signup, confirm, and keys are the commands that talk to api.propgate.dev — the half of the CLI that check does not touch. Every example below shows the cURL a script would use alongside the CLI command that does the same thing.

Getting a key

Two calls. The first sends a six-digit code to the address you give it; the second exchanges that code for a key.

curl -X POST https://api.propgate.dev/v1/signup \
  -H "content-type: application/json" \
  -d '{"email":"you@example.com"}'
If you@example.com can receive mail, a six-digit code is on its way.
It expires in ten minutes.

  propgate confirm --email you@example.com --code <code>
curl -X POST https://api.propgate.dev/v1/signup/confirm \
  -H "content-type: application/json" \
  -d '{"email":"you@example.com","code":"123456"}'
Account created.

  pg_live_Ab3x...

Stored in /home/you/.config/propgate/config.json. It will not be shown again.

Managing keys

curl https://api.propgate.dev/v1/api-keys \
  -H "authorization: Bearer pg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
active   pg_live_Ab3x  ci              used 2026-08-01 09:14
REVOKED  pg_live_Qz9m  old-laptop      used never
curl -X POST https://api.propgate.dev/v1/api-keys \
  -H "authorization: Bearer pg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "content-type: application/json" \
  -d '{"name":"ci"}'
pg_live_Ab3x...

Shown once. This does not replace your stored key.

A created key is shown once and does not replace the key stored in your config file — the one keys create authenticated with keeps working afterwards.

curl https://api.propgate.dev/v1/api-keys \
  -H "authorization: Bearer pg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# find the id whose "prefix" is pg_live_Ab3x, then:
curl -X DELETE https://api.propgate.dev/v1/api-keys/019fcf4f-3e6a-71aa-9120-99d104f062ac \
  -H "authorization: Bearer pg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Revoked pg_live_Ab3x. It stops working on the next request.
propgate: "pg_live_A" matches 2 keys. Revoke by id instead:
  019fcf4f-...  ci
  019fcf51-...  staging

If a prefix matches more than one key, the command refuses and prints every id it matched instead of picking one.