• Documentation
  • Introduction
    • The member journey
  • Training
    • Create a program
    • Courses and sections
    • Lessons, media and publication
    • Milestones and paths
    • Tasks and deliverables
    • Cohorts and groups
  • Student & Community
    • Joining a school
    • Learning and resuming
    • Submitting and revising work
    • Calendar and lives
    • Spaces and questions
    • Reading progress
  • Coaching
    • Roles and assignments
    • Member context and work queue
    • Reviews and feedback
    • Sessions and interventions
    • Cohort cockpit and live operations
  • Leads & Qualification
    • People, leads and applications
    • Contacts and import
    • Qualification forms
    • Application triage
  • Setting & Booking
    • Setter scope
    • Sales availability
    • Share a booking link
    • Prospect booking
    • Agenda and booking management
    • Prepare a call and share its meeting link
  • Closing, Offers & Payments
    • Closer scope
    • Compose an offer
    • Share a nominal payment link
    • Buyer checkout and access
    • Instalments
    • Offline payment
    • Track payment and access failures
    • Stripe school account
  • Administration & Integrations
    • Organization roles and domains
    • API keys and tenant binding
    • Webhooks
    • Payment setup
  • API quickstart
  • API reference
    • Connect with MCP
    • Enrollments
      • GETGet the enrollment timeline
      • GETGet the coaching briefing
      • POSTPause an enrollment
      • POSTResume an enrollment
      • POSTExtend a deadline
      • POSTTransfer an enrollment
      • POSTClose an enrollment
      • POSTSubmit an outcome measure
      • GETList outcome measures
      • GETList deadline extensions
      • DELETECancel a deadline extension
      • GETList enrollments
      • POSTEnroll a person
    • Cohorts
      • GETGet the cohort cockpit
      • GETList the enrollments behind a cockpit signal
      • PATCHConfigure a cohort
      • POSTMove a cohort to another phase
      • POSTCreate a cohort
      • POSTChange a cohort's status
    • Coaching sessions
      • GETList coaching sessions
      • GETGet a coaching session
      • POSTRecord a coaching session
      • POSTAppend coaching session entries
    • Interventions
      • GETList interventions
      • POSTPlan an intervention
      • POSTClose an intervention
    • Live sessions
      • PATCHRecord live attendance
      • GETList live attendance
      • GETRead one enrollment's attendance
      • GETList live sessions
      • POSTSchedule a live session
      • PATCHUpdate a live session
      • POSTCancel a live session
      • GETGet live session
    • Programs
      • GETList programs
      • POSTCreate a program
      • GETRead a program
      • PATCHUpdate a program
      • POSTArchive a program
      • POSTRestore a program
    • Courses
      • GETList the courses of a program
      • POSTCreate a course
      • PATCHUpdate a course
      • POSTRename a course
      • POSTArchive a course
      • POSTReorder the courses of a program
      • POSTUpload a course cover
    • Sections
      • GETList the sections of a course
      • POSTCreate a section
      • POSTRename a section
      • POSTDissolve a section
      • POSTReorder the sections of a course
      • POSTMove a lesson into a section
      • DELETETake a lesson out of its section
    • Lessons
      • GETList the lessons of a program
      • POSTCreate a lesson
      • GETRead a lesson
      • PATCHUpdate a lesson
      • POSTPublish a lesson
      • POSTArchive a lesson
      • POSTMove a lesson to another course
      • POSTReorder the lessons of a program
      • POSTAttach a resource
      • DELETEDetach a resource
      • POSTReorder the resources of a lesson
      • POSTUpload a lesson resource
      • POSTUpload a lesson video
      • GETRead a lesson by its identifier
      • PATCHUpdate a lesson by its identifier
      • GETRead the discussion of a lesson
      • POSTComment on a lesson
    • Milestones
      • GETList the milestones of a program
      • POSTCreate a milestone
      • PATCHUpdate a milestone
      • POSTArchive a milestone
      • POSTReorder the milestones of a program
      • GETList the contributions of a milestone
      • POSTAttach a contribution
      • DELETEDetach a contribution
    • People
      • POSTImport people
      • POSTLink a duplicate person
      • DELETEUnlink a duplicate person
    • Delivery analytics
      • GETGet delivery analytics
    • Sales availability
      • GETRead sales availability
      • GETPreview sales slots
      • PUTReplace sales availability
      • GETList eligible sales closers
    • Community
      • POSTUpload an attachment
      • POSTAttach to a thread
      • POSTCreate a space
      • POSTPost a thread
      • POSTReply to a thread
      • POSTLink a thread
      • GETList spaces
      • GETRead a thread
      • GETSearch the community
    • Offer payments
      • POSTPause automatic charging
      • DELETEResume automatic charging
      • POSTCharge an instalment now
      • GETGet collections dashboard
    • Member tasks
      • POSTCreate a member task
      • GETList the tasks of a milestone
      • PUTUpdate a member task
      • POSTArchive a member task
      • POSTReorder the tasks of a milestone
      • GETRead a task
      • GETList program tasks
    • Deliverables
      • POSTCreate a deliverable
      • GETList the deliverables of a task
      • GETGet a deliverable
      • PUTUpdate a deliverable
      • POSTArchive a deliverable
    • Groups
      • GETList groups
      • POSTCreate a group
      • GETGet a group
      • PATCHUpdate a group
      • POSTAdd a Group membership
      • DELETERemove a Group membership
    • Paths
      • GETList program paths
      • POSTCreate a path
      • GETGet a path
      • PATCHVersion or promote a path
    • Webhooks
      • GETList webhook subscriptions
      • POSTCreate a webhook subscription
      • GETGet a webhook subscription
      • PATCHUpdate a webhook subscription
      • DELETEDelete a webhook subscription
      • POSTVerify a webhook subscription
      • POSTRotate a webhook secret
      • POSTPause or reactivate a webhook subscription
      • GETList webhook deliveries
      • GETGet a webhook delivery
      • POSTReplay a webhook delivery
    • Media
      • GETList media
      • POSTUpload a media
      • PATCHRename a media
      • DELETEDelete a media
    • Bookings
      • GETList the open slots of a booking link
      • POSTSave a booking lead
      • POSTBook a call for a prospect
      • GETGet booking details
      • GETList bookings
      • GETGet booking
      • PATCHUpdate booking details
      • GETGet booking agenda
      • GETGet closer meeting link
      • GETList person bookings
      • PUTSet closer meeting link
      • GETList booking links
      • POSTSend a booking email
      • GETRead booking follow-up
      • POSTCreate booking link
      • GETGet booking link
      • PUTRecord booking attendance
      • GETRead booking reminder settings
      • PATCHUpdate booking link
      • POSTReschedule booking
      • PUTSet booking reminder settings
      • POSTCancel booking
      • GETList booking reassignment candidates
      • POSTReassign booking
      • GETList booking reschedule slots
      • GETList booking reassignment slots
    • My learning
      • GETList my enrollments
      • GETGet my learning context
      • GETList my lessons
      • GETGet one of my lessons
      • GETList my agenda
      • GETGet my lesson note
      • PUTSave my lesson note
      • DELETEDelete my lesson note
      • GETList my lesson notes
      • GETGet my lesson's agent section
      • GETList my tasks
      • GETRead my submission
      • POSTOpen my submission draft
      • PUTSave my submission draft
      • POSTSubmit my work
      • POSTResubmit my work
    • Forms
      • GETList forms
      • POSTCreate a form
      • GETGet a form
      • PATCHUpdate form identity
      • DELETEDelete a form
      • PUTSave form definition
      • PUTSet form theme
      • PUTSet form qualification
      • PUTSet submission mode
      • PUTOpen or close a form
      • POSTPublish a form
      • POSTUnpublish a form
      • GETList form responses
      • GETGet a form response
      • GETRead form statistics
      • POSTRetry response qualification
      • GETRead form definition
      • GETRead form theme
      • GETRead form qualification
      • GETRead form submission-settings
      • GETRead form identity fields
      • PUTSet form identity fields
    • Calendar connections
      • GETList calendar connections
      • GETRead a calendar connection
      • POSTRequest calendar consent
      • GETList writable calendars
      • PUTSelect a calendar
      • DELETEDisconnect a calendar
    • Offers
      • GETList offers
      • POSTCreate an offer
      • GETGet an offer
      • PATCHUpdate an offer
      • GETGet composer options
    • Responsibilities
      • GETList responsibilities
      • POSTAssign a responsibility
      • DELETERemove a responsibility
    • Submission reviews
      • GETList submission reviews
      • GETRead a submission review
      • POSTTake a submission in review
      • POSTDecide a submission review
    • Closers
      • GETList closer invitations
      • POSTInvite a closer
      • POSTResend a closer invitation
      • DELETECancel a closer invitation
      • GETRead commercial responsibility
      • PUTAssign commercial responsibility
      • GETRead my sales availability
      • PUTUpdate my sales availability
      • GETRead my closer setup
    • Personal preparation
      • GETRead my work profile
      • PATCHUpdate my work profile
      • GETRead my preparation
    • Video library
      • GETList video resources
      • GETGet a video resource
      • POSTPublish a video resource
      • PATCHUpdate a video resource
      • POSTUnpublish a video resource
      • POSTRepublish a video resource
    • Video questions
      • POSTAsk a question
      • GETList my questions
      • GETGet my question
      • GETList received questions
      • PATCHAssign a question
      • POSTAnswer a question
      • POSTCancel a question
  1. Documentation
  2. API reference
  3. Bookings
  4. Reassign booking
