{"openapi":"3.1.0","info":{"title":"DemoVisor","version":"1.0.0","description":"Turns a public product URL into a narrated product demo video, slide deck, PDF guide and captions, recorded in a real browser. A demo takes a few minutes: create it, then check it with getDemo until status is succeeded or failed."},"servers":[{"url":"https://demovisor.com"}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}},"schemas":{"Demo":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["queued","running","succeeded","failed","canceled"]},"progress":{"type":"integer","description":"Percent complete, 0 to 100."},"message":{"type":"string","description":"What the job is doing now."},"url":{"type":"string"},"format":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"error":{"type":"string","description":"Why the job failed, when it did."},"result":{"type":"object","description":"Present when status is succeeded.","properties":{"share_url":{"type":"string","description":"Public page with the video. Show this."},"video_url":{"type":"string","description":"The MP4."},"poster_url":{"type":"string"},"deck_url":{"type":"string","description":"PowerPoint deck."},"guide_url":{"type":"string","description":"Illustrated PDF guide."},"captions_url":{"type":"string","description":"SRT captions."},"transcript":{"type":"string"},"steps":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"narration":{"type":"string"},"actions":{"type":"array","items":{"type":"string"}}}}}}}}}}},"security":[{"ApiKey":[]}],"paths":{"/v1/demos":{"post":{"operationId":"createDemo","summary":"Start a product demo video for a public website","description":"Starts recording and returns at once with status queued. It uses one generation of the account plan. Tell the user it takes a few minutes, then call getDemo with the id.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public http(s) address of the product."},"goal":{"type":"string","description":"What the demo should show, in a sentence or two."},"name":{"type":"string","description":"Product name. Taken from the site if omitted."},"format":{"type":"string","enum":["Product explainer","Feature demo","Tutorial","Social clip"],"description":"Product explainer (default), Feature demo, Tutorial or Social clip (vertical)."},"webhook_url":{"type":"string","description":"Optional https URL that receives the final demo JSON by POST."}}}}}},"responses":{"202":{"description":"Demo queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Demo"}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"402":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"429":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}},"/v1/demos/{id}":{"get":{"operationId":"getDemo","summary":"Check a demo and get its video and files","description":"Returns progress while running. When status is succeeded, show result.share_url (and deck_url, guide_url) to the user.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The demo","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Demo"}}}},"401":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}}}}}}}}}}}