Bellator Schedule Intelligence Authentication API

The Authentication API from Bellator Schedule Intelligence — 7 operation(s) for authentication.

Operations 11

GET /api/v1/auth/callback Oauth Callback #
POST /api/v1/auth/signup Signup User #
OPTIONS /api/v1/auth/keys Options Keys #
GET /api/v1/auth/keys List Api Keys #
POST /api/v1/auth/keys Create Api Key #
GET /api/v1/auth/profile Get User Profile #
OPTIONS /api/v1/auth/keys/{key_id} Options Revoke Key #
DELETE /api/v1/auth/keys/{key_id} Revoke Api Key #
PATCH /api/v1/auth/keys/{key_id}/label Update Api Key Label #
OPTIONS /api/v1/auth/account Options Delete Account #
DELETE /api/v1/auth/account Delete Account #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bellatorsi-com:bellatorsi-com-authentication-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bellatorsi-com-authentication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bellator Schedule Intelligence Authentication API
  description: 'Bellator Schedule Intelligence APIs - Stateless Schedule Health APIs


    ## Features


    * **Schedule Analysis** - Comprehensive schedule health analysis

    * **Critical Path** - CPM-based critical path calculation

    * **Validation** - Schedule validation and quality checks

    * **Future: Resource Management** - Resource allocation and leveling

    * **Future: Simulation** - Monte Carlo and what-if analysis

    * **Future: AI Recommendations** - LLM-powered optimization suggestions


    ## Authentication


    API key authentication via `x-api-key` header or OAuth 2.0 Bearer token via `Authorization` header.


    ### API Key Authentication (Legacy)

    Include API key in `x-api-key` header.


    ### OAuth 2.0 / Azure AD Authentication (Recommended)

    Include Bearer token in `Authorization` header: `Authorization: Bearer `


    Tiers:

    - **Free**: 2,000 tasks, 100 req/min, 5MB payload

    - **Professional**: 5,000 tasks, 500 req/min, 25MB payload

    - **Enterprise**: 50,000 tasks, 2,000 req/min, 100MB payload

    - **Government**: 100,000+ tasks, 10,000 req/min, 500MB payload


    ## Usage Metering


    All API requests are metered and tracked for:

    - Request duration (milliseconds)

    - Task count processed

    - Token consumption (for LLM operations)

    - Estimated cost (USD)


    Metering events are emitted to logs and can be integrated with billing systems.


    ## Security


    * Tier-based task limits (500-100,000 tasks per request)

    * Tier-based payload limits (5-500 MB)

    * Input validation and sanitization

    * Tier-based rate limiting (100-10,000 requests per 60 seconds)'
  version: 0.4.0
