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

# Ingest a video from a public URL

> Submits a publicly accessible video URL for ingestion. Responds
immediately with `202 Accepted` and an `id`. Use that `id` to
check status, archive, republish, or delete.

Requires the `videos:write` scope.




## OpenAPI

````yaml /openapi.yaml post /v1/videos
openapi: 3.1.0
info:
  title: Eden Developer API
  version: 1.0.0
  description: |
    The Eden Developer API lets brands, leagues, teams, and rights-holding
    organizations distribute video content programmatically on Eden — the
    athlete creator platform.

    This is an invite-only API. Email support@myeden.me to request access.
  contact:
    name: Eden Developer Relations
    email: support@myeden.me
servers:
  - url: https://api.myeden.me
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Videos
    description: Create, read, archive, republish, and delete videos.
paths:
  /v1/videos:
    post:
      tags:
        - Videos
      summary: Ingest a video from a public URL
      description: |
        Submits a publicly accessible video URL for ingestion. Responds
        immediately with `202 Accepted` and an `id`. Use that `id` to
        check status, archive, republish, or delete.

        Requires the `videos:write` scope.
      operationId: createVideo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoIngestRequest'
            examples:
              nbaHighlight:
                summary: NBA highlight reel — sports content
                value:
                  source_url: >-
                    https://cdn.example.com/highlights/2026/lakers-vs-celtics.mp4
                  thumbnail_url: https://cdn.example.com/thumbs/lakers-vs-celtics.jpg
                  title: Lakers vs Celtics — Final 2 Minutes
                  tags:
                    - nba
                    - lakers
                    - celtics
                    - playoffs
                  sport: basketball
                  category: sports
                  language_code: en
                  summary: >
                    Lakers vs Celtics, final two minutes of regulation. LeBron's

                    stepback three with 18 seconds left ties the game; Tatum

                    answers with a buzzer-beating fadeaway to send it to
                    overtime.
              athleteInterview:
                summary: >-
                  Tennis player interview — entertainment content tagged with
                  sport
                value:
                  source_url: https://cdn.example.com/interviews/2026/serena-press.mp4
                  thumbnail_url: https://cdn.example.com/thumbs/serena-press.jpg
                  title: Serena talks comeback ahead of US Open
                  tags:
                    - tennis
                    - interview
                    - us-open
                  sport: tennis
                  category: entertainment
                  language_code: en
                  summary: |
                    Serena Williams sits down with Eden ahead of her US Open
                    return, discussing the off-season training regimen and
                    what she's most looking forward to in the bracket.
              minimal:
                summary: Minimal ingest, auto-generated thumbnail, no metadata
                value:
                  source_url: https://cdn.example.com/highlights/2026/buzzer-beater.mp4
                  title: Buzzer Beater
      responses:
        '202':
          description: Accepted — video queued for processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngestAcceptedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    VideoIngestRequest:
      type: object
      required:
        - source_url
        - title
      properties:
        source_url:
          type: string
          format: uri
          description: HTTPS URL to the source video file. mp4, mov, mkv, webm supported.
        thumbnail_url:
          type: string
          format: uri
          description: |
            Optional HTTPS URL to a custom thumbnail image. Recommended
            dimensions 1920x1080 (16:9). If omitted, a frame from the video
            will be auto-generated by Mux.
          example: https://cdn.example.com/thumbs/lakers-vs-celtics.jpg
        title:
          type: string
          maxLength: 200
        tags:
          type: array
          maxItems: 25
          items:
            type: string
            maxLength: 50
        sport:
          type: string
          example: basketball
          description: |
            Optional sport tag. Improves placement in sport-specific feeds
            and personalized recommendations. Invalid values return
            400 invalid_input. See the Ingesting Videos guide for the full
            list of supported sports.
          enum:
            - tennis
            - soccer
            - basketball
            - cricket
            - american_football
            - australian_football
            - baseball
            - lacrosse
            - badminton
            - equestrian
            - golf
            - boxing
            - mma
            - formula_one
            - ice_hockey
            - rugby
            - cycling
            - track_and_field
            - swimming
            - gymnastics
            - table_tennis
            - skiing
            - snowboarding
            - skateboarding
            - surfing
            - wrestling_pro
            - motocross
            - fencing
            - climbing
            - pickleball
        language_code:
          type: string
          example: en
          default: en
          description: |
            Source-audio language for Mux's caption generation. Auto-translated
            captions are produced in 18 additional languages regardless of this
            value. Format lowercase ISO 639-1 two-letter code only (e.g. 'en',
            'es', 'fr'). Country variants like 'en-US' are not accepted.
          pattern: ^[a-z]{2}$
        category:
          type: string
          description: |
            Content-type taxonomy. Independent of the sport field — sport
            describes what the content is ABOUT (tennis, basketball, etc.)
            while category describes what the content IS (entertainment,
            sports highlights, education, etc.). A tennis player's
            interview would be sport='tennis', category='entertainment'.
            Optional. Invalid values return 400 invalid_input.
          enum:
            - autos_vehicles
            - comedy
            - education
            - entertainment
            - film_animation
            - gaming
            - howto_style
            - music
            - news_politics
            - nonprofits
            - people_blogs
            - pets_animals
            - science_technology
            - sports
            - travel_events
        summary:
          type: string
          maxLength: 2000
          description: |
            Optional text description of the video. Persisted in both
            QuickBlox (powers in-app display) and Recombee (powers search
            and recommendation ranking). Use this for editorial blurbs,
            press release snippets, or game recaps. Plain text only; no
            HTML or markdown rendering.
          example: |
            Lakers vs Celtics, final two minutes of regulation. LeBron's
            stepback three with 18 seconds left ties the game; Tatum
            answers with a buzzer-beating fadeaway to send it to overtime.
    IngestAcceptedResponse:
      type: object
      properties:
        id:
          type: string
          example: vid_a7Kp9mNqR2vXyB4dH6jL8s
        status:
          type: string
          example: processing
        resource_url:
          type: string
          example: /v1/videos/vid_a7Kp9m...
        message:
          type: string
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            request_id:
              type: string
  responses:
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: API key lacks the required scope
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded
      headers:
        retry-after:
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: |
        Send your API key as a Bearer token:

            Authorization: Bearer eden_live_xxxxxxxxxxxxxxxxxxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

````