Shares
A share gives a colleague, or a group of colleagues, access to a record they couldn’t otherwise see: a thread from your mailbox, a file, or a personal contact or organization. Use this resource to share those records and to change or revoke the shares your key’s user made.
Each recipient gets a share of their own, which only the user who created it can change or revoke. A share’s scope decides how much it grants. Accepting a share request creates an interactions share.
To find a share’s id, retrieve the shared record: Retrieve a thread, Retrieve a file, and Retrieve a contact return the record’s shares. Organizations don’t return their shares.
#The share object
One recipient’s access to one record. Exactly one of user and group is set.
Attributes
-
idstring · uuidUnique identifier for the share.
-
sharer_idstring · uuidThe user who created the share. Only this user can change or delete it.
-
useruser · nullableThe recipient, when the share is to a single user.
-
groupgroup · nullableThe recipient, when the share is to a group, with its
users. Every member of the group has the access. -
scopestring · nullableHow much the share grants. Null when the share was created without a scope, which grants the same access as
ongoing. Under any scope, a thread share covers only messages in mailboxes the sharer can currently read; if the sharer loses access to a mailbox, its messages stop being shared.Show 3 valuesHide values
-
ongoingShares the record with no cutoff, on every record type. On a thread, messages that arrive later are shared too.
-
to_dateStops at
share_through.On a thread, the recipient sees only the messages sent at or before
share_through, and their attachments.On a file, the recipient gets the file, and sees only the messages it was attached to that were sent by then.
On a contact or organization, the same as
ongoing. -
interactionsContacts and organizations only.
On a contact, shares the contact, plus the messages between the sharer’s mailboxes and the contact’s email addresses, as those addresses stood when the share was made.
On an organization, the same as
ongoing.
-
-
share_throughstring · date-time · nullableThe cutoff for a
to_dateshare. Messages sent after it aren’t shared. Other scopes ignore it. -
notestring · nullableA message from the sharer to the recipient.
-
created_atstring · date-time · nullable
{
"id": "f4e3d2c1-b0a9-4876-9543-210fedcba987",
"sharer_id": "9c41d2e8-3f6a-4b7c-8d1e-5a2f7b9c0d3e",
"user": {
"id": "4e7a2c1b-8d3f-4a6e-9b5c-7f1d0e2a3b84",
"first_name": "Jordan",
"last_name": "Reyes",
"email_address": "jordan@harborline.example",
…
},
"group": null,
"scope": "to_date",
"share_through": "2026-09-14T17:05:22.318Z",
"note": "Background on the Wildgrove renewal, up to today.",
"created_at": "2026-09-14T17:05:22.318Z"
}
#Create a share
Shares a record visible to your key with users and groups in your account, as your key’s user. Carom creates one share per new recipient and notifies them.
You can’t set share_through when creating a share: a to_date share gets the current time as its cutoff. Use Update a share to change it.
Recipients who already have a share of this record from your key’s user are skipped, and shares contains only the new shares. If every recipient already has one, nothing changes, nobody is notified, and shares lists all of your key’s user’s shares of the record.
Path parameters
-
record_typestringrequiredThe plural resource name, one of:
threadsfilescontactsorganizations -
record_idstring · uuidrequiredThe id of that record. In the OpenAPI spec each route names it after its type, for example
contact_id.Show 4 pathsHide paths
/threads/{thread_id}/shares/files/{file_id}/shares/contacts/{contact_id}/shares/organizations/{organization_id}/shares
Request body application/json
-
shareobjectrequiredGive at least one user or group.
Show 4 child attributesHide child attributes
-
user_idsarray of strings · uuidUsers in your account.
-
group_idsarray of strings · uuidGroups in your account.
-
scopestringSee
scopeon the share object. Omit for a share with no cutoff.ongoingto_dateinteractions -
notestring · nullableA message to the recipients.
-
Returns
-
sharesarray of sharesThe shares created, one per new recipient. When every recipient already had a share, all of your key’s user’s shares of the record.
Errors
- 400
no_recipientsBothuser_idsandgroup_idsare empty or missing. - 400
invalid_share_scopescopeisn’t one of the values above, or isinteractionson a thread or file. - 400
recipient_not_in_accountA user or group id doesn’t belong to your account. - 400
invalid_requestTheshareobject is missing or malformed, or an entry inuser_idsorgroup_idsisn’t a UUID. - 404
record_not_foundNo record of that type with that id is visible to your key.
curl https://api.carom.io/threads/8b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e/shares \
-H "Authorization: Bearer $CAROM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"share": {
"user_ids": ["4e7a2c1b-8d3f-4a6e-9b5c-7f1d0e2a3b84"],
"scope": "to_date",
"note": "Background on the Wildgrove renewal, up to today."
}
}'
{
"shares": [
{
"id": "f4e3d2c1-b0a9-4876-9543-210fedcba987",
"sharer_id": "9c41d2e8-3f6a-4b7c-8d1e-5a2f7b9c0d3e",
"user": {
"id": "4e7a2c1b-8d3f-4a6e-9b5c-7f1d0e2a3b84",
"first_name": "Jordan",
…
},
"group": null,
"scope": "to_date",
"share_through": "2026-09-14T17:05:22.318Z",
"note": "Background on the Wildgrove renewal, up to today.",
"created_at": "2026-09-14T17:05:22.318Z"
}
]
}
#Update a share
Changes the note, scope, or cutoff of a share your key’s user made. When the result is a to_date share and you don’t send share_through, the share keeps its existing cutoff, or gets the current time if it has none.
Path parameters
-
record_type,record_idrequiredThe shared record, as on Create a share. It must be the record the share belongs to.
-
idstring · uuidrequiredThe share’s id.
Request body application/json
-
shareobjectrequiredShow 3 child attributesHide child attributes
-
notestring · nullable -
scopestring · nullableAs on Create a share.
ongoingto_dateinteractions -
share_throughstring · date-time · nullableA new cutoff for a
to_dateshare.
-
Returns
The updated share object, wrapped in share.
Errors
- 400
invalid_share_scopescopeisn’t allowed for this record type. - 403
permission_deniedYour key’s user can see the share but didn’t make it. - 404
record_not_foundNo share with that id belongs to the record in the path, or your key’s user can see neither the share’s record nor the share as its sharer or recipient.
curl -X PATCH https://api.carom.io/threads/8b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e/shares/f4e3d2c1-b0a9-4876-9543-210fedcba987 \
-H "Authorization: Bearer $CAROM_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "share": { "scope": "ongoing" } }'
{
"share": {
"id": "f4e3d2c1-b0a9-4876-9543-210fedcba987",
"sharer_id": "9c41d2e8-3f6a-4b7c-8d1e-5a2f7b9c0d3e",
"scope": "ongoing",
"note": "Background on the Wildgrove renewal, up to today.",
…
}
}
#Delete a share
Revokes a share your key’s user made. The recipient loses the access that share gave them; access they have through their own mailbox or another share is unaffected.
Path parameters
-
record_type,record_id,idrequiredAs on Update a share.
Returns
The ok object, {"ok": "ok"}.
Errors
- 403
permission_deniedYour key’s user can see the share but didn’t make it. - 404
record_not_foundNo share with that id belongs to the record in the path, or your key’s user can see neither the share’s record nor the share as its sharer or recipient.
curl -X DELETE https://api.carom.io/threads/8b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e/shares/f4e3d2c1-b0a9-4876-9543-210fedcba987 \
-H "Authorization: Bearer $CAROM_API_KEY"
{ "ok": "ok" }