Get represented athletes
Returns the agent’s current roster. A pending athlete can appear here (ENG-1357): representation no longer requires an approved account, but applying that athlete to a deal still does. Use athlete_account_status and can_apply_to_deals for that distinction, and keep handling ATHLETE_NOT_APPROVED from the apply endpoint as the authoritative answer, because a roster response can be stale by the time Apply is pressed.
*
- Pass
job_idto get the deal-aware roster the apply modal renders (ENG-1382). Each athlete - then also carries
already_applied,invited_to_deal,selectable,lock_reason_code, lock_reason,needs_profile_photoandpayout_method_missing, and the response gains- roster-wide
linked_count,applied_countandall_linked_athletes_applied. Without job_idthe response is unchanged.- The invitation means different things on the two kinds of deal (ENG-1697). On a public deal
- it is an indicator only: badge the invited rows, and leave the rest selectable if they are
- otherwise ready. On an invite-only deal it is a requirement, so an uninvited athlete is
- locked with NOT_INVITED_TO_PRIVATE_DEAL. That is the one lock the agent can never clear,
- which is why it is reported ahead of the onboarding locks rather than after them.
- Clients must branch on
lock_reason_code, never onlock_reason: the codes are part of - the contract, the copy is product-owned and changes. Use
selectablefor the per-deal - answer, not
can_apply_to_deals, which stays account-level and is true for any approved - athlete regardless of the deal.
- The social requirement follows the deal. When the deal’s deliverables name a platform
- (
milestone_categories.social_media) the athlete must have that platform connected, and - the lock is INSTAGRAM_REQUIRED, TIKTOK_REQUIRED or X_REQUIRED. Having a different
- platform connected does not satisfy it. When no deliverable names a platform, any one
- connected account is enough and the lock is the generic SOCIAL_ACCOUNT_REQUIRED, which
- matches the athlete self-apply rule. A deal requiring several platforms reports the
- first one missing, in the order Instagram, TikTok, X.
- A missing profile photo is not a lock. The agent can upload one on the athlete’s behalf,
- so it is reported separately and handled by the photo intercept after Apply.
- The athlete payout requirement is a lock on every deal, whoever it pays (ENG-1644). The
- athlete needs their current agent’s approved agency W-9 (the latest one counts, ENG-1650), linked
- Stripe, or linked PayPal. Otherwise the row is locked with ATHLETE_PAYOUT_REQUIRED,
- ATHLETE_W9_PENDING or ATHLETE_W9_REJECTED, checked after the approval and social locks.
- Submission enforces the same lock. The agent’s own Stripe Express account is a separate
- check at submission (AGENT_PAYOUT_REQUIRED).
- Pass
filterto narrow the roster by column (ENG-1480). Filtering happens before - pagination, so
meta.totalalways describes the filtered set. Several filters combine - with AND, and an unrecognised column, operator or value is ignored rather than rejected,
- so a partly-filled filter object is safe to send. A missing value counts as zero, which
- is what the table renders, so
earnings lessThan 1includes athletes who earned nothing. - Pass
sort_columnandsort_orderto order the table, the same pair the external applicants table takes. Sorting happens before pagination and after filtering. Each column sorts on the value it displays:clientby name,tax_documentsin the order Upload Documents, In Review, Approved, Re-upload, and the number columns numerically with a missing value as zero. Instagram, TikTok and X rows showing N/A stay last in both directions. Equal values keep a stable order across pages. An unrecognisedsort_columnis ignored and the default order is kept.
Authorizations
JWT Bearer token authentication. Use the /api/login endpoint to obtain a token.
Query Parameters
Page number
1
Items per page (default 10)
10
Column to sort the roster by. Without one, the roster uses the public roster order (ENG-1685): profile photo, completed deliverables, total followers, Instagram, TikTok, then Twitter followers, profile complete, name, then athlete ID.
client, profile, tax_documents, in_progress_deals, earnings, instagram, tiktok, twitter "earnings"
Sort direction. Anything but desc sorts ascending.
asc, desc "desc"
Evaluate every athlete's eligibility against this deal.
1038
Include social media statistics.
Y, N "N"
Populate each athlete's social_media breakdowns for the grid cards (ENG-1476). Off by default because the table view does not render them; the cost is three extra queries for the page, whatever its size.
Y, N "N"
Column filters. Send them as a nested query string — filter[tax_documents][0][id]=approved, filter[instagram][type]=inRange&filter[instagram][filter]=1000&filter[instagram][filterTo]=5000. A column's value may also arrive as JSON (filter[instagram]={"type":"inRange","filter":1000,"filterTo":5000}), which is what the deepObject style produces for nested values and what this page's Try it out sends; both are read the same way.
Response
Athletes represented by agent
Present only with job_id. Current linked athletes, approved or not.
30
Present only with job_id. Distinct linked athletes with an application on the deal.
4
Present only with job_id. True once every linked athlete has applied, which is also when the deal leaves Find Deals.
false