Arcade Knowledge Base
Ask or search…
K
Comment on page

REST API

The Arcade API is actively being developed and subject to changes. Only a subset of what’s possible in the app is covered by the API. Let us know which features you want to see on the API first!

Authentication

First, you need to generate an API key from your Arcade team settings. You can do that in the Advanced section.
From there, you can include this API key in the authorization header to all the requests you make to api.arcade.software, like so:
authorization: TwjsO-PaFpaZgfNWeAYxYA

Creating an Arcade from a single video and a list of events

1. Generate an upload URL

Method: POST
URL: https://api.arcade.software/generate-upload-url
Headers:
  • authorization
  • content-type: application/json
Body:
{
// The content type of the video to be uploaded.
"contentType": "video/webm"
// "contentType": "video/mp4"
// "contentType": "video/quicktime" (mov)
}
Response:
{
"success": true,
"uploadUrl": "https://...",
"uploadId": "my.company-6c4da6d1-7dec-40f9-96c8-1a8c4e4abc94-1699924008010.webm"
}

2. Upload the video

Method: PUT
URL: The uploadUrl from the previous step
Headers:
  • content-type: video/webm (content type specified at step 1)
Body: the video (binary payload)

3. Create the Arcade

Method: POST
URL: https://api.arcade.software/arcades
Headers:
  • authorization
  • content-type: application/json
Body:
{
"title": "Title of your Arcade",
"description": "Optional description",
"uploadId": "`uploadId` from step 1",
"events": [
{
// Type of event
"type": "click",
// Timestamp in seconds where the event happens in the uploaded video,
// in the case below, the click occurred at 2 seconds and 750 ms.
"timestamp": 2.75,
// The coordinates of the point that was clicked relative to the
// top-left corner of the video.
"target": {
"x": 400,
"y": 300
},
"label": "Optional hotspot label"
},
{
"type": "scroll",
"timestamp": 3
},
{
"type": "click",
"timestamp": 3.5,
"target": {
"x": 650,
"y": 120
}
},
{
"type": "type",
"timestamp": 5
}
]
}
Click events are converted into hotspots, and scroll and type events are hints to whether or not to create a video, so it behaves the same as when recording with the extension.
If the user scrolled or typed between clicks, we'll include a video. Otherwise, it will be only an image step.
Response:
{
"success": true,
"arcadeId": "The ID of the Arcade that got created"
}

Replacing an Arcade with a new video and list of events

The flow is exactly like the create endpoint above, but instead of POST /arcades, use the following endpoint:
Method: PUT
URL: https://api.arcade.software/arcades/:id
Headers:
  • authorization
  • content-type: application/json
Body: same as create endpoint body