team.created
New team is created. Creating additional teams requires Growth tier or higher.
project_id is always null for team events — these are account-level.
Creating additional teams requires Growth tier or higher.
Endpoints are scoped to a team, and an endpoint cannot exist for a team before
that team does, so this event is not currently delivered to any subscriber.
Poll GET /v1/teams if you need to observe team
creation.
When this fires
A team is created — including the personal team created alongside a new account. Creating additional teams requires Growth tier or higher.
Required ability
team:view — token must carry this at mint time to subscribe an endpoint to this event.
Payload
{
"id": "evt_01HX...",
"type": "team.created",
"created_at": "2026-05-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": null,
"data": {
"team_id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86",
"name": "Research Team",
"owner_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80"
}
}Field reference
| Field | Type | Notes |
|---|---|---|
id | string ULID | Unique event id, prefixed evt_. Use for idempotent processing. |
type | string | Always team.created for this event. |
created_at | ISO 8601 timestamp | Server-side emission time. |
api_version | string | Webhook API contract version. |
project_id | null | Always null — account-level event. |
data.team_id | string UUID | Team identifier. |
data.name | string | Display name. |
data.owner_id | string UUID | User id of the team owner. |
Caveats
- Creating an additional team requires the Growth tier or above. The personal team created at registration is not gated, so the event is emitted on every tier — it is the subsequent, explicit team creations that Free and Starter cannot reach.
- The personal team created with the account emits this too. Nothing in the payload distinguishes it from an explicitly created team.
Related events
team.deleted— terminal state.team.member.invited— typical follow-up.- Team events overview — back to family overview.
How is this guide?