HomeBlogDocumentationPricingContact

Reassign booking

PreviousList booking reassignment candidatesNextList booking reschedule slots
On this page
AuthorizationOrganization roleBusiness authorizationPath parametersRequest headersRequest bodyExampleResponseResponse fieldsExample responseNotesRelated

POST /api/v1/bookings/{bookingId}/reassign

Hand a call over to another closer of the team, and move it onto one of their free slots when they are busy at the current time, using the current permissions of the key holder. The school comes from the verified key. MCP equivalent: reassign_booking.

  • Without startsAt (or with the call's current start): only the closer changes. The closer must be free at the call's current time.
  • With another startsAt: the closer and the time change in one atomic command. The instant must be one returned by reassignment slots for this closer: in the future, within that closer's booking horizon, and free of calls, daily capacity and connected calendar events when the command is applied.

Authorization

Organization role

Role in the organizationThis endpoint
OWNERAllowed
ADMINAllowed
MEMBERHead of Sales only — otherwise 403

Business authorization

Only an owner, an administrator or a Head of Sales in this school can perform this operation; setter and closer roles do not grant it. A Head of Sales member creates no API key: they reach this operation through an MCP OAuth connection. Reassigning changes the closer of this call only; the contact owner is unchanged.

RequirementRule
Business roleHead of Sales, for a member
Resource scopeCurrent school and the permitted resource scope
ParticipationNone
Resource stateActive future booking for a new mutation

Path parameters

ParameterTypeRequiredDescription
bookingIdUUIDyesResource in the permitted school and scope.

Request headers

HeaderRequiredDescription
x-api-keyyesKey for this school.
Idempotency-KeyyesStable key for exactly one intention.
X-Correlation-IdnoUUID for tracing this call.

Request body

FieldTypeRequiredNullableDescription
closerUserIdUUIDyesnoA closer returned by the reassignment candidates endpoint.
startsAtISO 8601 stringnonoExact instant returned by the reassignment slots endpoint for this closer; include an offset. Omit it to keep the current time.
localestringnonoLanguage of the prospect email: fr, en or es. Defaults to fr.

Example

bash
curl -X POST "$COHORTE_API_BASE_URL/api/v1/bookings/00000000-0000-4000-8000-000000000001/reassign" \
  -H "x-api-key: $COHORTE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: scheduling-intention-001" \
  --data '{"closerUserId": "00000000-0000-4000-8000-000000000001", "startsAt": "2030-01-10T09:00:00Z"}'

Response

  • 200 — successful read, mutation or retry.
  • 400 — invalid request.
  • 401 — invalid key, bearer or school membership.
  • 403 — insufficient permission.
  • 404 — booking absent or outside the permitted scope, or closer outside the active sales team.
  • 409 — the closer is no longer free at the call's time, the chosen slot is no longer free for this closer, a changed intention for this key, or an unverifiable historical key. Reread candidates or slots before a new command.
  • 500 — unexpected failure; retry only the identical intention.

Response fields

FieldTypeNullableDescription
successbooleannoTrue on success.
dataobjectnoScoped records; no private management token.
data.idUUIDnoPublic identifier, when this endpoint returns a single resource.

Example response

json
{
  "success": true,
  "data": {
    "id": "00000000-0000-4000-8000-000000000001",
    "status": "rescheduled",
    "startsAt": "2030-01-10T09:00:00.000Z",
    "endsAt": "2030-01-10T09:45:00.000Z",
    "personId": "00000000-0000-4000-8000-000000000001",
    "prospectName": "Alex",
    "prospectEmail": null,
    "prospectPhone": null,
    "closerUserId": "00000000-0000-4000-8000-000000000001",
    "closerName": "Sam",
    "source": "api",
    "sourceDetail": null,
    "linkSlug": "discovery",
    "bookedByName": "Owner",
    "linkName": "Discovery",
    "createdAt": "2030-01-01T00:00:00.000Z",
    "cancelledAt": null,
    "cancelReason": null
  }
}

Notes

Reuse the same key only for the same normalized payload and resource. An identical retry rechecks current permissions, returns the resource and creates no new audit event or notification. A changed payload or an older unverifiable key returns 409; inspect the original outcome before deciding on any new command.

History is retained. A genuinely new mutation notifies the affected participants once through the existing notification flow. Staff never receive or reuse the prospect management token. Slot availability is checked again when applying the command.

What is sent after a new reassignment:

RecipientCloser onlyCloser and time
ProspectNo email — the time does not change; their manage page and reminders show the new linkEmail with the new time, without the closer's name; no new confirmation request — a presence already confirmed stays confirmed
Former closerNotification that the call is releasedNotification that the call is released, at the time they held
New closerNotification of the assigned callNotification of the assigned call
Meeting linkThe call's link becomes the new closer's default meeting link, or is cleared if they have none — never the former closer'sSame; the prospect email carries the new link
CalendarsEvent moved from the former to the new closer's connected calendarSame, at the new time

Reassigning never changes the contact owner, nor the rotation of a booking link.

Related

  • Bookings
  • Sales availability
  • Coaching sessions