Create a new series under a brand
Creates a new series under the specified brand with the provided name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series name and slug are unique.
/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series- API
- Management
- OpenAPI
- management-api
- Updated
- Apr 26, 2026
management-api:POST:/api/v1/{team_slug}/{app_slug}/brands/{brand_id}/series
Creates a new series under the specified brand with the provided name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series name and slug are unique.
API ownership
- API family: Management API
- Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data.
- Do not use from: Browser-only storefront code or public clients.
- Guide route: /apis/management/latest
The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.
Operation
- Method:
POST - Path:
/api/v1/\{team_slug\}/\{app_slug\}/brands/\{brand_id\}/series - Summary: Create a new series under a brand
- Description: Creates a new series under the specified brand with the provided name, slug, logo, cover image, and description. Validates that the parent brand exists and that the series name and slug are unique.
- OpenAPI contract: management-api
- Operation ID: Not documented in the OpenAPI contract.
Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| app_slug | path | Yes | string | App slug |
| team_slug | path | Yes | string | Team slug |
| brand_id | path | Yes | string | Id of brand |
Request body
- Required: Yes
- Description: data on series
- Content: application/json (object)
Brand Series Request
| Property | Type | Required | Details |
|---|---|---|---|
cover_id | string | No | - |
description | string | No | - |
email | string | No | - |
logo_id | string | No | - |
name | string | Yes | - |
slug | string | Yes | - |
Generated example (synthetic):
{
"cover_id": "string",
"description": "string",
"email": "string",
"logo_id": "string",
"name": "string",
"slug": "string"
}Responses
| Status | Description | Content |
|---|---|---|
| 200 | Series created successfully | application/json (object) |
| 400 | Invalid request (e.g. bad UUID, validation error) | application/json (object) |
| 401 | Unauthorized access | application/json (object) |
| 500 | Internal server error | application/json (object) |
200 - object
Series
| Property | Type | Required | Details |
|---|---|---|---|
data | object | No | - |
details | string[] | No | Additional contextual information about the response. Used to provide supplementary details beyond the main data payload, such as validation warnings or processing notes |
success | boolean | No | - |
Series
| Property | Type | Required | Details |
|---|---|---|---|
brand | object | No | brand for which the series belong to |
cover | object | No | - |
created_at | string | No | - |
description | string | No | series description |
email | string | No | series email |
id | string | No | id of series |
logo | object | No | - |
name | string | No | name of series |
slug | string | No | slug of series |
translations | object | No | - |
updated_at | string | No | - |
Brand Parent
| Property | Type | Required | Details |
|---|---|---|---|
id | string | No | id of brand |
name | string | No | name of brand |
slug | string | No | slug of brand |
Image
| Property | Type | Required | Details |
|---|---|---|---|
alt | string | No | - |
app_id | string | No | - |
attributes | object[] | No | - |
blurhash | string | No | - |
copyright | string | No | - |
custom | object | No | - |
folder_id | string | No | - |
id | string | No | - |
parent_id | string | No | - |
public | boolean | No | - |
source_app_id | string | No | - |
source_id | string | No | - |
status | string | No | - |
title | string | No | - |
translations | object | No | - |
url | string | No | - |
Image Translation
| Property | Type | Required | Details |
|---|---|---|---|
alt | object[] | No | - |
copyright | object[] | No | - |
title | object[] | No | - |
Brand Translations
| Property | Type | Required | Details |
|---|---|---|---|
description | object[] | No | - |
{
"data": {
"brand": {
"id": "string",
"name": "string",
"slug": "string"
},
"cover": {
"alt": "string",
"app_id": "string",
"attributes": [
{
"created_at": null,
"description": null,
"filterable": null,
"id": null,
"key": null,
"name": null,
"template_key": null,
"template_name": null,
"translatable": null,
"translations": null,
"updated_at": null,
"values": null
}
],
"blurhash": "string",
"copyright": "string",
"custom": {},
"folder_id": "string",
"id": "string",
"parent_id": "string",
"public": false,
"source_app_id": "string",
"source_id": "string",
"status": "string",
"title": "string",
"translations": {
"alt": [],
"copyright": [],
"title": []
},
"url": "string"
},
"created_at": "string",
"description": "string",
"email": "string",
"id": "string",
"logo": {
"alt": "string",
"app_id": "string",
"attributes": [
{
"created_at": null,
"description": null,
"filterable": null,
"id": null,
"key": null,
"name": null,
"template_key": null,
"template_name": null,
"translatable": null,
"translations": null,
"updated_at": null,
"values": null
}
],
"blurhash": "string",
"copyright": "string",
"custom": {},
"folder_id": "string",
"id": "string",
"parent_id": "string",
"public": false,
"source_app_id": "string",
"source_id": "string",
"status": "string",
"title": "string",
"translations": {
"alt": [],
"copyright": [],
"title": []
},
"url": "string"
},
"name": "string",
"slug": "string",
"translations": {
"description": [
{
"id": null,
"locale": null,
"value": null
}
]
},
"updated_at": "string"
},
"details": [
"string"
],
"success": false
}400 - object
Error Message
| Property | Type | Required | Details |
|---|---|---|---|
details | string[] | No | - |
message | string | No | - |
success | boolean | No | - |
Generated example (synthetic):
{
"details": [
"string"
],
"message": "string",
"success": false
}401 - object
Error Message
| Property | Type | Required | Details |
|---|---|---|---|
details | string[] | No | - |
message | string | No | - |
success | boolean | No | - |
Generated example (synthetic):
{
"details": [
"string"
],
"message": "string",
"success": false
}500 - object
Error Message
| Property | Type | Required | Details |
|---|---|---|---|
details | string[] | No | - |
message | string | No | - |
success | boolean | No | - |
Generated example (synthetic):
{
"details": [
"string"
],
"message": "string",
"success": false
}Contract identity
Use these fields to confirm you are implementing the intended endpoint contract.
- API family: Management API
- Method:
POST - Path:
/api/v1/\{team_slug\}/\{app_slug\}/brands/\{brand_id\}/series - Operation ID: Not documented in the OpenAPI contract.
- OpenAPI tag: Brands
- OpenAPI summary: Create a new series under a brand