OpusClip enterprise API

The enterprise API from OpusClip — 18 operation(s) for enterprise.

OpenAPI Specification

opusclip-enterprise-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Clip brand-templates enterprise API
  description: Clip API documentation
  version: '1.0'
  contact: {}
servers:
- url: https://api.opus.pro
  description: OpusClip Open API Production Server
tags:
- name: enterprise
paths:
  /api/brand-templates:
    get:
      operationId: BrandTemplateController_getTemplates
      parameters:
      - name: q
        required: true
        in: query
        schema:
          enum:
          - mine
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BrandTemplateRepresentation'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/clip-projects:
    post:
      operationId: ClipProjectController_createClipProject
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClipProjectCommand'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClipProjectRepresentation'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/clip-projects/{projectId}:
    get:
      operationId: ClipProjectController_getClipProjectDetail
      parameters:
      - name: projectId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClipProjectRepresentation'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/clip-projects/{projectId}/update-visibility:
    post:
      operationId: ClipProjectController_updateClipProjectVisibility
      parameters:
      - name: projectId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectVisibilityCommand'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClipProjectRepresentation'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/exportable-clips:
    get:
      operationId: ExportableClipController_queryExportableClips
      parameters:
      - name: x-opus-org-id
        required: false
        in: header
        description: Organization ID. Required for users with multiple organizations.
        schema:
          example: org_Example00000001
          type: string
      - name: q
        required: true
        in: query
        description: Query type
        schema:
          example: findByProjectId
          enum:
          - findByCollectionId
          - findByProjectId
          type: string
      - name: projectId
        required: false
        in: query
        description: Project ID, required when q=findByProjectId
        schema:
          example: P0000000demo
          type: string
      - name: collectionId
        required: false
        in: query
        description: Collection ID, required when q=findByCollectionId
        schema:
          example: xmAwhhFi0IJt
          type: string
      - name: pageNum
        required: false
        in: query
        description: Page Num, started with 1
        schema:
          example: 1
          type: number
      - name: pageSize
        required: false
        in: query
        description: Page Size
        schema:
          example: 10
          type: number
      responses:
        '200':
          description: Successfully retrieved exportable clips
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExportableClipRepresentation'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/collection-contents/delete-collection-contents:
    post:
      operationId: CollectionContentController_deleteCollectionContents
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCollectionContentCmd'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - properties:
                    data:
                      type: string
                      description: Show action execute status
                      nullable: false
                      example: success
      security:
      - bearer: []
      tags:
      - enterprise
  /api/collection-contents:
    post:
      operationId: CollectionContentController_createCollectionContent
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCollectionContentCmd'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/SuccessResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/CollectionContentDto'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/collections/{collectionId}:
    delete:
      operationId: CollectionController_delete
      parameters:
      - name: collectionId
        required: true
        in: path
        description: The unique collection ID of the collection that you want to delete.
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - properties:
                    data:
                      type: string
                      description: ID of collection deleted successfully
                      nullable: false
                      example: xmAwhhFi0IJt
      security:
      - bearer: []
      tags:
      - enterprise
  /api/collections:
    post:
      operationId: CollectionController_create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCollectionCmd'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/SuccessResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/CollectionDto'
        '402':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  errorName:
                    type: string
                    nullable: false
                    enum:
                    - QuotaExceed
                  errorMessage:
                    type: string
                    nullable: true
      security:
      - bearer: []
      tags:
      - enterprise
    get:
      operationId: CollectionController_list
      parameters:
      - name: q
        required: true
        in: query
        description: "**Query type**\n `q = mine` means list collections of your account.\n `q = findByContentId` means list collections contained the specific content(clip)."
        schema:
          example: mine
          enum:
          - findByContentId
          - mine
          type: string
      - name: contentId
        required: false
        in: query
        description: If specified, will only return collections that contain the clip with this contentID.
        schema:
          example: P0000000demo.CUexample2
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/SuccessResponse'
                - properties:
                    data:
                      properties:
                        list:
                          type: array
                          items:
                            $ref: '#/components/schemas/CollectionDto'
                          description: The list of collections
                        total:
                          type: number
                          nullable: false
                          description: Total number of valid items
                        next:
                          oneOf:
                          - type: string
                            nullable: true
                            description: Next page cursor
                          - type: number
                            nullable: true
                            description: Next page cursor
                        limit:
                          type: number
                          nullable: true
                          description: Limit number in this paged query
        '400':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  errorName:
                    type: string
                    nullable: false
                    enum:
                    - Bad Request
                  errorMessage:
                    type: string
                    nullable: true
      security:
      - bearer: []
      tags:
      - enterprise
  /api/collections/{collectionId}/export:
    post:
      operationId: CollectionController_export
      parameters:
      - name: collectionId
        required: true
        in: path
        description: The collectionID of the collection that you want to export
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmptyDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/SuccessResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/CollectionExportedDto'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/censor-jobs:
    post:
      operationId: CensorJobController_createCensorJob
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CensorJobRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CensorJobResponse'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/censor-jobs/{jobId}:
    get:
      operationId: CensorJobController_getCensorJob
      parameters:
      - name: jobId
        required: true
        in: path
        description: The jobId that you want to get the status of.
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CensorJobStatusResponse'
      security:
      - bearer: []
      tags:
      - enterprise
  /api/social-accounts:
    get:
      operationId: SocialAccountController_getSocialAccounts
      description: Retrieve the connected social destinations available for social posting.
      parameters:
      - name: q
        required: true
        in: query
        description: Query type
        schema:
          type: string
          enum:
          - mine
          example: mine
      responses:
        '200':
          description: Successfully retrieved social accounts
          content:
            application/json:
              example:
                data:
                - postAccountId: postAccountId_xxx1
                  subAccountId: subAccountId_xxx1
                  platform: FACEBOOK_PAGE
                  extUserId: extUserId_xxx
                  extUserName: Page Name
                  extUserPictureLink: https://example.com/avatar.png
                  extUserProfileLink: https://www.facebook.com/page_id
                - postAccountId: postAccountId_xxx2
                  platform: TIKTOK_BUSINESS
                  extUserId: extUserId_xxx
                  extUserName: tiktok_account
                  extUserPictureLink: https://example.com/avatar.jpeg
                  extUserProfileLink: https://www.tiktok.com/@username
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      required:
                      - postAccountId
                      - platform
                      - extUserId
                      - extUserName
                      properties:
                        postAccountId:
                          type: string
                          description: Unique ID of the connected social account record
                        subAccountId:
                          type: string
                          description: Sub-account ID for Facebook pages, Instagram business accounts, or LinkedIn person or org URNs
                        platform:
                          type: string
                          enum:
                          - YOUTUBE
                          - TIKTOK_BUSINESS
                          - FACEBOOK_PAGE
                          - INSTAGRAM_BUSINESS
                          - LINKEDIN
                          - TWITTER
                        extUserId:
                          type: string
                          description: Platform-side user or account ID
                        extUserName:
                          type: string
                          description: Display name from the third-party platform
                        extUserPictureLink:
                          type: string
                          description: Avatar image URL
                        extUserProfileLink:
                          type: string
                          description: Public channel or profile URL
      security:
      - bearer: []
      tags:
      - enterprise
  /api/social-copy-jobs:
    post:
      operationId: SocialCopyJobController_createSocialCopyJob
      description: Create an asynchronous social copy generation job for a specific clip and destination account.
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            example:
              projectId: P0000000demo
              clipId: CUexample1
              postAccountId: postAccountId_xxx1
              subAccountId: subAccountId_xxx1
              prompt: Write the caption in a playful, witty tone that uses humor to keep the audience engaged, while ending with a clear call to action.
              forceRegenerate: false
            schema:
              type: object
              required:
              - projectId
              - clipId
              - postAccountId
              - subAccountId
              properties:
                projectId:
                  type: string
                  description: Project ID
                clipId:
                  type: string
                  description: Bare clip ID (e.g. `CUexample1`). **Not** the composite `{projectId}.{clipId}` form returned as `id` by `GET /api/exportable-clips` — pass only the part after the dot.
                postAccountId:
                  type: string
                  description: Unique ID of the connected social account record
                subAccountId:
                  type: string
                  description: Sub-account ID used by Facebook pages, Instagram business accounts, or LinkedIn
                prompt:
                  type: string
                  description: Custom style or tone instruction for generation
                forceRegenerate:
                  type: boolean
                  description: Whether to bypass the cached result and regenerate
      responses:
        '201':
          description: Successfully created a social copy generation job
          content:
            application/json:
              example:
                data:
                  jobId: 96e3d68c-49ef-4c19-b3b6-595f9564537c
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    required:
                    - jobId
                    properties:
                      jobId:
                        type: string
                        description: Unique ID of the social copy generation job
      security:
      - bearer: []
      tags:
      - enterprise
  /api/social-copy-jobs/{jobId}:
    get:
      operationId: SocialCopyJobController_getSocialCopyJob
      description: Get the current status and generated copy for a social copy generation job.
      parameters:
      - name: jobId
        required: true
        in: path
        description: Unique ID of the social copy generation job
        schema:
          type: string
      responses:
        '200':
          description: Successfully retrieved the social copy generation result
          content:
            application/json:
              example:
                data:
                  jobId: 96e3d68c-49ef-4c19-b3b6-595f9564537c
                  status: COMPLETED
                  cached: false
                  title: My Daughter's 'Gift' at 3 AM
                  description: Thought I was losing my mind. Hear walking at 3 AM, check the house - everyone's asleep. Then I see it... my daughter's 'gift' moved. My wife has some explaining to do!
                  hashtags: '#ParentingFails #CreepyKids #MomLife #FunnyParenting #WhatDidISignUpFor'
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    required:
                    - jobId
                    - status
                    properties:
                      jobId:
                        type: string
                        description: Unique ID of the social copy generation job
                      status:
                        type: string
                        enum:
                        - RUNNING
                        - COMPLETED
                        - FAILED
                        description: Status of the social copy generation job
                      cached:
                        type: boolean
                        description: Whether the result came from cache
                      title:
                        type: string
                        description: Generated title
                      description:
                        type: string
                        description: Generated description
                      hashtags:
                        type: string
                        description: Generated hashtags
      security:
      - bearer: []
      tags:
      - enterprise
  /api/post-tasks:
    post:
      operationId: PostTaskController_createPostTask
      description: Publish a clip immediately to a connected social account. Each X (formerly Twitter) post costs 1 credit.
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            example:
              projectId: P0000000demo
              clipId: qU3iVMSO77
              postAccountId: postAccountId_xxx1
              subAccountId: subAccountId_xxx1
              postDetail:
                title: My Daughter's Creepy 3 AM Visitor
                custom:
                  description: 'Okay, so my daughter got a doll that can apparently move on its own. Last night at 3 AM, I heard footsteps, went to check, and this thing had moved! Totally thought I was losing my mind. Anyone else''s toys play tricks? #CreepyDoll #HauntedHouse #MomLife #ParentingFails #ScaryStories'
                  privacy: public
                mediaType: video
            schema:
              type: object
              required:
              - projectId
              - clipId
              - postAccountId
              - postDetail
              properties:
                projectId:
                  type: string
                  description: Project ID
                clipId:
                  type: string
                  description: Bare clip ID (e.g. `qU3iVMSO77`). **Not** the composite `{projectId}.{clipId}` form returned as `id` by `GET /api/exportable-clips` — pass only the part after the dot.
                postAccountId:
                  type: string
                  description: Unique ID of the connected social account record
                subAccountId:
                  type: string
                  description: Sub-account ID used by Facebook pages, Instagram business accounts, or LinkedIn
                postDetail:
                  type: object
                  required:
                  - title
                  properties:
                    title:
                      type: string
                      description: Title of the post
                    mediaType:
                      type: string
                      description: Media type. Supported values depend on the connected platform
                    custom:
                      type: object
                      properties:
                        description:
                          type: string
                          description: Description of the post, including hashtags
                        privacy:
                          type: string
                          enum:
                          - public
                          - private
                          - unlisted
                          description: Privacy setting for YouTube
      responses:
        '201':
          description: Successfully created a post task
          content:
            application/json:
              example:
                data:
                  postId: 17722461986440WKW-FACEBOOK_PAGE
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    required:
                    - postId
                    properties:
                      postId:
                        type: string
                        description: Unique ID of the post task
      security:
      - bearer: []
      tags:
      - enterprise
  /api/publish-schedules:
    post:
      operationId: PublishScheduleController_createPublishSchedule
      description: Schedule a clip to be published later. The `publishAt` value must be a future UTC ISO 8601 timestamp. Each X (formerly Twitter) post costs 1 credit.
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            example:
              projectId: P0000000demo
              clipId: qU3iVMSO77
              postAccountId: postAccountId_xxx1
              subAccountId: subAccountId_xxx1
              postDetail:
                title: My Daughter's Creepy 3 AM Visitor
                custom:
                  description: 'Okay, so my daughter got a doll that can apparently move on its own. Last night at 3 AM, I heard footsteps, went to check, and this thing had moved! Totally thought I was losing my mind. Anyone else''s toys play tricks? #CreepyDoll #HauntedHouse #MomLife #ParentingFails #ScaryStories'
                  privacy: public
                mediaType: video
              publishAt: '2026-03-01T16:00:00.000Z'
            schema:
              type: object
              required:
              - projectId
              - clipId
              - postAccountId
              - postDetail
              - publishAt
              properties:
                projectId:
                  type: string
                  description: Project ID
                clipId:
                  type: string
                  description: Bare clip ID (e.g. `qU3iVMSO77`). **Not** the composite `{projectId}.{clipId}` form returned as `id` by `GET /api/exportable-clips` — pass only the part after the dot.
                postAccountId:
                  type: string
                  description: Unique ID of the connected social account record
                subAccountId:
                  type: string
                  description: Sub-account ID used by Facebook pages, Instagram business accounts, or LinkedIn
                publishAt:
                  type: string
                  description: Future publish time in UTC ISO 8601 format
                postDetail:
                  type: object
                  required:
                  - title
                  properties:
                    title:
                      type: string
                      description: Title of the post
                    mediaType:
                      type: string
                      description: Media type. Supported values depend on the connected platform
                    custom:
                      type: object
                      properties:
                        description:
                          type: string
                          description: Description of the post, including hashtags
                        privacy:
                          type: string
                          enum:
                          - public
                          - private
                          - unlisted
                          description: Privacy setting for YouTube
      responses:
        '201':
          description: Successfully created a publish schedule
          content:
            application/json:
              example:
                data:
                  scheduleId: 1772177588135sHuZ-FACEBOOK_PAGE
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    required:
                    - scheduleId
                    properties:
                      scheduleId:
                        type: string
                        description: Unique ID of the created schedule task
      security:
      - bearer: []
      tags:
      - enterprise
  /api/publish-schedules/{scheduleId}:
    delete:
      operationId: PublishScheduleController_cancelPublishSchedule
      description: Cancel a scheduled publish task before its publish time.
      parameters:
      - name: scheduleId
        required: true
        in: path
        description: Unique ID of the schedule task to cancel
        schema:
          type: string
      responses:
        '200':
          description: Successfully canceled the publish schedule
          content:
            application/json:
              example:
                data: {}
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    description: Empty object returned on success
      security:
      - bearer: []
      tags:
      - enterprise
components:
  schemas:
    HighlightColorDto:
      type: object
      properties:
        primary:
          type: string
          description: Primary highlight color.
          example: '#ff0000'
        secondary:
          type: string
          description: Secondary highlight color.
          example: '#00ff00'
      required:
      - primary
      - secondary
    ShadowDto:
      type: object
      properties:
        enabled:
          type: boolean
          description: Indicates if the shadow is enabled.
          example: true
        color:
          type: string
          description: The color of the shadow.
          example: '#FFFFFFFF'
        x:
          type: number
          description: The x offset of the shadow.
          example: 2
        y:
          type: number
          description: The y offset of the shadow.
          example: 2
        blur:
          type: number
          description: The blur radius of the shadow.
          example: 16
        useWordHighlightColor:
          type: boolean
          description: Indicates if the word highlight color should be used for the shadow.
          example: false
      required:
      - enabled
      - color
      - x
      - y
      - blur
    CensorJobRequest:
      type: object
      properties:
        projectId:
          type: string
          description: The project id that you want to censor.
          example: P0000000demo
        clipId:
          type: string
          description: The clip id that you want to censor.
          example: lDIOHRzdac
        options:
          description: Some options for the censor job.
          example:
            beepSound: false
          allOf:
          - $ref: '#/components/schemas/CensorJobOptions'
      required:
      - projectId
      - clipId
    ImportPreferenceDto:
      type: object
      properties:
        sourceLang:
          type: string
          description: 'Select the language to detect the video''s spoken content, or leave it blank for automatic detection. Using ISO-639 language codes, examples: "en" for English, "de" for German, "fr" for French.'
          default: auto
          example: en
    UpdateProjectVisibilityCommand:
      type: object
      properties:
        visibility:
          type: string
          description: 'The visibility of the project. `DEFAULT`: Team members can open, edit and export the project. `PUBLIC`: Anyone can open, edit and export the project.'
          example: PUBLIC
          enum:
          - DEFAULT
          - PUBLIC
      required:
      - visibility
    ClipProjectRepresentation:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the project.
          example: P0000000demo
        userId:
          type: string
          description: The unique identifier of the user.
          example: google-oauth2|100000000000000000001
        orgId:
          type: string
          description: The unique identifier of the organization.
          example: org_Example00000001
        isDeleted:
          type: boolean
          description: Indicates whether the project is deleted.
          example: false
        isPurged:
          type: boolean
          description: Indicates whether the project is purged.
          example: false
        projectId:
          type: string
          description: The unique identifier of the project.
          example: P0000000demo
        sourcePlatform:
          type: string
          description: The platform from which the video is sourced.
          example: YOUTUBE
          enum:
          - YOUTUBE
          - UPLOADED
          - YTDLP_LINK
          - GDRIVE
          - ZOOM
          - STREAM_YARD
        sourceId:
          type: string
          description: The unique identifier for the video on the source platform.
          example: YT_tEXaoozFRes
        sourceUri:
          type: string
          description: The URI of the source video.
          example: null
        labels:
          description: Labels associated with the project.
          example: []
          type: array
          items:
            type: string
        productTier:
          type: string
          description: The product tier of the project.
          example: PRO
        stage:
          type: string
          description: The current stage of the project.
          example: QUEUED
          enum:
          - PENDING
          - QUEU

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opusclip/refs/heads/main/openapi/opusclip-enterprise-api-openapi.yml