Share deal with a user by email
POST
/api/canvas/{deal_id}/share
const url = 'https://example.com/api/canvas/example/share';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"email":"example","role":"viewer"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/canvas/example/share \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "email": "example", "role": "viewer" }'Grant another user access to this deal. If the user doesn’t have an account, sends an invitation email. Requires owner role.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”deal_id
required
Deal Id
string
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
ShareByEmailRequest
object
email
required
Email
string
role
Role
string
Responses
Section titled “Responses”Successful Response
Media typeapplication/json
ShareDealResponse
Response from POST /canvas/{deal_id}/share (email path).
P2 (2026-04-27) routes all email-based shares through the pending-invite
flow, so every successful share creates an invite — expires_at,
invite_id, email, email_sent, and share_url are
unconditionally emitted. warning is set only when email delivery
fails (D7 fix, May 2026).
object
success
required
Success
boolean
status
required
Status
string
deal_id
required
Deal Id
string
role
required
Role
string
email
required
Email
string
invite_id
required
Invite Id
string
expires_at
required
Expires At
string
email_sent
required
Email Sent
boolean
org_invite_created
required
Org Invite Created
boolean
share_url
required
Share Url
string
Examplegenerated
{ "success": true, "status": "example", "deal_id": "example", "role": "example", "email": "example", "invite_id": "example", "expires_at": "example", "email_sent": true, "org_invite_created": true, "share_url": "example", "warning": "example"}Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}