Viewrium Docs
HTTP referenceProducts

Create a product

POST/v1/products

Creates a product in two calls.

  1. Send exactly one source - image_urls, image_paths, video_url or source_url - with the draft, order and overrides. The source is analyzed and the answer is 200 with a quote: the image plan, whether a 3D model can be built, the price in credits, and a resume_token. Nothing is created or charged.
  2. Send the resume_token back (it is valid for 7 days and works once). The answer is 202 with the product, and generation starts. You may change the draft on this call; a different order or any overrides is a 400 - request a new quote instead.

A model_url (a finished GLB) skips the quote and answers 202 at once.

402 when the organization's plan does not allow it; 429 when it has too few credits (details.shortfall_credits); 409 for a token already used or a custom_id already taken.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Creates a product in two calls. Send exactly one source - image_urls, image_paths, video_url, source_url or model_url - and the first call returns a quote with a resume_token. Send the resume_token (and nothing else as a source) to commit the quote and start generation. A model_url skips the quote: the finished model is stored at once.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/products" \  -H "Content-Type: application/json" \  -d '{}'
{  "status": "parked",  "resume_token": "string",  "expires_at": "2019-08-24T14:15:22Z",  "form": "string",  "title": "string",  "description": "string",  "subject": "",  "wall_mounted": false,  "dimensions": {    "height": 1,    "width": 1,    "depth": 1  },  "display_unit": "mm",  "flags": {    "transparent": false,    "geometry_risk": false,    "texture_risk": false,    "source_quality": "ok",    "reasons": [      {        "code": "string",        "sentence": "string"      }    ]  },  "warnings": [    "string"  ],  "plan": [    {      "view": "string",      "kind": "wanted",      "stands_for": "string",      "status": "planned",      "evidence": "string",      "reason_code": "string",      "reason": "string",      "deliverable": true,      "route": "reuse",      "photo": 0,      "pins": [        0      ],      "azimuth": "string",      "tilt": "string",      "flagged": false    }  ],  "model": {    "ordered": true,    "allowed": true,    "blocked_by": [      "string"    ],    "views": [      "string"    ],    "unseen_views": [      "string"    ]  },  "cost": {    "images": 0,    "image_credits": 0,    "model_credits": 0,    "total_credits": 0  },  "generate_unseen": false,  "force_model": false,  "painting": {    "usable": true,    "framed": true,    "reason": "string",    "suggested_dimensions_of": "canvas"  }}
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",  "title": "string",  "custom_id": "string",  "tags": [    "string"  ],  "status": "awaiting_review",  "display_status": "published",  "published": false,  "form": "string",  "source_type": "image",  "price": 0,  "currency": "string",  "height": 0,  "width": 0,  "depth": 0,  "display_unit": "mm",  "images_ordered": false,  "thumbnail_url": "string",  "has_warnings": false,  "warning_count": 0,  "comment_count": 0,  "image_count": 0,  "model_status": "planned",  "owner": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "display_name": "string",    "email": "string"  },  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z",  "viewer_url": "string",  "description": "string",  "wall_mounted": false,  "product_type": "string",  "material_words": "string",  "transparent": false,  "metadata": {},  "sources": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "kind": "photo",      "url": "string",      "original_name": "string",      "position": 0,      "azimuth": "string",      "tilt": "string",      "clean": true,      "created_at": "2019-08-24T14:15:22Z"    }  ],  "images": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "view": "string",      "kind": "wanted",      "stands_for": "string",      "status": "planned",      "skip_reason": "string",      "route": "reuse",      "source": "photograph",      "evidence": "string",      "azimuth": "string",      "tilt": "string",      "source_photo_id": "a7f5490c-d09d-4c87-9733-d1cad32c6e5a",      "attempts": 0,      "flagged": false,      "cut_flagged": false,      "cut_problems": "string",      "review_status": "pending",      "filename": "string",      "alt_text": "string",      "filename_override": "string",      "alt_override": "string",      "shadow_override": {        "mode": "silhouette",        "tone": [          0,          0,          0        ],        "silhouette": {          "length": 0,          "lean": 0,          "blurNear": 0,          "blurFar": 0,          "opacity": 0,          "distanceFade": 0        },        "contact": {          "trailPx": 0,          "dark": 0,          "end": 0,          "midpoint": 0,          "regionHeight": 0        },        "ground": {          "nudge": 0,          "tilt": 0        }      },      "background_override": [        0,        0,        0      ],      "frame_scale": 0,      "contact_regions": [        [          0        ]      ],      "raw_url": "string",      "cutout_url": "string",      "warnings": [        {          "kind": "cut",          "scope": "image",          "title": "string",          "detail": "string",          "view": "string"        }      ],      "created_at": "2019-08-24T14:15:22Z",      "updated_at": "2019-08-24T14:15:22Z"    }  ],  "model": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "status": "planned",    "review_status": "pending",    "thumbnail_url": "string",    "scale_factor": 0,    "width_axis": "x",    "flags": {      "transparent": false,      "geometry_risk": false,      "texture_risk": false,      "source_quality": "ok",      "reasons": [        {          "code": "string",          "sentence": "string"        }      ]    },    "warnings": [      {        "kind": "cut",        "scope": "image",        "title": "string",        "detail": "string",        "view": "string"      }    ],    "created_at": "2019-08-24T14:15:22Z",    "completed_at": "2019-08-24T14:15:22Z"  },  "warnings": [    {      "kind": "cut",      "scope": "image",      "title": "string",      "detail": "string",      "view": "string"    }  ],  "open_request_count": 0,  "painting": {    "edge": "frame",    "edge_color": "string",    "dimensions_of": "canvas",    "canvas_width_cm": 0,    "canvas_height_cm": 0,    "depth_cm": 0,    "has_frame": false,    "rebuild": {      "status": "running",      "requested": {        "edge": "frame",        "edge_color": "string",        "dimensions_of": "canvas",        "canvas_width_cm": 0,        "canvas_height_cm": 0,        "depth_cm": 0,        "frame_width_cm": 0,        "frame_height_cm": 0      },      "requested_at": "2019-08-24T14:15:22Z",      "error": "string"    }  },  "viewer_desktop": "viewer",  "viewer_mobile": "viewer"}
{  "error": {    "code": "string",    "message": "string",    "details": null  }}