Skip to content

Home-Decor Tagging


The Home-Decor service provides categories, sub-categories and various tags for home-decor product images.

Please, see page API Calls and Credits for exact prices for individual API calls. The Tagging uses a flow of complex recognition models to tag each image, that's why the cost is higher than a simple image classification.

See it in action ...

  • We provide taxonomy (top categories, categories, features and tags)
  • We are constantly improving this service. We are open to add more features/tags on you request! (depends on your budget)
  • Our home-decor tagging is easily customizable (rename the tags for your needs, creating new tags from other, ...) through your custom profile (contact us at
  • Right now the Home-Decor Tagging service is available only through the REST API endpoint.

Active the service in Ximilar App

In order to get access to the Home-Decor Tagging service, please register at and write us at


Here we provide our Home-Decor taxonomy pdf document with example images and full taxonomy tree with all possible tags.


API reference

The API follows the general rules of Ximilar API as described in Section First steps.

List of Top Categories and Categories: /v2/top_categories

curl --request GET \
  --url \
  --header 'content-type: application/json'


  "All rooms": [
    "All rooms/Boxes",
    "All rooms/Curtains",
    "All rooms/Holiday ornaments",
    "All rooms/Lighting",
    "All rooms/Rugs & Carpets",
    "All rooms/Shelves",
    "All rooms/Stands"
  "Bathroom": [
    "Bathroom/Bathroom accessories",
    "Bathroom/Bathroom mirror",
    "Bathroom/Bathroom textile"
  "Bedroom": [
    "Bedroom/Blankets & Bedcovers",
    "Bedroom/Duvet covers",
    "Bedroom/Pillows & Pillowcases"
  "Kitchen": [
    "Kitchen/Cookware & Bakeware",
    "Kitchen/Kitchen textile",

Tagging endpoint: /v2/tags

Given a list of image records, this method returns tags as predicted by the Home-Decor Tagging services, together with probabilities (the level of certainty) for each of these tags.

Things to note

  • Please, note that the "_base64" data is not returned. Use "_id" or any other field to identify your image.
  • Each of the tag contains probability of tag present on the image. All the tags are based on the main product type which is present in "Category" field.
  • All the tags are stored in field "_tags", only tags with probability > 30 % are returne
  • The field "_tags_simple" contains just list of strings (tag names) and is simpler than "_tags"
  • Maximum number of records/images that can be send to API in one request is 10.

Multiple images for one home-decor product'?

Do you have multiple images for one home-decor product?

  • You can send 'aggregate_labels': true in the request and the labels will be aggregated for entire batch! Your results is then based on several images and not only one and it is stored _aggregation_simple and _aggregation fields!


  • records: list of photos to predict the tags for

    • must contain either of _url or _base64 field - see section image data for details
    • each record can contain Category field which defines the main-category of the product on the photo; for some images, it's not clear what object is the main and thus it's recommended to send over this information about Category (if known). For example: "Category": "Bathroom/Bathroom accessories". Be aware that you should not specify the 'Top Category' in records, only 'Category'.
  • aggregate_labels: (optional) aggregate tags for the whole batch

    • true or false (default false)
    • if true, the records is considered as a batch of several photos of one object and after tagging the images separately, the tagger aggregates their tags into one output list of tags for the whole batch. Tags of individual images are not modified by this aggregation.
  • profile: (optional) if you know the id of your custom tagging profile, then this profile will apply on the _tags and transform it (rename tags/features, add tags, remove tags, ...)

$ curl -H "Content-Type: application/json" -H "Authorization: Token __API_TOKEN__" -d '{
    "records": [
        { "_url": "" },
        {"_base64": "/9j/4AAQSkZJR...", "_id": "image_id"}


  • HTTP error code 2XX, if the method was OK and other HTTP error code, if the method failed.
  • Body of the response is a JSON object (map) with the following fields:
    • status - a JSON map with a status of the method processing. It contains these subfields:
      • code - a numeric code of the operation status; it follows the concept of HTTP status codes (2XX, 4XX). Specific codes are described for each type of answer (or operation) (see below).
      • text - a text describing the status code
    • records - JSON array with the input records, each record enriched by field "_tags" and "category"
    • _aggregation and _aggregation_simple if aggregate_labels set to true in request

  "records": [
      "_url": "",
      "_status": {
        "code": 200,
        "text": "OK",
        "request_id": "a24bc3ee-bbe2-40ff-b8a0-edeeb7d720c3"
      "_width": 1000,
      "_height": 1000,
      "Category": "All rooms/Mirrors",
      "_tags": {
        "Type": [
            "prob": 0.96929,
            "name": "Mirror with metal frame",
            "id": "dbfd06cb-c9d2-48d2-8f17-efd27ccbe844"
        "Shape": [
            "prob": 0.96154,
            "name": "Rectangle",
            "id": "fea8819e-157c-4177-9a9e-2df06f05fb64"
        "Top Category": [
            "id": "ebbd5596-8973-49d3-8469-6e8c536dbd4c",
            "name": "All rooms",
            "prob": 1.0
        "Category": [
            "prob": 0.99205,
            "name": "All rooms/Mirrors",
            "id": "27dd7b55-78c4-45a2-8721-22e93d69f1c3"
      "_tags_simple": [
        "Mirror with metal frame",
        "All rooms",
        "All rooms/Mirrors"
      "Top Category": "All rooms"
  "status": {
    "code": 200,
    "text": "OK",
  "statistics": {
    "processing time": 0.8858194351196289