
VKDevelopers
Real objects, in your product.
An embeddable viewer for any page and a REST API to create objects from your own system.
For marketplaces and portals.

Let your users create the 360°.
A vehicle portal, a marketplace or a store network plugs in the API once. From then on, each seller films the product at home, sends it through your own app or site, and the listing shows it in 360° with the real photos, in about eight minutes.
- Your brand on the upload screen; the processing is ours
- Allowance and keys per account
- Faces and license plates blurred automatically
Why it is worth it.
more conversions, on average, for stores using 3D instead of photos alone.
Shopify, 2020more add-to-cart after shoppers interacted with a product in 3D.
Rebecca Minkoff · Shopifymore likely to buy among Houzz app users who placed products in 3D.
Houzz · Retail Dive, 2018of returns come from products that did not match their pictures online.
Coresight Research, 2024Paste two lines. It turns.
The viewer
One JavaScript file, no dependencies, WebGL2. Drag to turn, two fingers to zoom, arrow keys to turn. It fires veyskar-pronto when the first photo shows.
Always keep the version in the script address (?v=N). Browsers cache the file.
Objects only open on the sites you allow in the account area (any site, by default). On the free trial, embed the share page in an iframe instead: it shows the Powered by VEYSKAR seal.
<script src="https://objetos.veyskar.com/js/veyskar-viewer.js?v=5"></script> <veyskar-object src="https://objetos.veyskar.com/poltrona-cognac/" background="miv" ring></veyskar-object>
EmbedCreator+
| Attribute | What it does |
|---|---|
src | Address of the object folder. The only required attribute. |
background | miv (dark studio) or transparent. |
ring | Shows the ring of captured angles. |
autoplay | Turns slowly on its own until the first touch. |
zoom | Allows pinch and wheel zoom. |
az / el | Initial view, in degrees. |
Create objects from your own system
REST API
Available on Business and above. Base address https://api.veyskar.com.
Authenticate with Authorization: Bearer vk_live_…. Create keys in the account area, under API keys. A key is shown only once. Use it on servers, never in the browser.
Limit: 240 requests per minute per key.
/v1/objetosList the account objects and the allowance: franquia {total, usadas, restantes}./v1/objetosCreate an object. Body {"titulo", "altura_m"}. Returns {objeto, envio_url}.<envio_url>Send the raw video bytes directly to storage. Valid for 1 hour. It does not pass through our servers./v1/objetos/{id}/processarStart processing after the upload. Takes 7 to 8 minutes./v1/objetos/{id}Current state, warnings, error and files./v1/objetos/{id}Take the object down and delete its public files.Full flow
Webhooks per key are coming soon. For now, poll the object while it is processing.
# 1. create
curl -X POST https://api.veyskar.com/v1/objetos \
-H "Authorization: Bearer $VEYSKAR_KEY" -H "Content-Type: application/json" \
-d '{"titulo":"Poltrona Cognac","altura_m":0.82}'
# -> {"objeto":{"id":42,"estado":"aguardando_video",...},"envio_url":"https://..."}
# 2. upload the video straight to envio_url
curl -X PUT "$ENVIO_URL" -H "Content-Type: video/mp4" --data-binary @poltrona.mp4
# 3. process, then poll every 20-30 s
curl -X POST https://api.veyskar.com/v1/objetos/42/processar -H "Authorization: Bearer $VEYSKAR_KEY"
curl https://api.veyskar.com/v1/objetos/42 -H "Authorization: Bearer $VEYSKAR_KEY"Reference
Object format
Each object is a public folder: manifest.json, the real photos, splat.spz (0.5 to 1.4 MB), capa.jpg and export/giro.mp4 and .gif. A typical object weighs 12 to 20 MB, and visitors download only what they see.
Errors come as {"erro": "message"}.
estado | aguardando_video, processando, pronto or falhou |
|---|---|
etapa | Current processing step |
avisos[] | captura_com_buracos, uma_altura_so, altura_estimada |
erro | {etapa, mensagem, regravar_segundos} when it failed |
src | Object folder, for the viewer |
capa, mp4, gif | Preview image 1200×630 and the object turning |
link | Share page, when ready |
Errors
400 | Invalid data |
|---|---|
401 | Missing or invalid key |
402 | Allowance used up or payment pending |
403 | Plan without API |
404 | Not found |
429 | Too many requests |