Skip to main content
POST
/
browser
/
extensions
Upload Extension
curl --request POST \
  --url https://api.example.com/browser/extensions \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "file": "<string>"
}
'
{
  "id": "<string>",
  "name": "<string>",
  "manifest": {},
  "createdAt": "<string>",
  "updatedAt": "<string>"
}

Overview

Stores a Chrome extension for this account. Once uploaded, the returned id can be passed in extensions when creating a session via POST /browser/sessions. The extension archive must be base64-encoded and sent inline in the JSON body.

Body

name
string
required
Human-readable extension name (used in listings).
file
string
required
Base64-encoded bytes of the Chrome .crx archive (full archive, not a URL).

Example Request

curl -X POST "https://api.scrapengine.io/api/v1/browser/extensions" \
  -H "Authorization: Bearer $SCRAPENGINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"name\": \"ublock-origin\",
    \"file\": \"$(base64 -w 0 ublock.crx)\"
  }"

Response

Success Response (201)

id
string
Extension ID. Pass this in extensions when creating a session.
name
string
Echoed name.
manifest
object
Parsed manifest.json from the archive.
createdAt
string
ISO-8601 timestamp.
updatedAt
string
ISO-8601 timestamp.
Example Response:
{
  "id": "ext-9e1ab4d6",
  "name": "ublock-origin",
  "manifest": { "manifest_version": 3, "name": "uBlock Origin", "version": "1.55.0" },
  "createdAt": "2025-04-24T12:00:00.000Z",
  "updatedAt": "2025-04-24T12:00:00.000Z"
}

Error Responses

StatusDescription
400Missing name or file, or file is not valid base64 / not a valid .crx archive.
401Unauthorized — invalid or missing API key.