Account Setup
Get from zero to your first API call in four steps: authenticate, create an organization, store your API key, and start building.
1. Authenticate
Embedd uses passwordless authentication. Provide your email and enter the verification code sent to your inbox.
Request a code:
curl -X POST https://api.embedd.to/v1/auth/otp \
-H "Content-Type: application/json" \
-d '{"email": "you@company.com"}'
Verify the code:
curl -X POST https://api.embedd.to/v1/auth/verify \
-H "Content-Type: application/json" \
-d '{"email": "you@company.com", "code": "85056034"}'
Response:
{
"access_token": "eyJhbGciOi...",
"refresh_token": "53bku3di52oi...",
"expires_in": 3600,
"token_type": "bearer"
}
The access_token is your JWT — valid for 1 hour. Use it to create an organization. When it expires, use the refresh endpoint to get a new one.
2. Create an Organization
Organizations are the top-level container for all your resources. Create one using your JWT:
curl -X POST https://api.embedd.to/v1/organizations \
-H "Authorization: Bearer eyJhbGciOi..." \
-H "Content-Type: application/json" \
-d '{"name": "my-company"}'
Response:
{
"organization": {
"id": "org_abc123",
"name": "my-company",
"status": "active",
"tier": "free",
"created_at": "2026-03-13T10:00:00Z"
},
"api_key": "sk_live_abc123..."
}
This does three things:
- Creates your organization on the free tier
- Makes you the owner
- Generates your first API key and returns it once — store it now
The api_key value is the raw key. It will never be shown again.
3. Store Your API Key
From this point on, you use the API key for all resource operations — not the JWT.
Your API key is prefixed with sk_ and is used for all resource operations (connections, vector tables, queries). Include it in the Authorization header:
curl https://api.embedd.to/v1/connections \
-H "Authorization: Bearer sk_live_abc123..."
You can create additional API keys later via the API Keys endpoint.
What You Get
After creating an organization, you have:
| Resource | Details |
|---|---|
| Organization | On the free tier (3 tables, 100K vectors, 25 RPM) |
| Your role | Owner (full permissions) |
| API key | One full permission key |
| Environment | prod (created automatically, cannot be deleted) |
Environments
The prod environment is created automatically. All resources are scoped to an environment via the X-Environment-Id header. If you omit the header, requests default to prod.
To create additional environments (e.g., for development or staging):
curl -X POST https://api.embedd.to/v1/environments \
-H "Authorization: Bearer sk_live_abc123..." \
-H "Content-Type: application/json" \
-d '{"name": "dev"}'
See Environments API Reference for details.
Inviting Team Members
Owners and admins can invite others to the organization:
curl -X POST https://api.embedd.to/v1/organizations/org_abc123/invitations \
-H "Authorization: Bearer YOUR_SUPABASE_JWT" \
-H "Content-Type: application/json" \
-d '{"email": "teammate@company.com", "role": "admin"}'
Invitations expire after 7 days. See Organizations API Reference for the full invitation flow.
Next Steps
- Read about Authentication to understand API key vs JWT auth
- Check your Subscription Tier limits
- Follow a guide to create your first vector table: