Sieve Functions API

Look up metadata for a public or custom function by owner and name (GET /functions/{owner_name}/{function_name}), including the latest version, its inputs, outputs, and runtime configuration.

OpenAPI Specification

sieve-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Sieve API
  description: >-
    REST API for the Sieve AI media-processing platform. Sieve exposes prebuilt
    public functions and apps (transcription, dubbing, lip-sync, segmentation,
    object tracking, background removal, and more) as well as custom user
    functions, all invoked asynchronously as jobs. Submit a job with the Push
    endpoint, then poll the Jobs endpoints for status and outputs or receive
    results via webhooks.
  termsOfService: https://www.sievedata.com/terms
  contact:
    name: Sieve Support
    url: https://docs.sievedata.com
  version: 'v2'
servers:
  - url: https://mango.sievedata.com/v2
    description: Sieve API v2
security:
  - ApiKeyAuth: []
tags:
  - name: Jobs
    description: Push, retrieve, list, and cancel asynchronous function jobs.
  - name: Functions
    description: Look up metadata for public and custom functions.
paths:
  /push:
    post:
      operationId: pushJob
      tags:
        - Jobs
      summary: Push New Job
      description: >-
        Creates a new job by running a function. Specify the function with
        `function` (author/name[:version]) or `id` - one or the other, not both -
        and pass the function's parameters in `inputs`. Optionally register
        `webhooks` to be notified on job events.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PushRequest'
            example:
              function: sieve/dubbing
              inputs:
                file:
                  url: https://storage.googleapis.com/sieve-public-data/assets/dub.m4a
                target_language: spanish
              webhooks:
                - type: job.complete
                  url: https://example.com/sieve-webhook
      responses:
        '200':
          description: The job was accepted and queued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PushResponse'
        '401':
          description: Missing or invalid API key.
        '422':
          description: Validation error in the request body.
  /jobs:
    get:
      operationId: listJobs
      tags:
        - Jobs
      summary: List Jobs
      description: List all jobs in your organization, optionally filtered by status.
      parameters:
        - name: limit
          in: query
          description: The maximum number of jobs to show.
          required: false
          schema:
            type: integer
            default: 500
        - name: offset
          in: query
          description: Exclude the first N jobs.
          required: false
          schema:
            type: integer
            default: 0
        - name: status
          in: query
          description: >-
            Filter by status. One of queued, processing, error, finished,
            cancelled. Leave empty to get all statuses.
          required: false
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: A page of jobs.
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Job'
                  next_offset:
                    type: integer
                    default: -1
        '401':
          description: Missing or invalid API key.
        '422':
          description: Validation error.
  /jobs/{job_id}:
    get:
      operationId: getJob
      tags:
        - Jobs
      summary: Get Job
      description: Get information about a specific job by id, including status and outputs.
      parameters:
        - name: job_id
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
          example: 43d7add5-61cf-44ad-aac8-c5d14c642bb4
        - name: offset
          in: query
          description: Exclude the first N outputs.
          required: false
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: The job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
        '400':
          description: Bad request.
        '401':
          description: Missing or invalid API key.
        '404':
          description: Job not found.
        '422':
          description: Validation error.
    delete:
      operationId: cancelJob
      tags:
        - Jobs
      summary: Cancel Job
      description: Cancels a running job.
      parameters:
        - name: job_id
          in: path
          description: The ID of the job.
          required: true
          schema:
            type: string
          example: 43d7add5-61cf-44ad-aac8-c5d14c642bb4
      responses:
        '200':
          description: The job was cancelled.
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                properties:
                  message:
                    type: string
                    description: Description of the event.
        '400':
          description: Bad request.
        '401':
          description: Missing or invalid API key.
        '404':
          description: Job not found.
        '422':
          description: Validation error.
  /functions/{owner_name}/{function_name}:
    get:
      operationId: getFunction
      tags:
        - Functions
      summary: Get Function
      description: Get information about the given function, including its latest version.
      parameters:
        - name: owner_name
          in: path
          description: The owner of the function.
          required: true
          schema:
            type: string
          example: sieve
        - name: function_name
          in: path
          description: The name of the function.
          required: true
          schema:
            type: string
          example: dubbing
      responses:
        '200':
          description: The function metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Function'
        '401':
          description: Missing or invalid API key.
        '404':
          description: Function not found.
        '422':
          description: Validation error.
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: The Sieve API key to authenticate with.
  schemas:
    PushRequest:
      type: object
      required:
        - inputs
      properties:
        function:
          type: string
          nullable: true
          description: >-
            The name of the function, in the format author/name[:version].
            Either function or id may be specified, but not both.
        id:
          type: string
          nullable: true
          description: The ID of the function to be called.
        inputs:
          type: object
          description: The inputs to the job. Fields vary by function.
          additionalProperties: true
        webhooks:
          type: array
          nullable: true
          description: Webhooks to notify on job events.
          items:
            $ref: '#/components/schemas/Webhook'
        env:
          type: object
          nullable: true
          description: Environment variables for the given job.
          additionalProperties: true
    Webhook:
      type: object
      required:
        - type
        - url
      properties:
        type:
          type: string
          description: The webhook event type.
          enum:
            - job.start
            - job.complete
            - job.complete.no_output
            - job.new_output
        url:
          type: string
          description: The URL Sieve will POST the notification to.
    PushResponse:
      type: object
      required:
        - id
        - run_id
        - stream_output
        - status
        - organization_id
        - model_id
        - workflow_id
      properties:
        id:
          type: string
          description: The ID of the job.
        run_id:
          type: string
          description: Internal metadata.
        stream_output:
          type: boolean
          description: Whether the output will be streamed.
        status:
          type: string
          description: The status of the job.
          enum:
            - queued
            - processing
            - error
            - finished
            - cancelled
        organization_id:
          type: string
          description: The ID of the organization.
        model_id:
          type: string
          description: The ID of the model.
        workflow_id:
          type: string
          nullable: true
          description: The ID of the workflow.
    Job:
      type: object
      required:
        - id
        - function_id
        - organization_id
        - status
      properties:
        id:
          type: string
          description: The id of the job.
        function_id:
          type: string
          description: The id of the function that the job belongs to.
        organization_id:
          type: string
          description: The ID of the organization that submitted the function.
        function:
          type: object
          nullable: true
          description: The function that the job belongs to.
          additionalProperties: true
        status:
          type: string
          description: The status of the job.
          enum:
            - queued
            - processing
            - error
            - finished
            - cancelled
        created_at:
          type: string
          format: date-time
          nullable: true
          description: The UTC time the job was created.
        started_at:
          type: string
          format: date-time
          nullable: true
          description: The UTC time the job started processing.
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: The UTC time the job was completed.
        error:
          type: string
          nullable: true
          description: The error the job ran into. Empty string if there is no error.
        visibility:
          type: string
          description: '"public" or "private".'
        run_id:
          type: string
          nullable: true
          description: The run_id of the job.
        inputs:
          type: object
          description: The inputs the job was submitted with.
          additionalProperties: true
        outputs:
          type: array
          description: The outputs produced by the job.
          items:
            type: object
            additionalProperties: true
    Function:
      type: object
      required:
        - name
        - owner_name
      properties:
        name:
          type: string
          description: The name of the function.
        owner_name:
          type: string
          description: The owner of the function.
        latest_version:
          type: object
          description: The latest version of the function and its configuration.
          additionalProperties: true