> ## Documentation Index
> Fetch the complete documentation index at: https://developer.mogl.online/llms.txt
> Use this file to discover all available pages before exploring further.

# Public agent roster page

> One roster by its route (the part after /rosters/). Resolved by the hashid, so an old slug after a name change still returns the roster; compare `roster.canonical_url` with the browser URL and redirect when they differ. Unknown, unpublished, private, or test rosters, and a page past the end, return HTTP 404. Athletes are in the My Athletes default order and exclude test, private, deleted, and unregistered accounts. `athletes` and `socialData` keep the legacy `get-roster` key names, so existing roster cards and audience charts can render them; athlete cards are limited to public fields. `socialData` covers the whole roster, not only the current page. Throttle: 200/min.



## OpenAPI

````yaml /storage/api-docs/api-docs.json post /get-agent-roster
openapi: 3.0.0
info:
  title: MOGL Core API
  description: >-
    MOGL Platform Core API — powering athlete NIL deals, brand partnerships,
    agent management, payments, messaging, and more.
     *
     * ## Authentication
     * - **JWT Bearer Token**: Most endpoints require a Bearer token obtained via `/api/login`.
     * - **Server-to-Server API Key**: Internal/lambda/cron endpoints use an `X-API-KEY` header.
     *
     * ## Rate Limiting
     * - Registration & login endpoints: 4–15 requests per minute
     * - Public/influencer endpoints: 200 requests per minute
     * - Authenticated endpoints: standard Laravel throttle
  version: 1.0.0
servers:
  - url: http://localhost/mogl/mogl-backend/api
    description: Local
  - url: https://dev-api.mogl.online/api
    description: Dev
  - url: https://staging-api.mogl.online/api
    description: Staging
  - url: https://api.mogl.online/api
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Login, registration, password reset
  - name: User Registration - Common
    description: Common user registration & email check
  - name: User Registration - Athlete
    description: Athlete registration & onboarding steps
  - name: User Registration - Partner
    description: Partner/Brand registration & onboarding steps
  - name: User Registration - Agent
    description: Agent registration & onboarding steps
  - name: User Registration - Fan
    description: Fan registration & onboarding steps
  - name: User Profile
    description: User profile management, settings, social media
  - name: Athlete
    description: 'Athlete-specific endpoints: search, details, availability'
  - name: Athlete - Availability Confirmation
    description: Post-hiring availability confirmation workflow
  - name: Athlete - NIL Feed
    description: Athlete NIL feed and partner search
  - name: Athlete - AI Assistant
    description: >-
      AI-powered job assistant for athletes — chat, conversation history, read
      state, and clarification drafts
  - name: Athlete - AI Waitlist
    description: AI Athlete Assistant waitlist status, social proof, and joining
  - name: Partner
    description: Partner/Brand-specific endpoints
  - name: Partner - External Job
    description: External job link & applicant management
  - name: Partner - Deliverable Report
    description: Deliverable detail reports for brands
  - name: Partner - Screening Questions
    description: Screening question reports
  - name: Partner - Contract Management
    description: Brand contract management with athletes
  - name: Partner - Content Library
    description: Brand content library for deliverable assets
  - name: Agent
    description: Agent profile, athlete management, contracts
  - name: Agent - Athletes
    description: Agent-athlete relationship management
  - name: Agent - Stripe
    description: Agent payment methods & billing via Stripe
  - name: Agent - Pay
    description: 'Agent-wide payout feed: money MOGL sends the agent through Stripe Express'
  - name: Agent - Contracts
    description: Agent athlete contract management
  - name: Agent - Availability Confirmation
    description: Agent managing athlete job availability
  - name: Agent - Roster Import
    description: >-
      CSV client list import through CSVBox (ENG-1619 / ENG-1702): session,
      CSVBox webhook, progress, row results, retry
  - name: Agent - Roster Pages
    description: >-
      ENG-1685: My Roster Link, public roster directory, public roster page, and
      roster SEO URL resolution. A roster is the agent's current linked
      athletes; nothing is stored separately.
  - name: Jobs
    description: Job/deal CRUD, search, invitations, hiring, deliverables
  - name: Deals
    description: Deal listing, my deals, bulk operations
  - name: Deal Folder
    description: >-
      Deal folder file workflow — uploads, replacements, approvals, revisions,
      comments. Accessible by athlete, partner/brand, agent, and iOS clients
      (per-action authorisation enforced server-side).
  - name: Deal Folder iOS API
    description: >-
      iOS-only direct-to-S3 multipart upload endpoints for deal folder files
      (initiate/complete for new uploads and replacements). Web clients should
      use the standard `Deal Folder` upload/replace endpoints instead.
  - name: Chat
    description: Messaging, chat contacts, notifications
  - name: Notifications
    description: Notification preferences, in-app notifications
  - name: Payments
    description: Stripe payments, payment history, cards, bulk pay
  - name: Subscription
    description: Brand subscription plans & management
  - name: Public Pages
    description: Public content endpoints (no auth required)
  - name: Public - Influencer/SEO
    description: Public influencer discovery, sitemaps, directories
  - name: Services
    description: Athlete service marketplace
  - name: iOS Device
    description: iOS device tokens, live activities
  - name: Onboarding Tutorial
    description: Onboarding tutorial progress
  - name: MOGL Rosters
    description: Roster management & display
  - name: Internal / Cron
    description: Server-to-server and cron job endpoints
  - name: Internal / AI Assistant Tools
    description: >-
      Server-to-server Athlete Assistant tool gateway used by mogl-ai-service.
      Eight Laravel tools share POST /internal/ai-assistant/tools/{tool}.
      search_kb is Python-local and is not in this path enum.
  - name: Internal / QA Scenario Lab
    description: >-
      Feature-flagged DEV/STAGING-only endpoints called by the authorized Back
      Office QA Scenario Lab.
  - name: Affiliate
    description: Athlete affiliate links & tracking
  - name: Internal
    description: Internal
  - name: Public - Social Linking
    description: Public - Social Linking
paths:
  /get-agent-roster:
    post:
      tags:
        - Agent - Roster Pages
      summary: Public agent roster page
      description: >-
        One roster by its route (the part after /rosters/). Resolved by the
        hashid, so an old slug after a name change still returns the roster;
        compare `roster.canonical_url` with the browser URL and redirect when
        they differ. Unknown, unpublished, private, or test rosters, and a page
        past the end, return HTTP 404. Athletes are in the My Athletes default
        order and exclude test, private, deleted, and unregistered accounts.
        `athletes` and `socialData` keep the legacy `get-roster` key names, so
        existing roster cards and audience charts can render them; athlete cards
        are limited to public fields. `socialData` covers the whole roster, not
        only the current page. Throttle: 200/min.
      operationId: getAgentRoster
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - roster_route
              properties:
                roster_route:
                  type: string
                  maxLength: 220
                  example: nilson-sports-group-talent-roster-E0K7YE
                page:
                  type: integer
                  minimum: 1
                  example: 1
                limit:
                  description: Default 100
                  type: integer
                  maximum: 100
                  minimum: 1
                  example: 100
              type: object
      responses:
        '200':
          description: Roster
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  message:
                    type: string
                    example: Roster fetched successfully
                  data:
                    properties:
                      roster:
                        properties:
                          id:
                            description: Agent hashid
                            type: string
                            example: E0K7YE
                          display_name:
                            type: string
                            example: Nilson Sports Group
                          roster_name:
                            type: string
                            example: Nilson Sports Group Talent Roster
                          agent_type:
                            description: agency when the agent has an agency name
                            type: string
                            enum:
                              - agency
                              - person
                            example: agency
                          canonical_url:
                            type: string
                            format: uri
                            example: >-
                              https://influencer.mogl.online/rosters/nilson-sports-group-talent-roster-E0K7YE
                          profile_photo:
                            type: string
                            example: >-
                              https://dfxdmt3q663j6.cloudfront.net/storage/agent.jpg
                            nullable: true
                          linkedin_url:
                            type: string
                            example: https://www.linkedin.com/in/nilson
                            nullable: true
                          athlete_count:
                            type: integer
                            example: 12
                          indexable:
                            description: True at 4 or more athletes
                            type: boolean
                            example: true
                          robots:
                            type: string
                            enum:
                              - index, follow
                              - noindex, nofollow
                            example: index, follow
                        type: object
                      athletes:
                        description: >-
                          Athlete cards in the My Athletes default order, public
                          fields only
                        type: array
                        items:
                          properties:
                            id:
                              description: Athlete hashid
                              type: string
                              example: Xy9AbC
                            first_name:
                              type: string
                              example: Jordan
                            last_name:
                              type: string
                              example: Example
                            name:
                              type: string
                              example: Jordan Example
                            profile_photo:
                              description: Null shows the placeholder
                              type: string
                              example: >-
                                https://dfxdmt3q663j6.cloudfront.net/storage/athlete.jpg
                              nullable: true
                            school:
                              type: string
                              example: Example University
                            sport_category_name:
                              type: string
                              example: Basketball
                            average_rating:
                              description: >-
                                Star rating on the card; empty string when
                                unrated
                              type: number
                              example: 5
                            instagram:
                              type: string
                              example: jordanexample
                            twitter:
                              type: string
                              example: ''
                            tiktok:
                              type: string
                              example: ''
                            public_profile_url:
                              type: string
                              example: >-
                                https://influencer.mogl.online/athletes/jordan-example--Xy9
                            UserSocialMediaStatistics:
                              description: Follower names and counts only
                              properties:
                                instagram_name:
                                  type: string
                                  example: jordanexample
                                instagram_followers_count:
                                  type: integer
                                  example: 12000
                                tiktok_name:
                                  type: string
                                  example: null
                                  nullable: true
                                tiktok_follower:
                                  type: integer
                                  example: null
                                  nullable: true
                                twitter_name:
                                  type: string
                                  example: null
                                  nullable: true
                                twitter_follower:
                                  type: integer
                                  example: null
                                  nullable: true
                              type: object
                              nullable: true
                            social_media:
                              description: >-
                                Per-athlete audience data
                                (socialMediaAudiencePublic)
                              type: object
                              additionalProperties: true
                          type: object
                      socialData:
                        description: >-
                          Combined audience and 30-day stats, same shape as
                          `get-roster` socialData (socialMediaAudiencePublic
                          response)
                        type: object
                        additionalProperties: true
                      pagination:
                        properties:
                          current_page:
                            type: integer
                            example: 1
                          per_page:
                            type: integer
                            example: 100
                          total:
                            type: integer
                            example: 12
                          last_page:
                            type: integer
                            example: 1
                        type: object
                    type: object
                type: object
        '404':
          description: Roster not found, or page past the end
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: error
                  message:
                    type: string
                    example: Roster not found
                  data:
                    type: object
                    example: null
                    nullable: true
                type: object
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
      security: []
components:
  schemas:
    ValidationErrorResponse:
      properties:
        message:
          type: string
          example: The given data was invalid.
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      type: object
  securitySchemes:
    bearerAuth:
      type: http
      description: >-
        JWT Bearer token authentication. Use the /api/login endpoint to obtain a
        token.
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.