Introduction
The Watch Scanner API provides AI-powered watch identification from image URLs. Send an image, get detailed information about the watch including brand, model, reference number, similar models, and pricing estimates.
Base URL: https://identification.nepita.io
Authentication
All API requests require an API key. Include your API key in the request body:
{
"api_key": "your-32-character-api-key",
"image_url": "https://example.com/watch.jpg"
}
Contact the API administrator to obtain your API key.
Endpoints
POST /scan
Identify a watch from an image URL.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
image_url |
string (URL) | Yes | Direct URL to watch image (JPEG, PNG, WebP) |
api_key |
string | Yes | Your API authentication key (32+ chars) |
pricing |
integer | No | Include pricing estimates (1 = yes, 0 = no). Default: 1 |
Example Request
curl -X POST https://identification.nepita.io/scan \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/rolex-submariner.jpg",
"api_key": "8M4pvjbPVtyuL3DUvPf9GnOS0xm1RkTS",
"pricing": 1
}'
GET /health
Check API health status.
Example Request
curl https://identification.nepita.io/health
Example Response
{
"status": "healthy",
"timestamp": "2024-01-15T10:30:00Z",
"service": "Watch Scanner API",
"supabase": "connected"
}
Response Format
Successful responses return a JSON object with the following structure:
| Field | Type | Description |
|---|---|---|
status |
string | "success" or "error" |
session_id |
string (UUID) | Unique identifier for this scan |
timestamp |
string (ISO 8601) | When the scan was processed |
input_url |
string | The image URL you provided |
results |
object | Identification results (see below) |
processing_time_ms |
integer | Processing time in milliseconds |
Results Object
| Field | Type | Description |
|---|---|---|
detected_brand |
string | Watch brand (e.g., "Rolex", "Patek Philippe") |
detected_model |
string | Model reference (e.g., "116610LN") |
detected_collection |
string | Collection name (e.g., "Submariner") |
additional_comments |
string | Brief descriptive notes |
top_tokens |
array[string] | Key features extracted from image |
matches |
array[object] | Similar watches from database |
pricing |
object | Market price estimates (USD, EUR, RMB) |
similar_model_N_* |
various | Top 3 similar models (reference, image, similarity) |
Examples
Successful Response
{
"status": "success",
"session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2024-01-15T10:30:45.123Z",
"input_url": "https://example.com/watch.jpg",
"results": {
"detected_brand": "Rolex",
"detected_model": "116610LN",
"detected_collection": "Submariner",
"additional_comments": "Black dial, ceramic bezel",
"top_tokens": ["rolex", "submariner", "ceramic", "black", "automatic"],
"pricing": {
"price_min_usd": 12000,
"price_median_usd": 14500,
"price_max_usd": 17000,
"price_min_eur": 11000,
"price_median_eur": 13300,
"price_max_eur": 15600,
"price_min_rmb": 88000,
"price_median_rmb": 106000,
"price_max_rmb": 125000
},
"similar_model_1_reference": "116610LN",
"similar_model_1_image": "https://...",
"similar_model_1_similarity": 0.95
},
"processing_time_ms": 3450
}
Tip: Pricing is computed in real-time based on current market data. Allow an additional 5-10 seconds for pricing when enabled.
Error Response
{
"status": "error",
"message": "Invalid API key",
"session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2024-01-15T10:30:45.123Z"
}
Try It Out
Use the interactive API explorer below to test endpoints directly from your browser: