Vizit Public APIAPI
Images

Submit an image for scoring

Send an image URL through the standard scoring pipeline.

POST/v1/images/score

Submits 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
Authorization<token>

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.

image_url*string

Publicly accessible image URL (HTTP/HTTPS, jpeg/png/webp, ≤6 MB)

Formaturi
product_category_id*string

Category 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.

Formatuuid
image_type*string

Role the image plays in a listing. hero images return an additional score_metadata breakdown; carousel images return only vizit_score.

Value in"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"}
Empty
{  "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"}
Empty
{  "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"}