Submit an image for scoring
Send an image URL through the standard scoring pipeline.
/v1/images/scoreSubmits a standalone image for asynchronous scoring. The response
returns immediately with an image_id and status: processing; use
Retrieve an image score to poll for the
result.
Hero images return a score_metadata breakdown alongside the
composite vizit_score; carousel images return vizit_score only.
Authorization
bearerAuth Short-lived access token issued by Create a token.
Send it on every request as Authorization: Bearer <token>.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Publicly accessible image URL (HTTP/HTTPS, jpeg/png/webp, ≤6 MB)
uriCategory UUID the image belongs to. Must be one returned by
List product categories —
if it doesn't exist or the organization lacks ICP access, the
request is rejected with CATEGORY_NOT_IN_ORG_ICP.
uuidRole the image plays in a listing. hero images return an additional
score_metadata breakdown; carousel images return only
vizit_score.
"hero" | "carousel"Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://ext.vizit.com/v1/images/score" \ -H "Content-Type: application/json" \ -d '{ "image_url": "https://cdn.example.com/products/abc/hero.jpg", "product_category_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "image_type": "hero" }'{ "image_id": "84c230fd-5520-4984-8119-37365b66fd80", "status": "processing", "vizit_score": 0, "conversion_ready": true, "score_metadata": { "heroism": 0.1, "category_edge": 0.1, "technical_integrity": 0.1, "local_support": 0 }, "hero_gs1_components": { "property1": 0, "property2": 0 }, "mobile_readiness": { "brand_clarity": 0, "product_type_clarity": 0, "variant_clarity": 0, "count_clarity": 0, "size_clarity": 0, "mobile_ready": true }, "classification": "Lifestyle"}{ "detail": "string", "status_code": 0, "error_code": "INVALID_GTIN", "request_id": "266ea41d-adf5-480b-af50-15b940c2b846", "extra": { "failed_urls": [ { "url": "https://cdn.example.com/broken.jpg", "reason": "IMAGE_DOWNLOAD_TIMEOUT" }, { "url": "https://cdn.example.com/icon.svg", "reason": "UNSUPPORTED_IMAGE_FORMAT" } ] }, "timestamp": "2019-08-24T14:15:22Z"}{ "detail": "string", "status_code": 0, "error_code": "INVALID_GTIN", "request_id": "266ea41d-adf5-480b-af50-15b940c2b846", "extra": { "failed_urls": [ { "url": "https://cdn.example.com/broken.jpg", "reason": "IMAGE_DOWNLOAD_TIMEOUT" }, { "url": "https://cdn.example.com/icon.svg", "reason": "UNSUPPORTED_IMAGE_FORMAT" } ] }, "timestamp": "2019-08-24T14:15:22Z"}{ "detail": "string", "status_code": 0, "error_code": "INVALID_GTIN", "request_id": "266ea41d-adf5-480b-af50-15b940c2b846", "extra": { "failed_urls": [ { "url": "https://cdn.example.com/broken.jpg", "reason": "IMAGE_DOWNLOAD_TIMEOUT" }, { "url": "https://cdn.example.com/icon.svg", "reason": "UNSUPPORTED_IMAGE_FORMAT" } ] }, "timestamp": "2019-08-24T14:15:22Z"}GETDownload an export artifact
Streams the CSV artifact for a `COMPLETED` export. Uses the same Bearer token as every other endpoint — no presigned URL, no embedded credentials. The path itself is what `download_url` on [Retrieve an export](/api/exports/getExport) points at. Response shape: - `Content-Type: text/csv` - `Content-Disposition: attachment; filename="<subject>-<timestamp>.csv"` - Body is the raw CSV (header row + data rows, UTF-8, `\n` line separator) Returns `404` with a typed `error_code` for every error state — cross-org access is intentionally indistinguishable from a missing or expired export so foreign `export_id`s never leak existence: - `EXPORT_NOT_FOUND` — does not exist in the caller's org - `EXPORT_NOT_READY` — exists but `status` is still `PENDING` or `PROCESSING` - `EXPORT_EXPIRED` — artifact has been purged past its 7-day retention
GETRetrieve an image score
Returns the current scoring state of an image previously sent to [Submit an image for scoring](/api/images/scoreImage). Poll until `status` moves from `processing` to `scored`. Hero images return a `score_metadata` breakdown alongside `vizit_score`; carousel images return `vizit_score` only.