Account
Your company's account: who is calling, its keys, its caps, what it spent and the models it may use.
POST/v1/keysCreate a test or live key.
The full key is shown once.
Request3 fields
Body, if you send one
namestringA name for the key, to tell it apart later, up to 100 characters.
- Limits
- 1 to 100 characters.
- Example
production
scopes("all" | "runtime" | "setup" | "admin")[]What it may call: all alone, or 1 to 3 of runtime, setup and admin. Absent: all. A key only gives the scopes it has.
- Limits
- 1 to 3 items.
- Example
["runtime"]
expires_atstring (date and time)When the key stops working, an ISO 8601 date and time in the future. Absent: never.
- Type
string (date and time)
Answers 20113 fields
idstringThe key's id.
- Example
key_8f2k
object"api_key"Always api_key.
- Type
"api_key"
mode"live" | "test"live or test: what the key reaches. A test key sees only test users, test deployments and test money.
- Type
"live" | "test"
namestring | nullThe name you gave it; null when it has none.
- Type
string | null
prefixstringThe start of the secret, to tell keys apart: vk_live_ or vk_test_ and a few characters.
- Example
vk_test_8f2k
last4stringThe last four characters of the secret.
- Type
string
scopes("all" | "runtime" | "setup" | "admin")[]What the key may call: all, or any of runtime (conversations, work, routines, connected apps, files, memory, usage), setup (deployments, tests, secrets) and admin (users and keys).
- Type
("all" | "runtime" | "setup" | "admin")[]
status"active" | "expiring" | "expired" | "revoked"active: works, with no end. expiring: works until expires_at (a rolled key in its grace period, or one made to expire). expired or revoked: refused.
- Type
"active" | "expiring" | "expired" | "revoked"
created_atstringWhen it was made, as an ISO 8601 date and time in UTC.
- Type
string
last_used_atstring | nullWhen it last made a call; null when it never has.
- Type
string | null
expires_atstring | nullWhen it stops working; null when it never does.
- Type
string | null
revoked_atstring | nullWhen it was revoked; null while it is not.
- Type
string | null
secretstringThe whole key. It is shown this once: store it now, as Vestra keeps only its hash.
- Example
vk_test_...
const key = await vestra.keys.create();key = vestra.keys.create()vestra keys create# Check your key. See your company, this key, and whether it is test or live.curl "$VESTRA_BASE_URL/v1/me" \ -H "Authorization: Bearer $VESTRA_API_KEY" # Create a key for CI. This one can only set things up. Its secret is shown only once.curl "$VESTRA_BASE_URL/v1/keys" \ -H "Authorization: Bearer $VESTRA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "ci", "scopes": ["setup"] }' # Roll a key. You get a new secret, and the old one keeps working for an hour.curl "$VESTRA_BASE_URL/v1/keys/key_3vd/roll" \ -H "Authorization: Bearer $VESTRA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "grace_seconds": 3600 }' # Revoke a key. It stops working at once.curl -X DELETE "$VESTRA_BASE_URL/v1/keys/key_3vd" \ -H "Authorization: Bearer $VESTRA_API_KEY"No sample in your language for this route, so here it is over HTTP.
# Check your key. See your company, this key, and whether it is test or live.curl "$VESTRA_BASE_URL/v1/me" \ -H "Authorization: Bearer $VESTRA_API_KEY" # Create a key for CI. This one can only set things up. Its secret is shown only once.curl "$VESTRA_BASE_URL/v1/keys" \ -H "Authorization: Bearer $VESTRA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "ci", "scopes": ["setup"] }' # Roll a key. You get a new secret, and the old one keeps working for an hour.curl "$VESTRA_BASE_URL/v1/keys/key_3vd/roll" \ -H "Authorization: Bearer $VESTRA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "grace_seconds": 3600 }' # Revoke a key. It stops working at once.curl -X DELETE "$VESTRA_BASE_URL/v1/keys/key_3vd" \ -H "Authorization: Bearer $VESTRA_API_KEY"