tags:
- name: Authentication
paths:
  /api/v1/auth/callback:
    get:
      tags:
      - Authentication
      summary: Oauth Callback
      description: 'OAuth callback endpoint for External ID authentication.


        This endpoint receives the authorization code after successful login.

        For now, it just confirms the flow works. In production, this would:

        1. Validate the state parameter (CSRF protection)

        2. Exchange code for access/ID tokens

        3. Validate tokens

        4. Create/update user record

        5. Redirect to app with session cookie


        Args:

        code: Authorization code from External ID

        state: State parameter for CSRF validation


        Returns:

        Success message with code details'
      operationId: oauth_callback_api_v1_auth_callback_get
      parameters:
      - name: code
        in: query
        required: true
        schema:
          type: string
          title: Code
      - name: state
        in: query
        required: true
        schema:
          type: string
          title: State
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/auth/signup:
    post:
      tags:
      - Authentication
      summary: Signup User
      description: 'Sign up new user account only (no automatic API key creation).


        Flow:

        1. Validate OAuth token and extract email (required)

        2. Check if user already exists (by email from token)

        3. Create user record if new

        4. Return account status


        Track A Context:

        - Free tier: 1,000 tasks, Tier 1 APIs only

        - Starter tier: 2,000 tasks, Tier 1+2 APIs (requires payment)

        - Pro tier: 5,000 tasks, all APIs with async (requires payment)


        Security:

        - Email is extracted from validated OAuth token (not trusted from request body)

        - OAuth token is validated by get_current_user_email dependency'
      operationId: signup_user_api_v1_auth_signup_post
      parameters:
      - name: Authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/UserSignupRequest'
              - type: 'null'
              title: Request
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSignupResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/auth/keys:
    options:
      tags:
      - Authentication
      summary: Options Keys
      description: 'Handle CORS preflight for /keys endpoint.


        Explicitly handles OPTIONS to ensure CORS works in all browsers.

        CORSMiddleware will add the actual CORS headers.'
      operationId: options_keys_api_v1_auth_keys_options
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
                title: Response Options Keys Api V1 Auth Keys Options
    get:
      tags:
      - Authentication
      summary: List Api Keys
      description: 'List all API keys for current user.


        Returns key metadata only - full keys are never retrieved.'
      operationId: list_api_keys_api_v1_auth_keys_get
      parameters:
      - name: Authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/APIKeyListItem'
                title: Response List Api Keys Api V1 Auth Keys Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Authentication
      summary: Create Api Key
      description: 'Generate new API key for an existing user account.


        Users can have multiple API keys (for different environments, rotation, etc.).

        Account must be created first via /auth/signup.'
      operationId: create_api_key_api_v1_auth_keys_post
      parameters:
      - name: Authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAPIKeyRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIKeyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/auth/profile:
    get:
      tags:
      - Authentication
      summary: Get User Profile
      description: 'Get current authenticated user''s profile details.


        Used by frontend forms to prefill contact fields and reduce user friction.'
      operationId: get_user_profile_api_v1_auth_profile_get
      parameters:
      - name: Authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfileResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/auth/keys/{key_id}:
    options:
      tags:
      - Authentication
      summary: Options Revoke Key
      description: Handle CORS preflight for DELETE /keys/{key_id}.
      operationId: options_revoke_key_api_v1_auth_keys__key_id__options
      parameters:
      - name: key_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Key Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
                title: Response Options Revoke Key Api V1 Auth Keys  Key Id  Options
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Authentication
      summary: Revoke Api Key
      description: 'Revoke an API key.


        Soft delete - sets status to ''revoked'' instead of deleting record.

        Preserves audit trail and usage history.'
      operationId: revoke_api_key_api_v1_auth_keys__key_id__delete
      parameters:
      - name: key_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Key Id
      - name: Authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/auth/keys/{key_id}/label:
    patch:
      tags:
      - Authentication
      summary: Update Api Key Label
      description: 'Update the human-readable label for an API key.


        Stores the label in the existing `description` column.'
      operationId: update_api_key_label_api_v1_auth_keys__key_id__label_patch
      parameters:
      - name: key_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Key Id
      - name: Authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAPIKeyLabelRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  anyOf:
                  - type: string
                  - type: 'null'
                title: Response Update Api Key Label Api V1 Auth Keys  Key Id  Label Patch
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/auth/account:
    options:
      tags:
      - Authentication
      summary: Options Delete Account
      description: Handle CORS preflight for DELETE /account.
      operationId: options_delete_account_api_v1_auth_account_options
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
                title: Response Options Delete Account Api V1 Auth Account Options
    delete:
      tags:
      - Authentication
      summary: Delete Account
      description: 'Permanently delete the authenticated user''s account (GDPR Article 17).


        Cancels any active Stripe subscription first, then hard-deletes the user

        row. Cascade rules on the DB handle API keys, usage records, and

        subscriptions automatically.


        Security:

        - Requires valid OAuth token (re-authenticated identity)

        - Stripe subscription cancelled before DB deletion to avoid billing orphans'
      operationId: delete_account_api_v1_auth_account_delete
      parameters:
      - name: Authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    APITier:
      type: string
      enum:
      - demo
      - free
      - starter
      - professional
      - enterprise
      - government
      title: APITier
      description: API access tiers with associated limits.
    UserSignupRequest:
      properties:
        email:
          anyOf:
          - type: string
          - type: 'null'
          title: Email
          description: User email (ignored - using OAuth token)
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: User display name
        tier:
          $ref: '#/components/schemas/APITier'
          description: 'Initial API tier (default: free)'
          default: free
      type: object
      title: UserSignupRequest
      description: 'User signup request.


        For OAuth-authenticated signups, email is extracted from validated token.

        Request body is optional and used only for additional metadata.'
    UserSignupResponse:
      properties:
        user_id:
          type: string
          format: uuid
          title: User Id
        email:
          type: string
          title: Email
        account_created:
          type: boolean
          title: Account Created
      type: object
      required:
      - user_id
      - email
      - account_created
      title: UserSignupResponse
      description: Signup response without automatic API key creation.
    CreateAPIKeyRequest:
      properties:
        tier:
          $ref: '#/components/schemas/APITier'
          description: 'API tier (default: free)'
          default: free
      type: object
      title: CreateAPIKeyRequest
      description: Request to create a new API key.
    APIKeyResponse:
      properties:
        key_id:
          type: string
          format: uuid
          title: Key Id
        key_prefix:
          type: string
          title: Key Prefix
          description: First 16 chars of key (for identification)
        full_key:
          anyOf:
          - type: string
          - type: 'null'
          title: Full Key
          description: Full API key - ONLY returned on creation, store securely!
        tier:
          $ref: '#/components/schemas/APITier'
        status:
          type: string
          title: Status
        created_at:
          type: string
          format: date-time
          title: Created At
        last_used_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Last Used At
        total_requests:
          type: integer
          title: Total Requests
      type: object
      required:
      - key_id
      - key_prefix
      - tier
      - status
      - created_at
      - last_used_at
      - total_requests
      title: APIKeyResponse
      description: 'API key response.


        SECURITY: Full key is only returned once on creation.

        Subsequent requests show only the prefix (first 16 chars).'
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    APIKeyListItem:
      properties:
        key_id:
          type: string
          format: uuid
          title: Key Id
        key_prefix:
          type: string
          title: Key Prefix
        tier:
          $ref: '#/components/schemas/APITier'
        status:
          type: string
          title: Status
        created_at:
          type: string
          format: date-time
          title: Created At
        last_used_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Last Used At
        total_requests:
          type: integer
          title: Total Requests
        label:
          anyOf:
          - type: string
          - type: 'null'
          title: Label
          description: User-defined label for this key
      type: object
      required:
      - key_id
      - key_prefix
      - tier
      - status
      - created_at
      - last_used_at
      - total_requests
      title: APIKeyListItem
      description: API key list item (no full key).
    UpdateAPIKeyLabelRequest:
      properties:
        label:
          anyOf:
          - type: string
            maxLength: 100
          - type: 'null'
          title: Label
          description: Human-readable label (null to clear)
      type: object
      title: UpdateAPIKeyLabelRequest
      description: Request to update an API key's label.
    UserProfileResponse:
      properties:
        email:
          type: string
          title: Email
        display_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Display Name
        organization:
          anyOf:
          - type: string
          - type: 'null'
          title: Organization
      type: object
      required:
      - email
      title: UserProfileResponse
      description: Authenticated user profile details for UX prefill.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Required when API_KEY is configured.
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
          tokenUrl: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
          scopes:
            api.read: Read access to API
            api.write: Write access to API
      description: OAuth 2.0 / Azure AD authentication (recommended)
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT Bearer token from OAuth 2.0 / Azure AD