REST API
Arcade’s REST API allows you to programmatically create Arcades from videos and interaction data.
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
How do I authenticate with the API?
First, generate an API key:
Go to
Settings > Advanced
in your Arcade team dashboard.Generate a new API key.
Then, include the API key in the authorization
header of all requests:
makefileCopyEditauthorization: YOUR_API_KEY
All requests are made to https://api.arcade.software
.
Creating an Arcade from a Video
This API flow lets you programmatically create an Arcade from a video and a list of interaction events.
Step 1: How do I generate an upload URL?
Method: POST
Endpoint: /generate-upload-url
URL: https://api.arcade.software/generate-upload-url
Headers:
httpCopyEditauthorization: YOUR_API_KEY
content-type: application/json
Body:
jsonCopyEdit{
"contentType": "video/webm"
// or "video/mp4"
// or "video/quicktime"
}
Response:
jsonCopyEdit{
"success": true,
"uploadUrl": "https://...",
"uploadId": "my.company-uuid.webm"
}
Step 2: How do I upload the video?
Method: PUT
URL: Use the uploadUrl
from Step 1
Headers:
httpCopyEditcontent-type: video/webm
Body:
Binary video file (e.g. .webm
, .mp4
, or .mov
)
Step 3: How do I create the Arcade?
Method: POST
URL: https://api.arcade.software/arcades
Headers:
httpCopyEditauthorization: YOUR_API_KEY
content-type: application/json
Body:
jsonCopyEdit{
"title": "Title of your Arcade",
"description": "Optional description",
"uploadId": "your-uploadId from Step 1",
"events": [
{
"type": "click",
"timestamp": 2.75,
"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
}
]
}
Notes:
Click events create hotspots.
Scroll and type events are used to determine if a video step should be created.
If there’s no scroll or type between clicks, the step will default to an image.
Response:
jsonCopyEdit{
"success": true,
"arcadeId": "abc123"
}
Replacing an Existing Arcade
Can I update an existing Arcade with a new video and event list?
Yes. Use the same flow as the creation endpoint, but instead of POST /arcades
, use a different method and endpoint.
Method: PUT
URL: https://api.arcade.software/arcades/:id
(Replace :id
with the ID of the Arcade you're updating)
Headers:
httpCopyEditauthorization: YOUR_API_KEY
content-type: application/json
Body:
Same as the create Arcade endpoint:
jsonCopyEdit{
"title": "Updated Arcade Title",
"description": "Optional new description",
"uploadId": "your-new-upload-id",
"events": [ /* same event format */ ]
}
This completely replaces the Arcade’s video and interaction steps with the new content.
Last updated
Was this helpful?