REST API

The API is available to all users in the Enterprise plan. If you're interested in testing the API or trialing Enterprise, reach out to our sales team (sales@arcade.software).

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

Last updated