Skip to content

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.

bash
curl https://api.postlyra.com/teams \
  -H "Authorization: Bearer $POSTLYRA_TOKEN"
json
{
  "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.

FieldRules
namestring, max 100
emailemail, max 255, nullable
phonestring, max 50, nullable
addressstring, max 255, nullable
json
{ "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.

bash
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.

Postlyra, by MAVA Design