/v1/analyze1 credit / analysisAnalyze is synchronous: the request returns a complete identification and resale pricing result. Supply photos of one item, with optional context to help identify it.
Endpoint
https://api.platform.sellraze.com/v1/analyze
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer YOUR_API_KEY. See Authentication. |
Content-Type | Yes | application/json. |
Idempotency-Key | No | A nonempty key, at most 256 bytes, without surrounding whitespace. Reuse for retries of the same analysis. |
Request body
| Field | Type | Description |
|---|---|---|
images | array · required | 1–6 image objects. All photos must show the same item. |
images[].url | string · required | Public HTTPS image URL, at most 4,096 characters. See image requirements. |
hint | string · optional | Context for identification, such as model, size, or visible details. At most 500 UTF-8 bytes. |
currency | string · optional | USD. Defaults to USD; other currencies are not currently supported. |
The JSON request body must not exceed 32 KiB. Send image URLs, not file uploads or base64-encoded image data.
curl https://api.platform.sellraze.com/v1/analyze \
--request POST \
--header "Authorization: Bearer $SELLRAZE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: item-501-analysis-001' \
--data '{
"images": [{ "url": "https://example.com/item-front.jpg" }],
"hint": "Levi’s 501 jeans, size 32x30",
"currency": "USD"
}'
// Run on your server. Keep this key for retries of this item.
const idempotencyKey = "item-501-analysis-001";
const response = await fetch(
"https://api.platform.sellraze.com/v1/analyze",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SELLRAZE_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": idempotencyKey,
},
body: JSON.stringify({
images: [{ url: "https://example.com/item-front.jpg" }],
hint: "Levi’s 501 jeans, size 32x30",
currency: "USD",
}),
signal: AbortSignal.timeout(100_000),
},
);
const result = await response.json();
if (!response.ok) {
throw new Error(`${result.code}: ${result.detail}`);
}
console.log(result);
# Install requests with: pip install requests
import os
import requests
# Keep this key for retries of the same item and payload.
idempotency_key = "item-501-analysis-001"
response = requests.post(
"https://api.platform.sellraze.com/v1/analyze",
headers={
"Authorization": f"Bearer {os.environ['SELLRAZE_API_KEY']}",
"Idempotency-Key": idempotency_key,
},
json={
"images": [{"url": "https://example.com/item-front.jpg"}],
"hint": "Levi’s 501 jeans, size 32x30",
"currency": "USD",
},
timeout=100,
)
response.raise_for_status()
print(response.json())
Replace the example image URL and use a new idempotency key for each new analysis.
Response
A complete analysis returns 200 OK with item, pricing, and usage. The X-Request-ID response header identifies this request attempt.
Item
| Field | Type | Description |
|---|---|---|
item.name | string | Descriptive product name. |
item.brand | string or null | Identified brand, or null when unavailable. |
item.condition | string or null | new, like-new, good, fair, or null. |
item.condition_notes | string or null | Free-form description of the item’s condition. |
item.defects | string array | Visible defects. Returns [] when empty. |
Pricing
| Field | Type | Description |
|---|---|---|
pricing.currency | string | USD. |
pricing.suggested_price | integer | Suggested listing price in minor units. 3500 means $35.00. |
pricing.confidence | string | high, medium, or low. |
pricing.basis | string | sold_comps or engine. |
pricing.sold_comps | array | Accepted sold comparables actually used for pricing. Empty for engine pricing. |
Sold comparables
Each object in pricing.sold_comps contains:
| Field | Type | Description |
|---|---|---|
name | string | Original source listing title. |
marketplace | string | ebay. |
sold_price | integer | Sale price in the currency’s minor units. |
currency | string | USD. |
sold_at | string | Sale date in YYYY-MM-DD format. No time of day is implied. |
source_condition | string or null | Original marketplace wording, such as Pre-Owned. |
listing_url | string | HTTPS link to the source listing. |
Usage
| Field | Type | Description |
|---|---|---|
usage.credits_charged | integer | 1 for a successful new analysis; 0 for a completed idempotent replay. |
See the quickstart response example for a complete JSON response.
Pricing fallback
If accepted sold comparables are unavailable, a complete result can use engine pricing:
{
"currency": "USD",
"suggested_price": 3500,
"confidence": "low",
"basis": "engine",
"sold_comps": []
}
This example represents the pricing object only. An engine-based result is a successful analysis and costs one credit. Treat its price as a lower-confidence estimate.
Errors and retries
Errors return a problem JSON body with a machine-readable code. See Handling errors for the status codes and recovery actions.