Attributes
This page explains how to find out which attributes to send for each category when calling Valuations or Enrich.
| Method | When to use it |
|---|---|
| Schema endpoint | Your app needs the exact list of fields, types, and allowed values (e.g. to build forms or validate). |
| Reference endpoint | For attributes with enumRef (e.g. brand, model): look up allowed values. |
| This page | You 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:
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.
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.
Passing already-selected attributes as query params (e.g. brand=Rolex when looking up model) narrows the results to only relevant values for that brand.
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.
POST /v1/visionwithimageUrl→ getfileIdPOST /v1/enrichwithcategoryandfileId→ getnormalizedAttributes- Pass
normalizedAttributesdirectly toPOST /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
| Attribute | Type | Required | Description |
|---|---|---|---|
brand | string | Yes | Brand name (e.g. Rolex). Use reference brand for suggestions. |
model | string | No | Model name (e.g. Submariner). |
referenceNumber | string | No | Reference number (e.g. 116610LN). |
year | number | No | Year of production (1900–current+1). |
strap | string | No | e.g. steel, leather, fabric, yellow gold, rose gold, rubber |
bezel | string | No | Same-style enums as strap/case. |
case | string | No | Case material. Same-style enums. |
movement | string | No | automatic | manual | quartz | smart | solar |
dialColor | string | No | e.g. black, blue, white, champagne, green, skeleton |
caseDiameter | number | No | Case diameter in mm (12–60). |
box | boolean | No | Original box included. |
papers | boolean | No | Original papers included. |
condition | string | No | poor | 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.
| Attribute | Type | Required | Description |
|---|---|---|---|
licensePlate | string | Yes | Swedish license plate. |
brand | string | Yes | e.g. Volvo |
model | string | Yes | e.g. XC60 |
yearOfManufacture | number | Yes | Year (1900–current+1). |
odometerReading | number | Yes | Odometer in kilometers. |
fuelType | string | Yes | e.g. Gasoline (Petrol), Diesel, Electric, Plug-in Hybrid (PHEV) |
drive | string | Yes | 2WD | AWD | FWD | RWD |
gearbox | string | Yes | Manual | Automatic | Semi-Automatic |
enginePower | number | Yes | Engine power in horsepower. |
color | string | Yes | e.g. black, white, gray, blue, red |
additionalWheelset | boolean | Yes | Whether 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
| Attribute | Type | Required | Description |
|---|---|---|---|
style | string | Yes | e.g. solitairering, eternityring, signetring, weddingring |
engraving | boolean | Yes | Whether the ring has engraving. |
material | string | Yes | white gold | yellow gold | rose gold | silver | gold plated |
materialPurity | string | Yes | e.g. 9k, 14k, 18k, 21k, 925, 950 |
weight | number | Yes | Weight in grams. |
condition | string | Yes | poor | fair | good | very_good | excellent |
size | number | No | Ring size. |
diamondCarat | number | No | Diamond 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.
| Attribute | Type | Required | Description |
|---|---|---|---|
style | string | Yes | e.g. necklace, collar, pansar, venezia, figaro, pearlnecklace |
material | string | Yes | white gold | yellow gold | rose gold | silver | gold plated |
materialPurity | string | Yes | e.g. 9k, 14k, 18k, 925 |
chainLength | number | Yes | Chain length in cm. |
chainWidth | number | Yes | Chain width in mm. |
weight | number | Yes | Weight in grams. |
condition | string | Yes | poor | fair | good | very_good | excellent |
pendantType | string | No | e.g. stone, gold-shape, pearl, berlock |
| Goal | What to call |
|---|---|
| List categories | GET /v1/categories |
| Get exact attributes and enums | GET /v1/categories/{category}/schema |
| Search brands or models | GET /v1/reference/brand?q=... or GET /v1/reference/model?q=...&brand=Rolex |
| Get suggested attributes from a photo | Vision → POST /v1/enrich → use normalizedAttributes |