veil

Read an API owner account

Read shared limits, quota balances, usage, keys and private activity.

GET/v1/developer/accounts/{n}
Access
Signed request
Client
Local or server client

Parameters#

NameLocationMeaning
nRequiredPathPermanent number of the person or organisation that owns the allowance.

Send the common signed-request headers, including X-Nonce and X-Timestamp. A signed GET has no JSON body. Request signing

Request examples#

cURL
curl -fsS \
  -H "X-Public-Key: $PUBLIC_KEY" -H "X-Signature: $REQUEST_SIGNATURE" \
  -H "X-Nonce: $NONCE" -H "X-Timestamp: $TIMESTAMP" \
  "https://veil.rip/v1/developer/accounts/1"

Response#

HTTP 200application/json

owner, suspended, limits, quota, usage, history, keys, next, audit and permissions. History covers the latest 31 days. The initial key page has at most 50 rows and the audit has at most 20.

FieldTypeMeaning
ownerintegerPermanent owner card number.
suspendedbooleanWhether the entire API account is suspended.
limitsobjectrequestsPerMinute, verificationPerMinute and optional dailyLimit.
quotaQuotaCurrent shared and additional balances.
usageUsageCurrent UTC-day usage.
historyarray<Usage>Daily rows for the latest 31 days.
keysarray<ApiKey>First page of at most 50 key metadata rows.
nextinteger | nullPass as before to the keys endpoint for older keys.
auditAuditPageNewest private receipts, at most 20 initially.
permissionsarray<string>Actions the current signed caller may perform.

Expand a nested object for its fields. Types ending in null allow a null value; optional fields may be absent. Other fields are present in that object.

API key metadata ApiKey
FieldTypeMeaning
idstringPublic key-management ID, not the bearer secret.
ownerintegerPermanent owner card number.
labelstringIntegration label supplied by its owner.
prefixstringNon-secret display prefix.
scopesarray<string>read and/or verify.
statestringactive, expired, suspended or revoked. Account suspension is reported separately.
createdAtstringCreation time in ISO 8601 UTC.
expiresAtstringExpiry time in ISO 8601 UTC.
revokedAtstring | nullPermanent revocation time.
suspendedbooleanWhether this key is suspended.
requestsPerMinuteinteger | nullAdditional per-key cap, or null.
lastUsedAtstring | nullLast admitted use, or null if never used.
requestsintegerLifetime admitted requests for this key.
Shared and additional quotas Quota
FieldTypeMeaning
requestsBucketOwner’s shared request bucket.
verificationBucketAdditional shared verification bucket. Verification consumes both buckets.
dailyBucket | nullAdditional daily cap, if set.
keyBucket | nullAdditional per-key cap, if set.
Quota bucket Bucket
FieldTypeMeaning
limitintegerBucket capacity, or the UTC-day cap for a daily bucket.
remainingintegerWhole requests currently available.
resetAtintegerUnix seconds when the bucket will be full, or the next UTC midnight for a daily cap.
UTC-day usage Usage
FieldTypeMeaning
daystringUTC date in YYYY-MM-DD format.
requestsintegerAdmitted requests during the day.
verificationsintegerAdmitted verifications; included in requests.
rejectedintegerRejected quota admissions during the day.
Private receipt page AuditPage
FieldTypeMeaning
ownerintegerOwner card number.
eventsarray<AuditEvent>Newest receipts first.
nextinteger | nullPass as before to read older receipts. Null ends pagination.
Private management receipt AuditEvent
FieldTypeMeaning
idintegerReceipt cursor.
ownerintegerPermanent owner card number.
keyIdstring | nullAffected key, or null for an account change.
actorintegerCard that signed the management request.
actionstringManagement action, such as create, revoke or account_limits.
reasonstringStaff reason, or an empty string for an owner action.
detailsobjectAction-specific metadata, including before/after values for limit changes. Never contains the bearer secret.
proofobjectExact method, path, body, public key, alg and signature of the signed request.
createdAtstringReceipt time in ISO 8601 UTC.

Response headers#

HeaderValueMeaning
Content-Typeapplication/jsonUse the declared media type before choosing a parser.
DateHTTP dateServer time. Compare it with your clock when signing requests.
Cache-Controlno-storeDo not persist private or temporary responses in a shared cache.
Retry-Afterinteger seconds, on rate_limited or busyWait at least this long before retrying. Other 429/503 codes do not necessarily include it.

Usage notes#

  • The owner signs with an active device key. Organisation management requires an accepted owner. Bearer API keys cannot authorise this call.
  • The response is private and uses Cache-Control no-store.
  • Management writes accept at most 8 KiB and reject unknown body fields. nonce and timestamp are the common signing fields.

Errors#

API errors return an error object. Use error.code for program logic; error.message is English text for people and can change. Response and error guide

HTTPCodeMeaning and next step
400invalid_parameter

A path, query or body field is missing, malformed or outside its accepted range.

Correct the field named in error.message before sending again.

403identity_banned

The acting identity is suspended by Veil staff.

Wait for the restriction to end or ask staff to review it.

403key_mismatch

The signing key does not have authority over this card or operation.

Use an active device key with the required owner or member role.

404not_found

The requested card, key, alias, code or resource was not found.

Check the identifier. Temporary codes and previews may already have expired or been used.

Shared request errors
HTTPCodeMeaning and next step
400invalid_nonce

The signed-request nonce has an invalid format.

Generate a fresh 16 to 128-character nonce using letters, digits, _ or -.

400invalid_signature_alg

X-Signature-Alg is unsupported.

Use a supported signing algorithm and matching key/signature encoding.

400invalid_timestamp

The signed-request timestamp is not Unix milliseconds.

Use an integer Unix timestamp in milliseconds and sign the corrected request.

401invalid_signature

The HTTP request signature does not verify.

Sign the exact method, path and body bytes, without changing them afterwards.

401missing_signature

The request requires a device signature and its headers are missing or unreadable.

Send X-Public-Key, X-Signature and the signed-request metadata. An API key does not replace a device signature.

401stale_timestamp

The signed timestamp is outside the accepted clock window.

Compare the server Date header with your clock, then generate a fresh nonce, timestamp and signature.

403key_banned

The device signing key is suspended by Veil staff.

Use an authorised active key or ask staff to review the restriction.

409replayed_nonce

The signing key already used this nonce.

Check whether the previous request succeeded before making a fresh signed request.

429rate_limited

An anonymous, signed-request or API-key allowance was exceeded.

Wait at least Retry-After seconds. Share a queue and retry budget across your workers.

500internal_error

An unexpected server error occurred. Internal details are not returned.

Retry reads with bounded backoff. Check write results before sending a new signed operation.

503busy

The application has reached a temporary concurrency or database limit.

Wait Retry-After seconds and retry with bounded backoff.