> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # GetOrCreateBrand # Package: catalogV3 # Namespace: BrandService # Method link: https://dev.wix.com/docs/api-reference/business-solutions/stores/catalog-v3/brands-v3/get-or-create-brand.md ## Permission Scopes: Brand write in v3 catalog: SCOPE.STORES.BRAND_WRITE ## Introduction Retrieves a brand by name, or creates a brand if one with the passed `brandName` doesn't exist. --- ## REST API ### Schema ``` Method: getOrCreateBrand Description: Retrieves a brand by name, or creates a brand if one with the passed `brandName` doesn't exist. URL: https://www.wixapis.com/stores/v3/brands/get-or-create Method: POST # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: brandName Method parameters: param name: brandName | type: brandName | description: Brand name to retrieve or create. | required: true param name: fields | type: array | description: Fields to include in the response. Supported values: `ASSIGNED_PRODUCTS_COUNT` - enum: ASSIGNED_PRODUCTS_COUNT Return type: GetOrCreateBrandResponse - name: brand | type: Brand | description: Brand. - name: id | type: string | description: Brand GUID. - name: revision | type: string | description: Revision number, which increments by 1 each time the brand is updated. To prevent conflicting changes, the current revision must be passed when updating the brand. Ignored when creating a brand. - name: createdDate | type: string | description: Date and time the brand was created. - name: updatedDate | type: string | description: Date and time the brand was updated. - name: name | type: string | description: Brand name. >**Note:** `name` must be unique. - name: assignedProductsCount | type: integer | description: Number of products this brand is assigned to. > **Note:** Returned only when you pass `"ASSIGNED_PRODUCTS_COUNT"` to the `fields` array in Brand API requests. Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: BRAND_LIMIT_EXCEEDED | Description: Number of brands exceeded the store limit. ``` ### Examples ### Get or Create a brand Get an existing brand using GetOrCreate method. Response should also include the amount of products using this brand. ```curl curl -X POST \ 'https://www.wixapis.com/stores/v3/bulk/brands/get-or-create' \ -H 'Content-type: application/json' \ -H 'Authorization: ' \ -d '{ "brandName": "Adidas" "fields": [ "ASSIGNED_PRODUCTS_COUNT" ] }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.catalogV3.BrandService.getOrCreateBrand(brandName, options) Description: Retrieves a brand by name, or creates a brand if one with the passed `brandName` doesn't exist. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: brandName Method parameters: param name: brandName | type: string | description: Brand name to retrieve or create. | required: true param name: options | type: GetOrCreateBrandOptions none - name: fields | type: array | description: Fields to include in the response. Supported values: `ASSIGNED_PRODUCTS_COUNT` - enum: ASSIGNED_PRODUCTS_COUNT Return type: PROMISE - name: brand | type: Brand | description: Brand. - name: _id | type: string | description: Brand GUID. - name: revision | type: string | description: Revision number, which increments by 1 each time the brand is updated. To prevent conflicting changes, the current revision must be passed when updating the brand. Ignored when creating a brand. - name: _createdDate | type: Date | description: Date and time the brand was created. - name: _updatedDate | type: Date | description: Date and time the brand was updated. - name: name | type: string | description: Brand name. >**Note:** `name` must be unique. - name: assignedProductsCount | type: integer | description: Number of products this brand is assigned to. > **Note:** Returned only when you pass `"ASSIGNED_PRODUCTS_COUNT"` to the `fields` array in Brand API requests. Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: BRAND_LIMIT_EXCEEDED | Description: Number of brands exceeded the store limit. ``` ### Examples ### Get or create a brand ```javascript import { brandsV3 } from "@wix/stores"; const brandName = "Adidas"; const options = { fields: ["ASSIGNED_PRODUCTS_COUNT"] }; async function getOrCreateBrand() { const response = await brandsV3.getOrCreateBrand(brandName, options); } /* Promise resolves to: * { * "brand": { * "_id": "38ae5b9b-1dc7-4a53-8377-909e4123caff", * "_createdDate": "2025-12-11T09:26:58.000Z", * "_updatedDate": "2025-12-11T09:26:58.000Z", * "revision": "1", * "name": "Adidas", * "assignedProductsCount": 0 * } * } */ ``` ### getOrCreateBrand (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { brandsV3 } from '@wix/stores'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { brandsV3 }, // Include the auth strategy and host as relevant }); async function getOrCreateBrand(brandName,options) { const response = await myWixClient.brandsV3.getOrCreateBrand(brandName,options); }; ``` ---