---
title: "Make an HTTP request through the browser's network stack"
method: POST
path: "/browsers/{id_or_name}/curl"
tags: ["Browsers"]
---

# Make an HTTP request through the browser's network stack

`POST /browsers/{id_or_name}/curl`

## Request

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

Sends an HTTP request through Chrome's HTTP request stack, inheriting
the browser's TLS fingerprint, cookies, proxy configuration, and headers.
Returns a structured JSON response with status, headers, body, and timing.

## Path parameters

- `id_or_name` string, required

## Request body

- BrowserCurlRequest: Request to make an HTTP request through the browser's network stack.
  - `body` string: Request body (for POST/PUT/PATCH).
  - `headers` object: Custom headers merged with browser defaults.
  - `method` 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS': HTTP method.
  - `response_encoding` 'utf8' | 'base64': Encoding for the response body. Use base64 for binary content.
  - `timeout_ms` integer: Request timeout in milliseconds.
  - `url` string, required: Target URL (must be http or https).

## Response `200`

Response from target URL

- BrowserCurlResult: Structured response from the browser curl request.
  - `body` string, required: Response body (UTF-8 string or base64 depending on request).
  - `duration_ms` integer, required: Total request duration in milliseconds.
  - `headers` object, required: Response headers (multi-value).
  - `status` integer, required: HTTP status code from target.

## Other responses

- `400`: Bad Request – invalid input
- `404`: Resource not found
- `500`: Internal Server Error
- `502`: Upstream transport failure
- `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)
