Attributes

This page explains how to find out which attributes to send for each category when calling Valuations or Enrich.

MethodWhen to use it
Schema endpointYour app needs the exact list of fields, types, and allowed values (e.g. to build forms or validate).
Reference endpointFor attributes with enumRef (e.g. brand, model): look up allowed values.
This pageYou want a human-readable summary and copy-paste examples.

Get the schema from the API

Use the API to fetch the validation schema for a category. That schema defines every attribute name, type, and allowed values.

List categories:

GET /v1/categories
X-API-Key: <your-api-key>
{
  "categories": ["car", "wristwatch", "ring", "necklace"]
}

Get schema for a category:

GET
/v1/categories/{category}/schema
curl https://api.gemmai.io/v1/categories/wristwatch/schema \
  -H "X-API-Key: <your-api-key>"
{
  "category": "wristwatch",
  "schema": {
    "type": "object",
    "properties": {
      "brand": { "type": "string", "description": "the brand of the wristwatch" },
      "model": { "type": "string", "description": "the model of the wristwatch" },
      "referenceNumber": { "type": "string" },
      "strap": { "type": "string", "enum": ["steel", "leather", "fabric", "..."] },
      "movement": { "type": "string", "enum": ["automatic", "manual", "quartz", "smart", "solar"] }
    },
    "required": ["brand"],
    "additionalProperties": false
  }
}
  • properties — every attribute you can send; keys are the attribute names.
  • required — attributes you must include for that category.
  • enum — for string fields, the only allowed values.

Look up values (reference data)

Only attributes with an enumRef in the schema support lookup via the reference endpoint. Currently brand and model (for wristwatch and car) have enumRef. Other fields (e.g. strap, condition) use fixed enums in the schema.

GET
/v1/reference/{ref}
curl "https://api.gemmai.io/v1/reference/brand?q=rol&category=wristwatch" \
  -H "X-API-Key: <your-api-key>"

Response is a list of { value, probability } items. Use the exact value strings when sending attributes to Valuations or Enrich.

Using Enrich to fill in attributes

If you have a photo but don't know all the attributes, use Enrich to get a full set from the image.

  1. POST /v1/vision with imageUrl → get fileId
  2. POST /v1/enrich with category and fileId → get normalizedAttributes
  3. Pass normalizedAttributes directly to POST /v1/valuations, or show them to the user for editing first
{
  "category": "wristwatch",
  "fileId": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
}

→ Response normalizedAttributes includes brand, model, strap, dialColor, movement, condition — all in the correct format for the schema. See the Enrich guide for the full flow.

Quick reference by category

For exact enum values, use the schema endpoint above. The tables below are a human-readable summary.

Wristwatch

AttributeTypeRequiredDescription
brandstringYesBrand name (e.g. Rolex). Use reference brand for suggestions.
modelstringNoModel name (e.g. Submariner).
referenceNumberstringNoReference number (e.g. 116610LN).
yearnumberNoYear of production (1900–current+1).
strapstringNoe.g. steel, leather, fabric, yellow gold, rose gold, rubber
bezelstringNoSame-style enums as strap/case.
casestringNoCase material. Same-style enums.
movementstringNoautomatic | manual | quartz | smart | solar
dialColorstringNoe.g. black, blue, white, champagne, green, skeleton
caseDiameternumberNoCase diameter in mm (12–60).
boxbooleanNoOriginal box included.
papersbooleanNoOriginal papers included.
conditionstringNopoor | fair | good | very_good | excellent

Only brand is required. More attributes give a tighter price range and higher confidence.

{
  "category": "wristwatch",
  "attributes": { "brand": "Rolex" }
}

Car

All listed attributes are required for a full car valuation.

AttributeTypeRequiredDescription
licensePlatestringYesSwedish license plate.
brandstringYese.g. Volvo
modelstringYese.g. XC60
yearOfManufacturenumberYesYear (1900–current+1).
odometerReadingnumberYesOdometer in kilometers.
fuelTypestringYese.g. Gasoline (Petrol), Diesel, Electric, Plug-in Hybrid (PHEV)
drivestringYes2WD | AWD | FWD | RWD
gearboxstringYesManual | Automatic | Semi-Automatic
enginePowernumberYesEngine power in horsepower.
colorstringYese.g. black, white, gray, blue, red
additionalWheelsetbooleanYesWhether the car has an additional wheelset.
{
  "category": "car",
  "attributes": {
    "licensePlate": "ABC123",
    "brand": "Volvo",
    "model": "XC60",
    "yearOfManufacture": 2020,
    "odometerReading": 45000,
    "fuelType": "Plug-in Hybrid (PHEV)",
    "drive": "AWD",
    "gearbox": "Automatic",
    "enginePower": 340,
    "color": "black",
    "additionalWheelset": false
  }
}

Ring

AttributeTypeRequiredDescription
stylestringYese.g. solitairering, eternityring, signetring, weddingring
engravingbooleanYesWhether the ring has engraving.
materialstringYeswhite gold | yellow gold | rose gold | silver | gold plated
materialPuritystringYese.g. 9k, 14k, 18k, 21k, 925, 950
weightnumberYesWeight in grams.
conditionstringYespoor | fair | good | very_good | excellent
sizenumberNoRing size.
diamondCaratnumberNoDiamond carat weight (0–5).
{
  "category": "ring",
  "attributes": {
    "style": "solitairering",
    "engraving": false,
    "material": "white gold",
    "materialPurity": "18k",
    "weight": 4.2,
    "condition": "excellent",
    "diamondCarat": 0.5
  }
}

Necklace

If your deployment supports the necklace category, call GET /v1/categories/necklace/schema for the exact schema.

AttributeTypeRequiredDescription
stylestringYese.g. necklace, collar, pansar, venezia, figaro, pearlnecklace
materialstringYeswhite gold | yellow gold | rose gold | silver | gold plated
materialPuritystringYese.g. 9k, 14k, 18k, 925
chainLengthnumberYesChain length in cm.
chainWidthnumberYesChain width in mm.
weightnumberYesWeight in grams.
conditionstringYespoor | fair | good | very_good | excellent
pendantTypestringNoe.g. stone, gold-shape, pearl, berlock

GoalWhat to call
List categoriesGET /v1/categories
Get exact attributes and enumsGET /v1/categories/{category}/schema
Search brands or modelsGET /v1/reference/brand?q=... or GET /v1/reference/model?q=...&brand=Rolex
Get suggested attributes from a photoVision → POST /v1/enrich → use normalizedAttributes

Was this page helpful?