Brands
A brand is the logo, name, and handle that PostNitro stamps onto generated carousels. These endpoints let you manage the brand kits in your workspace.
All endpoints require the embed-api-key header — see
Authentication.
The brand object
{
"id": "brand_123",
"name": "PostNitro", // display name
"image": "https://...", // logo URL
"handle": "@postnitroai", // social handle
"isCompanyDetail": false, // treat as a company (vs personal) brand
"showName": true, // render the name on slides
"showHandle": true, // render the handle on slides
"showImage": true // render the logo on slides
}List brands
GET /brandReturns brands in your workspace, most recently updated first.
Query parameters
| Parameter | Default | Description |
|---|---|---|
page | 1 | Page number (positive integer). |
limit | 10 | Items per page (1–100). |
Response 200
{
"success": true,
"data": {
"brands": [
{
"id": "brand_123",
"name": "PostNitro",
"image": "https://...",
"handle": "@postnitroai",
"isCompanyDetail": false,
"showHandle": true,
"showImage": true,
"showName": true
}
]
}
}Errors
| Status | Body | When |
|---|---|---|
404 | { "success": false, "message": "No brands found" } | The workspace has no brands. |
Create a brand
POST /brandRequest body
{
"name": "PostNitro", // required, string
"handle": "@postnitroai", // required, string
"image": "https://...", // required, string (logo URL)
"isCompanyDetail": false, // required, boolean
"showName": true, // required, boolean
"showHandle": true, // required, boolean
"showImage": true // required, boolean
}All seven keys are required and no other top-level key is accepted — sending
an unknown key is rejected with 422 Extra parameters passed in the body.
Example request
curl -X POST "https://embed-api.postnitro.ai/brand" \
-H "embed-api-key: $EMBED_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "PostNitro",
"handle": "@postnitroai",
"image": "https://cdn.example.com/logo.png",
"isCompanyDetail": false,
"showName": true,
"showHandle": true,
"showImage": true
}'Response 200
{
"success": true,
"data": {
"brand": {
"id": "brand_123",
"name": "PostNitro",
"image": "https://cdn.example.com/logo.png",
"handle": "@postnitroai",
"isCompanyDetail": false,
"showName": true,
"showHandle": true,
"showImage": true
}
}
}Errors
| Status | Body | When |
|---|---|---|
400 | { "error": "Brand name is required" } | name missing or not a string. |
400 | { "success": false, "message": "Brand handle is required" } | handle missing or not a string. |
400 | { "success": false, "message": "Brand image is required" } | image missing or not a string. |
401 | { "error": "You've reached the maximum number of brands that can be added to the organization." } | Plan brand limit reached. |
500 | { "success": false, "message": "Error creating Brand", ... } | Brand could not be created. |
Read a brand
GET /brand/:idPath parameters
| Parameter | Description |
|---|---|
id | The brand id. Must belong to your workspace. |
Response 200
{
"success": true,
"data": {
"brand": {
"id": "brand_123",
"name": "PostNitro",
"image": "https://...",
"handle": "@postnitroai",
"isCompanyDetail": false,
"showHandle": true,
"showImage": true,
"showName": true
}
}
}A 404 is returned when no brand with that id exists in your workspace.
Update a brand
PUT /brand/:idPath parameters
| Parameter | Description |
|---|---|
id | The brand id. Must belong to your workspace. |
Request body
Same shape as create — all seven keys are required by
validation. name, handle, and image are only overwritten when a non-empty
value is sent; the boolean display flags (isCompanyDetail, showName,
showHandle, showImage) are always applied.
Response 200
{
"success": true,
"data": {
"brand": { "id": "brand_123", "name": "PostNitro", "...": "..." }
}
}Errors
| Status | Body | When |
|---|---|---|
404 | { "success": false, "message": "Brand not found" } | No brand with that id in your workspace. |
500 | { "success": false, "message": "Error updating brand", ... } | Update did not complete. |
Validation & common errors
Request-shape errors return 422 { "status": false, "message": "..." }:
message | When |
|---|---|
Brand id is required | :id missing on read/update. |
Name is required / Image is required / Handle is required | Required body field missing (create/update). |
Is company detail is required / Show name is required / Show handle is required / Show image is required | Required boolean flag missing (create/update). |
Page must be a positive integer / Limit must be between 1 and 100 | Invalid list pagination. |
Extra parameters passed in the body. | Unknown top-level body key. |
See Authentication for 401 / 402 responses.