1. Create TRI1 Identity
Open /developer, enter a name and handle, then select Create TRI1 Identity. This creates public identity material and stores the private signing key only in this browser.
Developer onboarding
A developer account is created by proving control of a TRI1 identity. The browser creates or loads your TRI1 identity locally, signs a server challenge, and receives a developer session token. TRI1 never receives the TRI1 private signing key.
Open /developer, enter a name and handle, then select Create TRI1 Identity. This creates public identity material and stores the private signing key only in this browser.
Select Sign with TRI1 identity. The API returns a challenge, your browser signs it locally, and TRI1 creates or resumes your developer account.
Pick what you are building, select Create key, copy the one-time API key, then run the generated first test curl command.
| TRI1 identity | Local browser identity | Your public TRI1 identity plus a private signing key kept on your device. Used to prove you are the developer. |
| Developer session | tri_dev_... | Short-lived dashboard token returned after TRI1 challenge verification. Used only for /v1/developer/me routes. |
| API key | tri_live_... | Server API credential created from the dashboard. Used by your app to call protected API endpoints. |
API keys are prefixed tri_live_ in production; non-production environments (for example staging) issue tri_stg_ keys. Both work the same way.
Fallback compatibility accounts can change password with the original/current password at /v1/developer/me/password. There is no email verification or email password reset in this flow.
| Button | Create TRI1 Identity | Creates a local TRI1 identity in this browser. No API account exists yet. |
| Button | Sign with TRI1 identity | Calls /v1/developer/tri1/challenge and /v1/developer/tri1/verify to create your developer session. |
| Field | What are you building? | Selects the correct API scopes automatically for common use cases like AI Agent, Identity lookup, Contacts, or Full test sandbox. |
| Button | Create key | Calls /v1/developer/me/tokens and returns the raw API key once. |
| Button | Run first test | Calls the matching first endpoint for the selected use case, such as /v1/agents for AI Agent keys. |
curl -X POST https://api.tri1space.com/v1/developer/tri1/challenge \
-H "Content-Type: application/json" \
-d '{
"profile": {
"identity": "TRI1-P-PUB-your-public-id",
"name": "Ada Developer",
"handle": "@ada",
"edPub": "BASE64_ED25519_PUBLIC_KEY",
"xPub": "BASE64_X25519_PUBLIC_KEY"
}
}'
curl -X POST https://api.tri1space.com/v1/developer/tri1/verify \
-H "Content-Type: application/json" \
-d '{
"challengeId": "challenge id from step 1",
"profile": {
"identity": "TRI1-P-PUB-your-public-id",
"edPub": "BASE64_ED25519_PUBLIC_KEY",
"xPub": "BASE64_X25519_PUBLIC_KEY"
},
"signature": "BASE64_SIGNATURE_CREATED_LOCALLY"
}'
curl -X POST https://api.tri1space.com/v1/developer/me/tokens \
-H "Authorization: Bearer $TRI_DEVELOPER_SESSION" \
-H "Content-Type: application/json" \
-d '{"tokenName":"identity client","scopes":["identity.read"]}'
curl -H "Authorization: Bearer $TRI_API_KEY" \
https://api.tri1space.com/v1/identity/me
{
"ok": true,
"me": {
"authenticated": true,
"apiKeyId": "key_123",
"developerAccountId": "dev_123",
"tokenPrefix": "tri_live_abcd",
"scopes": ["identity:read"],
"source": "database"
}
}
If the dashboard shows invalid_developer_session, you are not signed in yet. Create or load a TRI1 identity, then select Sign with TRI1 identity.