Narrative Sports Tasks API

The Tasks API from Narrative Sports — 8 operation(s) for tasks.

Operations 8

POST /v1/tasks/warmup Warm Up Instance
POST /v1/tasks/assign-task Assign Task
POST /v1/tasks/create-task Create Task
GET /v1/tasks/list-tasks List Tasks
GET /v1/tasks/{task_id}/status Get Task Status
GET /v1/tasks/{task_id}/info Get Task Info
POST /v1/tasks/{task_id}/kill Kill Task
POST /v1/tasks/{task_id}/extend-life Extend Task Life

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/usenarrative-tasks-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

usenarrative-tasks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Narrative Sports Health Tasks API
  version: 1.0.0
servers:
- url: https://api.narrative-sports.com
tags:
- name: Tasks
paths:
  /v1/tasks/warmup:
    post:
      tags:
      - Tasks
      summary: Warm Up Instance
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WarmupRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WarmupResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
      - HTTPBearer: []
      deprecated: true
  /v1/tasks/assign-task:
    post:
      tags:
      - Tasks
      summary: Assign Task
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignTaskRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignTaskResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
      - HTTPBearer: []
      deprecated: true
  /v1/tasks/create-task:
    post:
      tags:
      - Tasks
      summary: Create Task
      security:
      - HTTPBearer: []
      parameters:
      - name: Idempotency-Key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Idempotency-Key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaskRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTaskResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
  /v1/tasks/list-tasks:
    get:
      tags:
      - Tasks
      summary: List Tasks
      security:
      - HTTPBearer: []
      parameters:
      - name: state
        in: query
        required: false
        schema:
          enum:
          - active
          - all
          - queued
          - running
          - ready
          - stopping
          - stopped
          - error
          - failed
          - completed
          - cancelled
          type: string
          default: active
          title: State
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTasksResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
  /v1/tasks/{task_id}/status:
    get:
      tags:
      - Tasks
      summary: Get Task Status
      security:
      - HTTPBearer: []
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTaskStatusResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      deprecated: true
  /v1/tasks/{task_id}/info:
    get:
      tags:
      - Tasks
      summary: Get Task Info
      security:
      - HTTPBearer: []
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTaskInfoResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
  /v1/tasks/{task_id}/kill:
    post:
      tags:
      - Tasks
      summary: Kill Task
      security:
      - HTTPBearer: []
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Body_kill_task_v1_tasks__task_id__kill_post'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KillTaskResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
  /v1/tasks/{task_id}/extend-life:
    post:
      tags:
      - Tasks
      summary: Extend Task Life
      security:
      - HTTPBearer: []
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendLifeRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtendLifeResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
components:
  schemas:
    AssignTaskRequest:
      properties:
        narrative_task_id:
          type: string
          title: Narrative Task Id
        srt_zero_relative_smpte_timecode:
          type: string
          title: Srt Zero Relative Smpte Timecode
          default: 00:00:00:00
        framerate:
          anyOf:
          - type: string
          - type: 'null'
          title: Framerate
        webhook_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Webhook Url
        render_videos:
          anyOf:
          - $ref: '#/components/schemas/RenderVideoOptions'
          - type: 'null'
        team_names:
          anyOf:
          - $ref: '#/components/schemas/TeamNames'
          - type: 'null'
        otio:
          anyOf:
          - $ref: '#/components/schemas/OtioOutputConfig'
          - type: 'null'
        webhook_schema:
          anyOf:
          - type: string
            enum:
            - otio
            - none
          - type: 'null'
          title: Webhook Schema
        wh_schema_config:
          anyOf:
          - $ref: '#/components/schemas/OtioOutputConfig'
          - type: 'null'
      type: object
      required:
      - narrative_task_id
      title: AssignTaskRequest
    KillTaskResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        task_id:
          type: string
          title: Task Id
        status:
          type: string
          title: Status
        instance_terminated:
          type: boolean
          title: Instance Terminated
          default: false
      type: object
      required:
      - success
      - task_id
      - status
      title: KillTaskResponse
    ExtendLifeResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        task_id:
          type: string
          title: Task Id
        status:
          type: string
          title: Status
        max_life_hours:
          anyOf:
          - type: number
          - type: 'null'
          title: Max Life Hours
        previous_max_life_hours:
          anyOf:
          - type: number
          - type: 'null'
          title: Previous Max Life Hours
      type: object
      required:
      - success
      - task_id
      - status
      title: ExtendLifeResponse
    NarrativeSport:
      type: string
      enum:
      - soccer
      - mma
      - baseball
      title: NarrativeSport
    Body_kill_task_v1_tasks__task_id__kill_post:
      properties:
        wait_for_renders:
          type: boolean
          title: Wait For Renders
          default: true
      type: object
      title: Body_kill_task_v1_tasks__task_id__kill_post
    TaskInfo:
      properties:
        task_id:
          type: string
          title: Task Id
        project_id:
          anyOf:
          - type: integer
          - type: 'null'
          title: Project Id
        srt_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Srt Url
        task_payload:
          additionalProperties: true
          type: object
          title: Task Payload
          default: {}
        assigned:
          type: boolean
          title: Assigned
          default: false
        time_remaining_hours:
          anyOf:
          - type: number
          - type: 'null'
          title: Time Remaining Hours
        task_status:
          type: string
          title: Task Status
        failure_reason:
          anyOf:
          - type: string
          - type: 'null'
          title: Failure Reason
      type: object
      required:
      - task_id
      - task_status
      title: TaskInfo
    AssignTaskResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        status:
          type: string
          title: Status
        task_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Task Id
        srt_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Srt Url
      type: object
      required:
      - success
      - status
      title: AssignTaskResponse
    TaskResult:
      type: string
      enum:
      - success
      - failure
      title: TaskResult
    RenderVideoOptions:
      properties:
        render_video:
          type: string
          enum:
          - ffmpeg
          - none
          title: Render Video
        retention_seconds:
          type: integer
          title: Retention Seconds
          default: 86400
      type: object
      required:
      - render_video
      title: RenderVideoOptions
    OtioOutputConfig:
      properties:
        target_url:
          anyOf:
          - type: string
            minLength: 1
          - type: 'null'
          title: Target Url
        source_start_offset:
          type: integer
          title: Source Start Offset
          default: 0
        metadata:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Metadata
      type: object
      title: OtioOutputConfig
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ExtendLifeRequest:
      properties:
        max_life_hours:
          type: number
          maximum: 48
          exclusiveMinimum: 0
          title: Max Life Hours
      type: object
      required:
      - max_life_hours
      title: ExtendLifeRequest
    ListTasksResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        tasks:
          items:
            $ref: '#/components/schemas/TaskInfo'
          type: array
          title: Tasks
          default: []
      type: object
      required:
      - success
      title: ListTasksResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    GetTaskInfoResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        task:
          anyOf:
          - $ref: '#/components/schemas/TaskInfo'
          - type: 'null'
      type: object
      required:
      - success
      title: GetTaskInfoResponse
    WarmupResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        narrative_task_id:
          type: string
          title: Narrative Task Id
        error:
          anyOf:
          - type: string
          - type: 'null'
          title: Error
      type: object
      required:
      - success
      - narrative_task_id
      title: WarmupResponse
    CreateTaskResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        task_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Task Id
        srt_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Srt Url
      type: object
      required:
      - success
      title: CreateTaskResponse
    GetTaskStatusResponse:
      properties:
        success:
          $ref: '#/components/schemas/TaskResult'
        task_id:
          type: string
          title: Task Id
        ready:
          type: boolean
          title: Ready
          default: false
      type: object
      required:
      - success
      - task_id
      title: GetTaskStatusResponse
    CreateTaskRequest:
      properties:
        sport:
          $ref: '#/components/schemas/NarrativeSport'
        srt_zero_relative_smpte_timecode:
          type: string
          title: Srt Zero Relative Smpte Timecode
          default: 00:00:00:00
        framerate:
          anyOf:
          - type: string
          - type: 'null'
          title: Framerate
        webhook_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Webhook Url
        render_videos:
          anyOf:
          - $ref: '#/components/schemas/RenderVideoOptions'
          - type: 'null'
        team_names:
          anyOf:
          - $ref: '#/components/schemas/TeamNames'
          - type: 'null'
        otio:
          anyOf:
          - $ref: '#/components/schemas/OtioOutputConfig'
          - type: 'null'
        webhook_schema:
          type: string
          enum:
          - otio
          - none
          title: Webhook Schema
          default: none
        wh_schema_config:
          anyOf:
          - $ref: '#/components/schemas/OtioOutputConfig'
          - type: 'null'
        max_life_hours:
          type: number
          title: Max Life Hours
          default: 6
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
      type: object
      required:
      - sport
      title: CreateTaskRequest
    TeamNames:
      properties:
        home_team_name:
          type: string
          title: Home Team Name
        away_team_name:
          type: string
          title: Away Team Name
      type: object
      required:
      - home_team_name
      - away_team_name
      title: TeamNames
    WarmupRequest:
      properties:
        sport:
          $ref: '#/components/schemas/NarrativeSport'
        max_life_hours:
          type: number
          title: Max Life Hours
          default: 6
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
      type: object
      required:
      - sport
      title: WarmupRequest
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer