/api/public/v1/sharesshares.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).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
command_idbody | string (uuid) | Yes | Client-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_idbody | string (uuid) | Yes | Profile to copy; its latest committed revision is used |
recipient_emailbody | string (email) | Yes | The one person who may accept it (their verified sign-in email) (max length 320) |
categoriesbody | array<"cookies" | "local_storage" | "indexed_db" | "service_workers" | "extensions" | "bookmarks" | "history" | "open_tabs" | …> | No | Browser data to include beyond the configuration (always included). Only categories the pinned revision holds; see shares.preview (max 9 items) Default: `[]`. |
expires_in_daysbody | integer | No | Days the recipient has to accept (min 1, max 30) Default: `7`. |
messagebody | string | No | Short 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.
| Field | Type | Always present | Description |
|---|---|---|---|
| data | object | Yes | |
| data.package | object | Yes | |
| data.package.id | string (uuid) | Yes | |
| data.package.state | "preparing" | "available" | "importing" | "delivered" | "declined" | "revoked" | "expired" | "failed" | Yes | |
| data.package.profile_name | string | Yes | |
| data.package.os | "windows" | "linux" | Yes | |
| data.package.source_revision | integer | No | Committed revision the copy is pinned to (absent for configuration-only copies) (min -9007199254740991, max 9007199254740991) |
| data.package.categories | array<"cookies" | "local_storage" | "indexed_db" | "service_workers" | "extensions" | "bookmarks" | "history" | "open_tabs" | …> | Yes | Browser data carried beyond the configuration |
| data.package.recipient_email | string | Yes | |
| data.package.message | string | No | |
| data.package.expires_at | string (date-time) | Yes | |
| data.package.created_at | string (date-time) | Yes | |
| data.package.delivered_at | string (date-time) | No | |
| data.package.ended_at | string (date-time) | No | |
| data.package.failure | object | No | |
| data.package.failure.code | string | Yes | |
| data.package.failure.message | string | No | |
| data.package.progress | object | No | |
| data.package.progress.waiting_for_machine | boolean | Yes | |
| data.package.progress.phase | string | No | |
| data.package.progress.pct | integer | No | (min -9007199254740991, max 9007199254740991) |
| data.package.progress.attempts | integer | Yes | (min -9007199254740991, max 9007199254740991) |
| data.package.profile_id | string (uuid) | No | Absent once the source profile was deleted |
| data.package.created_by_email | string | No | |
| correlation_id | string (uuid) | Yes | |
| replayed | boolean | No | true when this command_id was already applied and the stored receipt came back |
Errors
| Code | HTTP | Retryable |
|---|---|---|
| UNAUTHENTICATED | 401 | No |
| FORBIDDEN | 403 | No |
| RATE_LIMITED | 429 | Yes |
| VALIDATION_FAILED | 422 | No |
| CONFLICT | 409 | No |
| OUTCOME_UNKNOWN | 202 | Yes |
| DEPENDENCY_UNAVAILABLE | 503 | Yes |
| UNKNOWN | 500 | No |
