Skip to content

Send a hire offer to a talent profile

POST
/marketplace/talent/{sdr_id}/hire

Send a hire offer.

Delegates to HireSdrHandler so the full chain runs intact: SdrHiring row is created in pending_acceptance state, the contract is generated + e-signed inside graph8, the client’s T&C acceptance is stamped in the same transaction, the SDR receives a “you have a new offer” notification, and the EDA event fires.

409 if the caller already has an active contract with this SDR. 400 if accepted_terms is empty (terms_not_accepted).

Authorizations

Parameters

Path Parameters

sdr_id
required
string

Header Parameters

X-Target-Org-Id
Any of:
string

Request Body required

Hire-offer body — mirrors the Phase B HireSdrRequest in marketplace.interfaces.fastapi.dtos.

Phase B removed hiring_fee_usd and commission_percentage and added contract_length_months, scope_text and the required accepted_terms. The contract is generated + e-signed inside graph8, and the client’s T&C acceptance is captured in the same transaction as the hiring row — so accepted_terms must be non-empty or the underlying handler returns terms_not_accepted (400).

object
accepted_terms

Required: client’s acceptance of the Marketplace Terms + SDR Participation Agreement. An empty list is rejected with 400 (terms_not_accepted) by the underlying hire handler.

Array<object>

One T&C document the client agreed to when sending the offer.

Mirrors AcceptedTermDTO in marketplace.interfaces.fastapi.dtos: only document_id is sent; the server resolves the current version + URL server-side at send time.

object
document_id
required

Marketplace-terms | sdr-participation-agreement

string
commission_plan_version_id
Any of:
string
contract_length_months
Any of:
integer
>= 1 <= 120
monthly_rate_usd
Any of:
number
per_meeting_rate_usd
Any of:
number
scope_text
Any of:
string
<= 4000 characters
sdr_id
required
string
start_date
required

YYYY-MM-DD

string

Responses

200

Successful Response

object
data
required
object
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string