curl --request POST \
--url https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads \
--header 'Content-Type: multipart/form-data' \
--header 'anchor-api-key: <api-key>' \
--form file=@example-fileimport requests
url = "https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"anchor-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {'anchor-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"anchor-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("anchor-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads")
.header("anchor-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["anchor-api-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"status": "<string>",
"message": "<string>",
"file_paths": [
"<string>"
]
}
}{
"error": {
"code": 123,
"message": "<string>"
}
}{
"error": {
"error": {
"code": 123,
"message": "<string>"
}
}
}{
"error": {
"error": {
"code": 123,
"message": "<string>"
}
}
}Upload Files
Upload files directly to a browser session for use with web forms and file inputs.
Files are saved to the session’s uploads directory and can be referenced in CDP commands
(for example DOM.setFileInputFiles). The saved paths are returned in file_paths.
A .zip upload is unpacked into the uploads directory by default and the archive itself is
not kept. Pass extract=false to store the archive as-is, for example to attach the zip
itself to a file input.
curl --request POST \
--url https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads \
--header 'Content-Type: multipart/form-data' \
--header 'anchor-api-key: <api-key>' \
--form file=@example-fileimport requests
url = "https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"anchor-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {'anchor-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"anchor-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("anchor-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads")
.header("anchor-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anchorbrowser.io/v1/sessions/{sessionId}/uploads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["anchor-api-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"data": {
"status": "<string>",
"message": "<string>",
"file_paths": [
"<string>"
]
}
}{
"error": {
"code": 123,
"message": "<string>"
}
}{
"error": {
"error": {
"code": 123,
"message": "<string>"
}
}
}{
"error": {
"error": {
"code": 123,
"message": "<string>"
}
}
}Authorizations
API key for your Anchor Browser account, sent as the anchor-api-key header on every
request. Create one at app.anchorbrowser.io (API Access),
or obtain one programmatically via the unauthenticated agent-access flow
(POST /v1/agent-access).
Path Parameters
The browser session ID
Query Parameters
Whether a .zip upload is unpacked into the uploads directory. Defaults to true.
Set to false to keep the archive itself so it can be attached to a file input as-is.
Any other value is treated as true. Has no effect on non-zip files.
true, false Body
File to upload to the browser session
Response
File uploaded successfully
Show child attributes
Show child attributes
Was this page helpful?

