Product Prediction

Product prediction endpoints for generating titles, descriptions, brands, keywords, and scaffolded attributes.

If your balance is empty, the API returns HTTP 402 with an Out of credits. error.

POST

/api/v1/generate-basic-listing

10 credits

Generate a Basic Listing

Analyze product images and return a title, a short description, brand guess, and search keywords.

Request Body

image_urlsarray<string>REQUIRED

List of publicly accessible image URLs for a single product.

additional_infostringOPTIONAL

Optional user-provided context to refine the listing (max 150 words).

Response Example

{
  "listingTitle": "Vintage Nikon FM2 35mm Camera",
  "listingDescription": "Compact 35mm film camera body with manual controls and classic Nikon build. Clean condition, light wear, ready to shoot.",
  "brand": "Nikon",
  "listingKeywords": "nikon, fm2, 35mm, film camera, manual, vintage, body, photography, slr, analog"
}

Response Fields

listingTitlestring

Concise product title, max 80 characters.

listingDescriptionstring

Short 25-word description using Australian English spelling.

brandstring

Best-effort brand or model guess.

listingKeywordsstring

Comma-separated list of 10 keywords.

Example Error Response

{
  "error": "Missing Authorization header."
}
curl -X POST https://sails.live/api/v1/generate-basic-listing \
-H "Authorization: Bearer sails_sk_..." \
-H "Content-Type: application/json" \
-d '{
"image_urls": ["https://example.com/camera.jpg"],
"additional_info": "Includes original lens cap and strap."
}'
Customise Example
POST

/api/v1/update-listing

10 credits

Update Listing

Update a listing while forcing a corrected brand, using images.

Request Body

brandstringREQUIRED

Correct brand to apply in the updated listing.

image_urlsarray<string>REQUIRED

Public image URLs for the product.

additional_infostringOPTIONAL

Optional user-provided context to refine the update (max 150 words).

Response Example

{
  "updatedListingTitle": "Nike Air Max 90 White/Black",
  "updatedListingDescription": "Clean Nike Air Max 90 sneakers with white upper and black accents. Light wear, intact soles, classic profile, ready for everyday use.",
  "updatedKeywords": "nike, air max 90, sneakers, white, black, running, shoes, retro, mens, trainers"
}

Response Fields

updatedListingTitlestring

Updated title using the supplied brand.

updatedListingDescriptionstring

Updated 25-word description.

updatedKeywordsstring

Comma-separated list of 10 keywords.

Example Error Response

{
  "error": "brand is required"
}
curl -X POST https://sails.live/api/v1/update-listing \
-H "Authorization: Bearer sails_sk_..." \
-H "Content-Type: application/json" \
-d '{
"brand": "Nike",
"image_urls": ["https://example.com/shoe.jpg"],
"additional_info": "Men's size 10, limited edition colourway."
}'
Customise Example
POST

/api/v1/generate-scaffold-listing

10 credits

Generate Scaffold Listing

Fill a listing scaffold template by predicting values for each @placeholder key and return the filled template.

Request Body

scaffoldstringREQUIRED

Template that includes @placeholders to be populated.

image_urlsarray<string>OPTIONAL

Product images used to infer attribute values.

additional_infostringOPTIONAL

Optional user-provided context to refine the scaffold values (max 150 words).

Response Example

{
  "title": "Nintendo Switch OLED Console",
  "brand": "Nintendo",
  "keywords": "nintendo, switch, oled, console, handheld, gaming, joy-con, dock, 64gb, portable",
  "color": "White",
  "product": "Console",
  "quality": "Excellent",
  "filledScaffold": "SuperSeller verified Nintendo Switch OLED Console Nintendo White Console. Quality is Excellent"
}

Response Fields

titlestring

Title inferred from the images.

brandstring

Brand or model guess.

keywordsstring

Comma-separated list of relevant keywords.

filledScaffoldstring

Original scaffold with @tokens replaced by generated values; unknown tokens removed.

*string

Additional keys are generated from the scaffold @placeholders.

Example Error Response

{
  "error": "scaffold is required"
}
curl -X POST https://sails.live/api/v1/generate-scaffold-listing \
-H "Authorization: Bearer sails_sk_..." \
-H "Content-Type: application/json" \
-d '{
"scaffold": "SuperSeller verified @title @brand @color @product. Quality is @quality",
"image_urls": ["https://example.com/console.jpg"],
"additional_info": "Boxed with dock and two Joy-Cons."
}'
Customise Example