curl --request POST \
--url https://api.anchorbrowser.io/v1/sessions/{sessionId}/agent/files \
--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}/agent/files"
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}/agent/files', 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}/agent/files",
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}/agent/files"
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}/agent/files")
.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}/agent/files")
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 Agent Resources
Upload files as agent resources to a browser session using multipart/form-data.
If you upload a ZIP file, it will be automatically extracted and the files will be made available as agent resources
(pass extract=false to keep the archive itself instead).
If you upload a single file, it will be saved directly as an agent resource.
Resources are then accessible to AI agents for task completion and automation.
curl --request POST \
--url https://api.anchorbrowser.io/v1/sessions/{sessionId}/agent/files \
--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}/agent/files"
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}/agent/files', 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}/agent/files",
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}/agent/files"
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}/agent/files")
.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}/agent/files")
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. Any other value is treated as true.
Has no effect on non-zip files.
true, false Body
File to upload as agent resource (ZIP files are extracted unless extract=false)
Response
Agent resources uploaded successfully
Show child attributes
Show child attributes
Was this page helpful?

