Browser profiles
Complete a profile upload
Complete an uploaded browser profile so sessions can load it.
POST
/
api
/
v2
/
browser-profiles
/
{profile_id}
/
complete-upload
from hai_agents import Client
client = Client()
profile = client.browser_profiles.complete_browser_profile_upload(
profile_id=profile_id,
name="acme-prod-login",
browser_name="chromium",
browser_version="150",
labels={"team": "qa"},
)
print(profile.id)
import { HaiAgentsClient } from "hai-agents";
const client = new HaiAgentsClient();
const profile = await client.browserProfiles.completeBrowserProfileUpload({
profileId,
name: "acme-prod-login",
browserName: "chromium",
browserVersion: "150",
labels: { team: "qa" },
});
console.log(profile.id);
curl -X POST "https://agp.eu.hcompany.ai/api/v2/browser-profiles/$PROFILE_ID/complete-upload" \
-H "Authorization: Bearer $HAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-prod-login",
"browser_name": "chromium",
"browser_version": "150",
"labels": {"team": "qa"}
}'
{
"id": "9b2e4c1a-7d3f-4e8b-a6c5-2f1d0e9b8a76",
"user_id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
"org_id": "1c9a2f6e-4b3d-4a8c-9e5f-7d6b8a0c1e2f",
"name": "acme-prod-login",
"description": null,
"browser_name": "chromium",
"browser_version": "150",
"file_size_bytes": 102400,
"checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"usage_count": 0,
"last_used_at": null,
"labels": {"team": "qa"},
"is_default": false,
"created_at": "2026-06-16T14:30:00Z",
"updated_at": "2026-06-16T14:30:00Z"
}
Behavior
Call it once the archive is at the presigned target from Initiate upload. The platform verifies the archive and records the profile metadata.Path parameters
string
required
The
profile_id returned by Initiate upload.Request body
string
required
Human-readable label for the profile.
string
required
Browser the profile was captured with (for example
chromium, firefox, webkit, or
selenium). Validated against the set of supported browsers.string
required
Browser version string the profile was captured with (for example
150).string
Free-text description.
object
Key-value metadata for your own bookkeeping. Values are strings.
Response
201 with the created profile object.
from hai_agents import Client
client = Client()
profile = client.browser_profiles.complete_browser_profile_upload(
profile_id=profile_id,
name="acme-prod-login",
browser_name="chromium",
browser_version="150",
labels={"team": "qa"},
)
print(profile.id)
import { HaiAgentsClient } from "hai-agents";
const client = new HaiAgentsClient();
const profile = await client.browserProfiles.completeBrowserProfileUpload({
profileId,
name: "acme-prod-login",
browserName: "chromium",
browserVersion: "150",
labels: { team: "qa" },
});
console.log(profile.id);
curl -X POST "https://agp.eu.hcompany.ai/api/v2/browser-profiles/$PROFILE_ID/complete-upload" \
-H "Authorization: Bearer $HAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-prod-login",
"browser_name": "chromium",
"browser_version": "150",
"labels": {"team": "qa"}
}'
{
"id": "9b2e4c1a-7d3f-4e8b-a6c5-2f1d0e9b8a76",
"user_id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
"org_id": "1c9a2f6e-4b3d-4a8c-9e5f-7d6b8a0c1e2f",
"name": "acme-prod-login",
"description": null,
"browser_name": "chromium",
"browser_version": "150",
"file_size_bytes": 102400,
"checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"usage_count": 0,
"last_used_at": null,
"labels": {"team": "qa"},
"is_default": false,
"created_at": "2026-06-16T14:30:00Z",
"updated_at": "2026-06-16T14:30:00Z"
}
Errors
| Status | Cause |
|---|---|
404 | Not found, or not in your organization. Also sent when no upload is pending for this profile_id. |
422 | Body failed validation (for example an unsupported browser_name), or the archive was not found in storage. |
Was this page helpful?
⌘I
from hai_agents import Client
client = Client()
profile = client.browser_profiles.complete_browser_profile_upload(
profile_id=profile_id,
name="acme-prod-login",
browser_name="chromium",
browser_version="150",
labels={"team": "qa"},
)
print(profile.id)
import { HaiAgentsClient } from "hai-agents";
const client = new HaiAgentsClient();
const profile = await client.browserProfiles.completeBrowserProfileUpload({
profileId,
name: "acme-prod-login",
browserName: "chromium",
browserVersion: "150",
labels: { team: "qa" },
});
console.log(profile.id);
curl -X POST "https://agp.eu.hcompany.ai/api/v2/browser-profiles/$PROFILE_ID/complete-upload" \
-H "Authorization: Bearer $HAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "acme-prod-login",
"browser_name": "chromium",
"browser_version": "150",
"labels": {"team": "qa"}
}'
{
"id": "9b2e4c1a-7d3f-4e8b-a6c5-2f1d0e9b8a76",
"user_id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
"org_id": "1c9a2f6e-4b3d-4a8c-9e5f-7d6b8a0c1e2f",
"name": "acme-prod-login",
"description": null,
"browser_name": "chromium",
"browser_version": "150",
"file_size_bytes": 102400,
"checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"usage_count": 0,
"last_used_at": null,
"labels": {"team": "qa"},
"is_default": false,
"created_at": "2026-06-16T14:30:00Z",
"updated_at": "2026-06-16T14:30:00Z"
}