CLI › signup, 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 nevercurl -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-... stagingIf a prefix matches more than one key, the command refuses and prints every id it matched instead of picking one.