Skip to main content
A tenant user is one of your end-users. Every primitive — cards, inboxes, vault, connections, verification, formation — is scoped to a tenant user, so each of your customers gets their own isolated set of Naive resources. Tenant users are not auth subjects: they never sign in, and you manage them entirely through the API/SDK/CLI. On signup you automatically get a default tenant user, so solo usage needs no users.create() — every top-level call (naive.cards, naive.vault, …) acts on it. Multi-tenant builders create one tenant user per end-user and scope calls with naive.forUser(id).

CLI First

# Create a tenant user and make them the active CLI subject
naive users create --external-id alice_db_uuid --email alice@example.com --label "Alice"
naive users list
naive use <user_id>          # every subsequent command targets this user

Tools

ToolTypeDescription
users_listCoreList all tenant users in the workspace
users_createCoreProvision a new tenant user
users_getCoreFetch a single tenant user
users_updateCoreUpdate label, email, metadata, or assigned Account Kit
users_deleteManagementRemove a tenant user and their scoped resources

Creating a User

Each user is governed by an Account Kit. Omit account_kit_id to use your workspace’s Default kit.
curl -X POST https://api.usenaive.ai/v1/users \
  -H "Authorization: Bearer nv_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "external_id": "alice_db_uuid", "email": "alice@example.com", "label": "Alice" }'
Response:
{
  "id": "90a734a7-5f5a-4c4f-ba8f-80f770971d16",
  "external_id": "alice_db_uuid",
  "email": "alice@example.com",
  "label": "Alice",
  "status": "active",
  "account_kit_id": "4273359a-7a80-460c-a93f-f49f9058fd23",
  "is_default": false,
  "created_at": "2026-06-04T06:45:36Z"
}

Parameters

ParamTypeRequiredDefaultDescription
external_idstringNoYour own stable id for this user (e.g. your DB row id)
emailstringNoThe end-user’s email
labelstringNoHuman-friendly display name
account_kit_idstringNoDefault kitThe Account Kit governing this user
metadataobjectNoArbitrary JSON you can attach
The default tenant user is created on signup and can’t be deleted. Reference it as the sentinel default (e.g. /v1/users/default/vault) or via its id.

Listing & Fetching

curl https://api.usenaive.ai/v1/users \
  -H "Authorization: Bearer nv_sk_your_key"

Updating & Deleting

# Reassign a user to a different Account Kit
curl -X PATCH https://api.usenaive.ai/v1/users/{user_id} \
  -H "Authorization: Bearer nv_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "account_kit_id": "kit-uuid" }'

# Delete a user
curl -X DELETE https://api.usenaive.ai/v1/users/{user_id} \
  -H "Authorization: Bearer nv_sk_your_key"

Error Handling

ErrorCauseRecovery
not_founduser_id doesn’t exist in this workspace (or a cross-tenant id)Use GET /v1/users to list valid ids
invalid_inputMalformed account_kit_id / user_idPass a valid UUID, or omit to use the Default kit
duplicate_recordexternal_id already existsReuse the existing user or pick a new external_id

Typical Workflow

Your app signs up a new customer "Alice"

    ├─ POST /v1/users                       → Provision her tenant user
    │   { external_id: "alice_db_uuid" }
    │   → id: 90a734a7-...

    ├─ POST /v1/users/90a734a7.../connections/connect   → Connect Gmail for her
    ├─ PUT  /v1/users/90a734a7.../vault/openai_key       → Store her secret
    └─ POST /v1/users/90a734a7.../cards                  → Issue her a card
        (all isolated to Alice, governed by her Account Kit)