Resources

Accounts

An account is your identity inside your KYA Pro workspace. Sign-in is passwordless — a code is emailed to you. Once you verify, you get a kya_live_ API token.

The account object

FieldTypeDescription
idstring (UUID)Stable account id
emailstringVerified email address
plan_tierstringfree, team, or enterprise
tenant_idstring (UUID)Workspace this account belongs to
rolestringadmin, operator, viewer, auditor

Sign up

Ask for a sign-in code. Personal email domains (Gmail, iCloud, etc.) can't create new workspaces — KYA Pro is for organizations.

Request

POST /api/v1/accounts/signup

Body

FieldTypeRequiredDescription
emailstring (email)Corporate email address

Example

bash
curl -X POST https://api.veldtlabs.ai/api/v1/accounts/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

Response (200 OK):

json response
{ "status": "verification_sent" }

Rate-limited — honor Retry-After if you hit the limit.

Session info

Return everything about the signed-in account — profile, plan, quotas, remaining trial days, subscription status.

Request

GET /api/v1/accounts/me

Headers

  • Authorization: Bearer kya_live_<token>

Example

bash
curl https://api.veldtlabs.ai/api/v1/accounts/me \
  -H "Authorization: Bearer $VELDT_KYA_TOKEN"

Response (200 OK):

json response
{
  "account": {
    "id": "e782d920-...",
    "email": "[email protected]",
    "plan_tier": "team",
    "tenant_id": "abcd0000-...",
    "role": "admin"
  },
  "plan_tier": "team",
  "quotas": {
    "invocations_used_today": 0,
    "invocations_cap_per_day": 50000,
    "multi_judge_calls_used_this_month": 0,
    "multi_judge_calls_cap": 1000,
    "personas_used": 0,
    "personas_cap": 5,
    "agents_registered": 0,
    "agents_cap": 50
  },
  "display_name": "Team",
  "subscription_status": "trialing",
  "trial_ends_at": "2026-08-14T00:00:00Z",
  "account_status": "active",
  "trial_days_remaining": 14
}

account_status values: active, trial_expired, sub_lapsed, sub_canceled. Anything other than active means write endpoints return 402 — the account needs to upgrade or renew.

Issue additional token

Create a new kya_live_ token — useful for CI, per-service credentials, or replacing a leaked token before revoking the old one.

Request

POST /api/v1/accounts/tokens

Headers

  • Authorization: Bearer kya_live_<existing_token>

Body

FieldTypeRequiredDescription
namestringLabel, 1–64 chars. Shown in the token list UI.

Example

bash
curl -X POST https://api.veldtlabs.ai/api/v1/accounts/tokens \
  -H "Authorization: Bearer $VELDT_KYA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "ci-pipeline"}'

Response (200 OK):

json response
{
  "token": "kya_live_9f8e7d6c5b4a…",
  "token_id": "a1b2c3d4-...",
  "prefix": "kya_live_9f",
  "name": "ci-pipeline"
}

Requires an active account.

List tokens

Return details for every token the account has issued — the full secret is never shown again.

Request

GET /api/v1/accounts/tokens

Example

bash
curl https://api.veldtlabs.ai/api/v1/accounts/tokens \
  -H "Authorization: Bearer $VELDT_KYA_TOKEN"

Response (200 OK):

json response
{
  "tokens": [
    {
      "token_id": "a1b2c3d4-...",
      "prefix": "kya_live_9f",
      "name": "ci-pipeline",
      "created_at": "2026-07-31T10:00:00Z",
      "last_used_at": "2026-07-31T14:05:00Z",
      "revoked_at": null
    },
    {
      "token_id": "b2c3d4e5-...",
      "prefix": "kya_live_a1",
      "name": "default",
      "created_at": "2026-07-17T09:00:00Z",
      "last_used_at": "2026-07-31T09:00:00Z",
      "revoked_at": null
    }
  ]
}

Revoke a token

Turn off a token right away. Later calls with the revoked token return 401 Unauthorized.

Request

DELETE /api/v1/accounts/tokens/{token_id}

Example

bash
curl -X DELETE https://api.veldtlabs.ai/api/v1/accounts/tokens/a1b2c3d4-... \
  -H "Authorization: Bearer $VELDT_KYA_TOKEN"

Response (204 No Content).

Revocation always works — no rate limit, no gating check. You can always revoke a leaked token.