Brands
In the API a brand is a team. The endpoints say /teams, the UI says "brand". Same object.
GET /teams
Every brand you belong to. This is how you discover the brand ids for X-Postlyra-Brand.
curl https://api.postlyra.com/teams \
-H "Authorization: Bearer $POSTLYRA_TOKEN"{
"teams": [
{
"id": 1,
"name": "My Brand",
"slug": "0f8fad5b-d9cb-469f-a165-70867728950e",
"account": { "id": 1, "trial_ends_at": "2026-09-01T00:00:00.000000Z" }
}
],
"current_team": { "id": 1, "name": "My Brand" }
}slug is the brand id. id is the numeric key, used only by PATCH /me/team.
GET /teams/{id}
One brand, by numeric id. Returns 404 if you are not a member.
PATCH /teams/{id}
Update a brand's details.
| Field | Rules |
|---|---|
name | string, max 100 |
email | email, max 255, nullable |
phone | string, max 50, nullable |
address | string, max 255, nullable |
{ "team": { "id": 1, "name": "Renamed" }, "message": "Team updated successfully." }PATCH /me/team
Change which brand is selected for your user. This one persists, unlike the X-Postlyra-Brand header.
curl -X PATCH https://api.postlyra.com/me/team \
-H "Authorization: Bearer $POSTLYRA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"team_id": 2}'Takes the numeric team_id. Returns 403 if you do not belong to it.
You need this for the endpoints that ignore the brand header, namely media and entitlements. For everything else prefer the header, which does not leave a side effect behind.
Creating a brand
POST /teams is routed but not implemented. Create brands in Studio, from the brand switcher.
How many you can create comes from the brands allowance on your plan. See Entitlements.