Apply athletes to job
Apply one or more athletes to a job. Requires agreement acceptance. Screening answers are sent as dynamic keys ‘athlete_’ (e.g. athlete_132, athlete_1181) — each is an array of objects with question_id, question, and answer. Prerequisites are enforced server-side in a fixed order and the first failure refuses the whole request with 400 and a stable error_code: AGENT_NOT_APPROVED, ATHLETE_NOT_LINKED, ATHLETE_NOT_APPROVED, AGENT_PHOTO_REQUIRED, ATHLETE_PHOTO_REQUIRED, AGENT_PAYOUT_REQUIRED, then SCREENING_ANSWERS_REQUIRED. Branch on the code, never on the message. AGENT_PAYOUT_REQUIRED is raised only when no Stripe Express account exists at all; an account Stripe is still verifying is accepted, matching the athlete rule, so an agent who finished onboarding is never left stranded. SCREENING_ANSWERS_REQUIRED (ENG-1357) is checked last on purpose: the payout intercept sends the agent to Stripe Express and the answers held in the client are lost on the way back, so checking screening earlier would return an agent to questions they had already completed. Clients should persist the full request payload before starting Express onboarding and resubmit it on return rather than re-running their own screening check. That check applies only when the deal has configured screening questions, and every configured question needs a non-empty answer for every selected athlete; a shipping-address answer_payload counts as an answer.
Authorizations
JWT Bearer token authentication. Use the /api/login endpoint to obtain a token.
Body
Job ID to apply to
1038
Array of athlete user IDs
Must be true to proceed
true
Name used for agreement signing
"Univ mm"
Dynamic key per athlete (e.g. athlete_132). Array of screening question answers for that athlete.
Will disclose (default Y)
Y, N "Y"
Optional base64 image attachment
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."
Response
The prerequisites passed and each selected athlete was processed individually. A non-empty errors or error_details here is a partial result, not a failed request: show the athletes in applied as applied and attach each failure to its matching athlete.
"Athletes successfully Applied"
Per-athlete failure messages. Kept for existing clients.
Per-athlete success messages.
Additive companion to errors (ENG-1357): the same failures, with the athlete each one belongs to and a code where one applies. Prefer this over parsing errors.