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

# Register Provider Asset

> Register a public HTTPS URL for the authenticated team. Only `bytedance` is supported. The call returns `asset_id` and `status` without waiting for moderation. When `status` is `active`, pass `asset://<asset_id>` in Seedance image and video fields. `url` may be a URL returned by the Media Files API. One request registers one asset.

Image and video files outside these limits are rejected by the provider.

- **Image:** jpeg, png, webp, tiff, gif, heic, or heif. Aspect ratio greater than 0.4 and less than 2.5. Width and height greater than 300 px and less than 6000 px. Smaller than 30 MB.
- **Video:** mp4 or mov. 480p, 720p, 1080p, or 4K. 2–30 seconds. Aspect ratio 0.4–2.5. Width and height 300–6000 px. Width × height 407,696–8,295,044. Up to 200 MB.



## OpenAPI

````yaml /file-api/provider-assets.json post /api/v1/media/providers/{provider}/assets
openapi: 3.1.0
info:
  title: Provider Assets API
  description: >-
    Register a public HTTPS URL as a ByteDance asset for the authenticated team.
    Authenticate with an API Key. This API is not billed. When status is active,
    pass `asset://<asset_id>` in Seedance image and video fields.
  version: 1.0.0
  contact:
    name: Modellix API Support
    email: support@modellix.ai
servers:
  - url: https://api.modellix.ai/
    description: Production server
security:
  - bearerAuth: []
paths:
  /api/v1/media/providers/{provider}/assets:
    post:
      summary: Register Provider Asset
      description: >-
        Register a public HTTPS URL for the authenticated team. Only `bytedance`
        is supported. The call returns `asset_id` and `status` without waiting
        for moderation. When `status` is `active`, pass `asset://<asset_id>` in
        Seedance image and video fields. `url` may be a URL returned by the
        Media Files API. One request registers one asset.


        Image and video files outside these limits are rejected by the provider.


        - **Image:** jpeg, png, webp, tiff, gif, heic, or heif. Aspect ratio
        greater than 0.4 and less than 2.5. Width and height greater than 300 px
        and less than 6000 px. Smaller than 30 MB.

        - **Video:** mp4 or mov. 480p, 720p, 1080p, or 4K. 2–30 seconds. Aspect
        ratio 0.4–2.5. Width and height 300–6000 px. Width × height
        407,696–8,295,044. Up to 200 MB.
      operationId: registerProviderAsset
      parameters:
        - name: provider
          in: path
          required: true
          description: Provider that owns the asset library. Only `bytedance` is supported.
          schema:
            type: string
            enum:
              - bytedance
            example: bytedance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterProviderAssetRequest'
            examples:
              image:
                summary: Register an image
                value:
                  url: https://cdn.example.com/hero.png
                  type: image
                  name: hero
      responses:
        '200':
          description: >-
            Asset registered. This example is `active`, which is when it can be
            referenced. The provider may also return `processing` or `failed`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterProviderAssetResponse'
              examples:
                active:
                  summary: Asset is active
                  value:
                    code: 0
                    message: success
                    data:
                      provider: bytedance
                      asset_id: asset-20260624152850-mftbb
                      type: image
                      name: hero
                      status: active
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    RegisterProviderAssetRequest:
      type: object
      required:
        - url
        - type
      properties:
        url:
          type: string
          format: uri
          maxLength: 2048
          description: One public HTTPS URL with no userinfo. Maximum 2048 characters.
          example: https://cdn.example.com/hero.png
        type:
          type: string
          enum:
            - image
            - video
            - audio
          description: Asset type. Case-sensitive.
        name:
          type: string
          maxLength: 64
          description: >-
            Optional display name. Maximum 64 characters. Blank is treated as
            omitted.
    RegisterProviderAssetResponse:
      type: object
      required:
        - code
        - message
        - data
      properties:
        code:
          type: integer
          example: 0
        message:
          type: string
          example: success
        data:
          $ref: '#/components/schemas/ProviderAsset'
    ProviderAsset:
      type: object
      required:
        - provider
        - asset_id
        - type
        - status
      properties:
        provider:
          type: string
          example: bytedance
        asset_id:
          type: string
          description: >-
            Reference this value as `asset://<asset_id>` in Seedance image and
            video fields after `status` is `active`.
          example: asset-20260624152850-mftbb
        type:
          type: string
          enum:
            - image
            - video
            - audio
        name:
          type: string
          description: Name supplied at registration, if any.
        status:
          type: string
          enum:
            - active
            - processing
            - failed
          example: active
          description: >-
            `active` means the asset can be referenced. `processing` means the
            provider is still handling it. `failed` means the provider rejected
            it. `failed` is still HTTP 200.
    ErrorResponse:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          description: Error code (matches HTTP status)
          example: 400
        message:
          type: string
          description: 'Error message in the form Category: detail'
          example: 'Missing required parameter: url is required'
  responses:
    BadRequest:
      description: >-
        Bad request — invalid JSON, missing or invalid fields, unsupported
        provider, or the provider rejected the URL
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missing_url:
              value:
                code: 400
                message: 'Missing required parameter: url is required'
            invalid_url:
              value:
                code: 400
                message: 'Invalid format: url must be an https URL without userinfo'
            invalid_type:
              value:
                code: 400
                message: 'Invalid parameters: type must be image, video, or audio'
            rejected:
              value:
                code: 400
                message: 'Invalid parameters: asset was rejected by the provider'
    Unauthorized:
      description: Unauthorized — invalid or missing API Key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 401
            message: 'Authentication failed: invalid team'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 500
            message: Internal server error
    ServiceUnavailable:
      description: >-
        The asset service is not activated for this account, or the provider is
        temporarily unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            not_activated:
              value:
                code: 503
                message: >-
                  Service unavailable: asset service is not activated for this
                  account
            unavailable:
              value:
                code: 503
                message: 'Service unavailable: asset provider is temporarily unavailable'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API Key authentication. Format: `Bearer YOUR_API_KEY`.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.