Skip to main content
POST/api/public/v1/shares

shares.create

Create an encrypted copy of a profile for one recipient email, pinned to its latest committed revision. Session data (cookies, storage) also needs share.session; saved passwords need profile.export_sensitive. A machine of this workspace prepares it; it can be accepted until expires_in_days (1–30).

Capability: share.manageCommand (idempotent)MCP tool: shares_create
View as Markdown

Parameters

NameTypeRequiredDescription
command_idbodystring (uuid)YesClient-generated UUID for this command. Send the same id (and body) again to get the stored receipt instead of a second change; a different body under the same id is CONFLICT.
profile_idbodystring (uuid)YesProfile to copy; its latest committed revision is used
recipient_emailbodystring (email)YesThe one person who may accept it (their verified sign-in email) (max length 320)
categoriesbodyarray<"cookies" | "local_storage" | "indexed_db" | "service_workers" | "extensions" | "bookmarks" | "history" | "open_tabs" | …>NoBrowser data to include beyond the configuration (always included). Only categories the pinned revision holds; see shares.preview (max 9 items) Default: `[]`.
expires_in_daysbodyintegerNoDays the recipient has to accept (min 1, max 30) Default: `7`.
messagebodystringNoShort note shown to the recipient (no secrets) (max length 500)

Examples

curl -X POST "https://browlix.com/api/public/v1/shares" \
  -H "Authorization: Bearer $BROWLIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"command_id":"<uuid>","profile_id":"<profile_id>","recipient_email":"<recipient_email>"}'

Response

201 with { data, replayed: false, correlation_id } the first time; 200 with replayed: true when the same command_id and body come again.

FieldTypeAlways presentDescription
dataobjectYes
data.packageobjectYes
data.package.idstring (uuid)Yes
data.package.state"preparing" | "available" | "importing" | "delivered" | "declined" | "revoked" | "expired" | "failed"Yes
data.package.profile_namestringYes
data.package.os"windows" | "linux"Yes
data.package.source_revisionintegerNoCommitted revision the copy is pinned to (absent for configuration-only copies) (min -9007199254740991, max 9007199254740991)
data.package.categoriesarray<"cookies" | "local_storage" | "indexed_db" | "service_workers" | "extensions" | "bookmarks" | "history" | "open_tabs" | …>YesBrowser data carried beyond the configuration
data.package.recipient_emailstringYes
data.package.messagestringNo
data.package.expires_atstring (date-time)Yes
data.package.created_atstring (date-time)Yes
data.package.delivered_atstring (date-time)No
data.package.ended_atstring (date-time)No
data.package.failureobjectNo
data.package.failure.codestringYes
data.package.failure.messagestringNo
data.package.progressobjectNo
data.package.progress.waiting_for_machinebooleanYes
data.package.progress.phasestringNo
data.package.progress.pctintegerNo(min -9007199254740991, max 9007199254740991)
data.package.progress.attemptsintegerYes(min -9007199254740991, max 9007199254740991)
data.package.profile_idstring (uuid)NoAbsent once the source profile was deleted
data.package.created_by_emailstringNo
correlation_idstring (uuid)Yes
replayedbooleanNotrue when this command_id was already applied and the stored receipt came back

New fields can appear at any time; ignore the ones you do not know.

Errors

CodeHTTPRetryable
UNAUTHENTICATED401No
FORBIDDEN403No
RATE_LIMITED429Yes
VALIDATION_FAILED422No
CONFLICT409No
OUTCOME_UNKNOWN202Yes
DEPENDENCY_UNAVAILABLE503Yes
UNKNOWN500No

Every error code and when to retry

All operations