Teams
Get team
Retrieve a team's details, plan, and usage.
GET /teams/{teamId}
Returns full details for a single team, including its plan limits and current usage. Requires at least the viewer role on the team.
Authentication: Bearer token · Role: viewer · Permission:
teams:read · Team permission:team_settings.read · Rate limit: default (120 / 60s)Path parameters
teamId
string · uuid v7 required
The ID of the team to retrieve, from list teams.
Request
curl https://api.twominutereports.com/v1/teams/0190f8b0-1a2b-7c3d-8e4f-5a6b7c8d9e0f \
-H "Authorization: Bearer tmrc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Response
Returns the full team object.
{
"success": true,
"data": {
"id": "0190f8b0-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
"name": "Acme Marketing",
"logoUrl": "https://cdn.twominutereports.com/tmr/team_logo/0190f8b0-1a2b-7c3d-8e4f-5a6b7c8d9e0f-9f2c4b7e1a3d5c8f.png",
"brandColor": "#2563eb",
"timezone": "Asia/Kolkata",
"createdAt": "2026-01-12T08:15:00.000Z",
"updatedAt": "2026-05-20T11:42:00.000Z",
"plan": {
"name": "Growth",
"status": "active",
"endsOn": null,
"currencyCode": "USD",
"frequency": "month",
"destinations": {
"core": "gs",
"additional": ["gds"]
},
"limits": {
"seats": { "base": 5, "addons": 3, "total": 8 },
"accountsPerConnector": { "base": 10, "addons": 5, "total": 15 },
"schedules": {
"total": 100,
"allowedFrequencies": ["Daily", "Weekly", "Monthly"]
}
}
},
"usage": {
"members": { "count": 6 },
"seats": { "used": 4, "entitled": 8, "available": 4, "unlimited": false, "status": "ok" },
"accountsPerConnector": {
"gadw": { "count": 4, "status": "ok" },
"fb": { "count": 15, "status": "reached" }
},
"schedules": {
"count": 42,
"byFrequency": { "Hourly": 0, "Daily": 30, "Weekly": 10, "Monthly": 2 },
"status": "ok",
"hasRestrictedFrequency": false
}
}
}
}
{
"success": false,
"error": { "code": "BAD_REQUEST", "message": "Invalid UUID: \"abc\"" }
}
Returned when you are not a member of the team, or your role is below viewer.
{
"success": false,
"error": { "code": "FORBIDDEN", "message": "You do not have permission to perform this action" }
}
{
"success": false,
"error": { "code": "NOT_FOUND", "message": "The requested resource was not found" }
}
Fields
id
string · uuid v7
Team identifier.
name
string | null
Display name, or
null if unnamed.logoUrl
string | null
The team's own logo, or
null when it has none — render the team's initials in that case. Set it with Upload team logo. This is not the client-facing logo shown on a client's dashboard; that one belongs to the client.brandColor
string | null
The team's brand colour as
#rrggbb, shown behind its initials when it has no logo, or null when unset. Internal identity only: a client's own brand colour is set per client and is what appears on client-facing output.timezone
string | null
The IANA zone the team works in, or
null when unset — read null as UTC. It times the team's daily schedule-failure summary, formats its query log sheet, and is what a query default set to follow the team inherits. Set it with Update team timezone. It does not affect when a schedule runs.createdAt
string
When the team was created.
updatedAt
string | null
When the team was last updated, or
null.plan
object | null
The team's subscription plan, or
null if the team has no plan. Contains name, status (active, in_trial, non_renewing, cancelled), endsOn, currencyCode (USD, INR, EUR), frequency (month, year), destinations, and limits.plan.limits
object
Effective limits.
seats and accountsPerConnector each break down into base, addons, and total. schedules has a total cap (nullable) and allowedFrequencies (nullable array).Responses still carry a legacy users field mirroring seats. It is deprecated, it is not part of this contract, and it will be removed — read seats.usage
object
Current usage against the plan.
seats is the capped one: used, entitled, available, an unlimited flag, and a status. On a plan with unlimited seats, entitled and available are null rather than a large number — branch on unlimited, and never render "used of entitled" without checking it.members carries a count and no status, deliberately. Members are unlimited on every current plan, so there is no limit to be near; a status here would report a team as "at limit" for having colleagues.accountsPerConnector is keyed by connector ID, and schedules includes a byFrequency breakdown and hasRestrictedFrequency. Both carry a status of ok, reached, or exceeded.