Skip to main content
This walks the whole path once: create the account, grab a key, identify a contact, and read it back. Everything below runs against https://api.userkit.dev.

1. Create your account

Sign up at app.userkit.dev. Sign-up creates the user, the organization, your owner membership, both environments and their publishable keys in a single transaction, then drops you into the panel.
Every organization is born with a live and a test environment. What separates them is the key you present, never a parameter — start in test and nothing you do here shows up in production’s numbers.

2. Mint an API key

In the panel, Settings → API keys, create a key in the test environment. A key is born inside one environment and never leaves it; the environment is recorded in the prefix itself (uk_sk_test_…).
The key’s value is shown exactly once. Only its SHA-256 hash is stored, so a lost key is replaced, never recovered.

3. Check the key

The first call every integrator makes. What comes back is the environment the key belongs to — nothing you send can name a different one.
Response

4. Identify a contact

Now the customer plane. Send whatever identities your backend knows; at least one of external_id, email or anonymous_id is required.
Response — 201
Call it again with the same external_id and you get 200 with "created": false — identify is create-or-update, not create.
email_verified stays false until an actual link is clicked. Passing an email to the API records an attribute; it does not prove one.

5. Read it back

The detail read adds the contact’s identity edges — the values that resolve to it:
Try the same id with a live key and you get 404. That is environment isolation working: the key’s environment scopes the read, and the 404 does not reveal whether the row exists somewhere else.

Where to go next

Contacts

Identity edges, attribution and how merges work.

Choosing an auth mode

Hosted or federated — decide before you wire the front end.

Environments

What live and test actually separate.

Roles and permissions

Give your teammates less than everything.