---
title: "Ad-hoc upload one or more unpacked extensions to a running browser instance."
method: POST
path: "/browsers/{id_or_name}/extensions"
tags: ["Browsers"]
---

# Ad-hoc upload one or more unpacked extensions to a running browser instance.

`POST /browsers/{id_or_name}/extensions`

## Request

- Base URL: `https://api.onkernel.com`
- URL: `https://api.onkernel.com/browsers/{id_or_name}/extensions`
- Auth: HTTP bearer

Loads one or more unpacked extensions using live CDP activation when eligible. Chromium restarts when enterprise policy requires it or live activation fails.

## Path parameters

- `id_or_name` string, required

## Request body `multipart/form-data`

- object
  - `extensions` object[], required: List of extensions to upload and activate
    - `name` string, required: Folder name to place the extension under /home/kernel/extensions/<name>
    - `zip_file` string, binary, required: Zip archive containing an unpacked Chromium extension (must include manifest.json)

## Response `201`

Extensions uploaded, Chromium restarted, and DevTools is ready

## Other responses

- `400`: Bad Request – invalid input
- `401`: Unauthorized – missing or invalid authorization token
- `403`: Forbidden – insufficient permissions or plan
- `404`: Resource not found
- `500`: Internal Server Error
- `default`: Error returned by the browser or its proxy

---

[API](https://skmtc.dev/onkernel/apis/kernel-api.md) - [All operations](https://skmtc.dev/onkernel/apis/kernel-api/llms.txt) - [OpenAPI document](https://skmtc.dev/onkernel/apis/kernel-api/revisions/0f6cf4f58fe6?raw)
