Logo fields appear after an image is uploaded. Shared-model fields that do not participate in this API are intentionally omitted.
Brand10 fields
brandIdinteger
Brand identifier within the current SelSup account.
read-only
namestring
Brand name. Leading and trailing spaces are removed when saved.
Required
logoUrlstring
Public URL of the current logo.
read-only
logoSizeinteger
Logo size in bytes.
read-only
logoWidthinteger
Logo width in pixels.
read-only
logoHeightinteger
Logo height in pixels.
read-only
deletedboolean
Whether the brand is archived.
ozonNamestring
Brand name in the Ozon catalog.
nullable
ozonIdinteger · int64
Brand identifier in Ozon.
nullable
oneCIdstring
External brand identifier in 1C.
nullable
Error contract
How application errors are returned
The error code is identical in every locale, while the user-facing message is translated by the server. Build application logic around error and use localMessage for display only.
error
Stable machine-readable code for integration logic.
localMessage
Display-ready message in the API token user's language.
params
Values interpolated by the server into the localized message template.
文
localMessage uses the lang field of the user who owns the API token. The documentation language and Accept-Language header do not change it; Russian is used when the user has no language configured.
RUUser locale is ru
{
"error": "error_brand_already_exists",
"localMessage": "Бренд Base уже существует",
"params": {
"name": "Base"
}
}
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
GET
List all brands
/api/brand/all
Token with read access
Returns every brand in the account, sorted by name.
i
For large directories and recurring synchronization, use /find with pagination.
curl --request GET 'https://api.selsup.ru/api/brand/all' \
--header 'Authorization: YOUR_API_TOKEN'
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
GET
Get a brand by ID
/api/brand/{brandId}
Token with read access
Returns a brand from the current account by its internal identifier.
i
The current implementation returns an empty value for an unknown brandId instead of HTTP 404. Handle an empty response.
Path parameters
Field
Type
Required
Description
brandId
integer
Yes
Brand identifier in SelSup.
curl --request GET 'https://api.selsup.ru/api/brand/8124' \
--header 'Authorization: YOUR_API_TOKEN'
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
POST
Create a brand
/api/brand
Token with write access
Creates a brand in the current account. name is enough for the common case.
i
Names are compared case-insensitively; “Base” and “base” are treated as the same brand.
Request body
application/json
Field
Type
Required
Description
name
string
Yes
Unique, non-empty brand name.
ozonName
string
No
Name from the Ozon directory, when known.
ozonId
integer · int64
No
Ozon brand ID when cards are sent without a prior import.
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
400error_empty_brand_name
Empty brand name
name is missing, empty, or contains whitespace only.
400error_brand_already_exists
Brand already exists
The account already has a case-insensitive match. params.name contains the conflicting name.
400error_subscription_expired
Subscription expired
Pay the tariff to continue using the service. Use error_subscription_expired in integration logic.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
PUT
Update a brand
/api/brand/{brandId}
Token with write access
Replaces the editable brand fields. The ID comes from the URL; do not send brandId in JSON.
i
This is PUT, so include every value you need to preserve. Logo fields are managed by separate endpoints.
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
400error_empty_brand_name
Empty brand name
name is missing, empty, or contains whitespace only.
400error_brand_already_exists
Brand already exists
The account already has a case-insensitive match. params.name contains the conflicting name.
400error_subscription_expired
Subscription expired
Pay the tariff to continue using the service. Use error_subscription_expired in integration logic.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
DELETE
Delete, archive, or restore a brand
/api/brand/{brandId}
Token with write access
With deleted=true, SelSup attempts a hard delete. If references exist, it archives the brand instead. deleted=false restores it.
References prevented deletion, so the brand was archived.
brand_has_been_restore
The brand was restored from the archive.
"brand_signed_as_deleted"
Errors3
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
POST
Upload a logo
/api/brand/{brandId}/image
Token with write access
Uploads an image as multipart/form-data. An existing logo is replaced.
i
Send the binary file in file; this endpoint does not accept JSON.
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
400error_brand_to_found
Logo target not found
brandId does not exist in the current account. The documentation preserves the error code exactly as returned by the API.
400error_wrong_image_format
Unsupported image
The file could not be decoded as a supported image format.
400error_max_upload_size_exceeded
File is too large
The multipart request exceeds the server upload limit.
400error_subscription_expired
Subscription expired
Pay the tariff to continue using the service. Use error_subscription_expired in integration logic.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
DELETE
Delete a logo
/api/brand/{brandId}/image
Token with write access
Deletes the logo file and resets its dimensions in the brand record.
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
400error_brand_to_found
Logo target not found
brandId does not exist in the current account. The documentation preserves the error code exactly as returned by the API.
400error_empty_brand_logo
Brand has no logo
Logo deletion was requested for a brand without a logo.
400error_cant_remove_brand_logo
Logo deletion failed
Storage could not delete the file or update the brand record.
400error_subscription_expired
Subscription expired
Pay the tariff to continue using the service. Use error_subscription_expired in integration logic.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.
POST
Merge duplicates
/api/brand/{brandId}/merge/{removeBrandId}
Token with write access
Moves product models from removeBrandId to brandId, then permanently deletes removeBrandId.
i
This cannot be undone. brandId is retained; removeBrandId is the duplicate to remove.
Path parameters
Field
Type
Required
Description
brandId
integer
Yes
Primary brand identifier.
removeBrandId
integer
Yes
Duplicate brand identifier to delete.
curl --request POST 'https://api.selsup.ru/api/brand/8124/merge/9012' \
--header 'Authorization: YOUR_API_TOKEN'
Application errors are normally returned as JSON with error, localMessage, and params. Branch on error; localized text may change. How application errors are returned ↑
401auth_required
Authentication required
Authorization is missing, empty, or contains an invalid token.
400error_access_denied
Insufficient permissions
The token exists, but its role cannot perform this operation.
400error_brand_not_found
Brand not found
One of the brands requested for merging does not exist in the current account.
400error_subscription_expired
Subscription expired
Pay the tariff to continue using the service. Use error_subscription_expired in integration logic.
500error_unknown
Unexpected error
Internal failure. Save the request time and contact support; do not blindly retry a mutation.