TRI1 TRI1 APIapi.tri1space.com

Developer onboarding

Developer onboarding

Create a TRI1 developer account and make your first API call

Developer Onboarding

TRI1 first

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.

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.

2. Sign In

Select Sign with TRI1 identity. The API returns a challenge, your browser signs it locally, and TRI1 creates or resumes your developer account.

3. Generate API Key

Pick what you are building, select Create key, copy the one-time API key, then run the generated first test curl command.

What Each Token Means

Do not mix these up
TRI1 identityLocal browser identityYour public TRI1 identity plus a private signing key kept on your device. Used to prove you are the developer.
Developer sessiontri_dev_...Short-lived dashboard token returned after TRI1 challenge verification. Used only for /v1/developer/me routes.
API keytri_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.

Password fallback

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.

Dashboard Button Map

Open dashboard
ButtonCreate TRI1 IdentityCreates a local TRI1 identity in this browser. No API account exists yet.
ButtonSign with TRI1 identityCalls /v1/developer/tri1/challenge and /v1/developer/tri1/verify to create your developer session.
FieldWhat are you building?Selects the correct API scopes automatically for common use cases like AI Agent, Identity lookup, Contacts, or Full test sandbox.
ButtonCreate keyCalls /v1/developer/me/tokens and returns the raw API key once.
ButtonRun first testCalls the matching first endpoint for the selected use case, such as /v1/agents for AI Agent keys.

API Flow

Same flow without the UI

1. Request TRI1 challenge

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"
    }
  }'

2. Verify signed challenge

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"
  }'

3. Create API key

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"]}'

4. First successful call

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"
  }
}
Important

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.