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

# import media

> Bring media into the library, by mode. url: hosted files, up to 20 a call, deduped by content, each reported as imported, duplicate or failed; caps 20MB image, 200MB video, 50MB audio, 25MB document. A download that has not finished in about 20 seconds continues in the background and is reported as queued with its job_id; get_jobs carries the item when it is ready. file: bytes in the call, base64, up to 6MB. link: a page the user opens to drop files from their own computer; folder and timeline say where they go, from puts the caller's name on the page; anyone in the workspace holding the link can use it; search_library finds the files once they have arrived. presign: one signed URL per file for the caller to PUT itself, signed for the exact size, good for an hour; confirm registers the uploads as items, up to 20 a call. local: through the desktop app only, absolute paths on that computer, added as items at once with nothing uploaded. A file on the user's computer is link (or local through the app); a file the caller holds is file or presign. Free.



## OpenAPI

````yaml /openapi.json post /tools/import_media
openapi: 3.1.0
info:
  title: Eversince API
  version: '1'
  description: >-
    Every Eversince tool as one POST call, plus the routes beside them: the tool
    list, account and keys, uploads, webhooks and models. The prose is at
    https://docs.eversince.ai.
servers:
  - url: https://eversince.ai/api/v1
security:
  - bearer: []
tags:
  - name: Discovery
    description: The tool list, the same on the MCP server, the REST API and the CLI.
  - name: Workspace
    description: Jobs, balances, settings, templates, skills and the overview.
  - name: Library
    description: >-
      Items, search, import, reading media, comments, boards, calendars, the
      brand kit and public links.
  - name: Timeline
    description: 'Video editing: timelines, clips, captions, sound, language and rendering.'
  - name: Canvas
    description: 'Still editing: canvases, slides, layers and rendering.'
  - name: Generation
    description: Image, video and audio generation, upscaling, cutouts and models.
  - name: Research
    description: 'What platforms publish: pulling and keeping posts.'
  - name: Account
    description: Balances, keys, workspaces and script sessions.
  - name: Uploads
    description: Files into the library by presigned upload or by URL.
  - name: Webhooks
    description: Job results posted to a URL as they complete.
  - name: Models
    description: Generation models and cost estimates.
paths:
  /tools/import_media:
    post:
      tags:
        - Library
      summary: import media
      description: >-
        Bring media into the library, by mode. url: hosted files, up to 20 a
        call, deduped by content, each reported as imported, duplicate or
        failed; caps 20MB image, 200MB video, 50MB audio, 25MB document. A
        download that has not finished in about 20 seconds continues in the
        background and is reported as queued with its job_id; get_jobs carries
        the item when it is ready. file: bytes in the call, base64, up to 6MB.
        link: a page the user opens to drop files from their own computer;
        folder and timeline say where they go, from puts the caller's name on
        the page; anyone in the workspace holding the link can use it;
        search_library finds the files once they have arrived. presign: one
        signed URL per file for the caller to PUT itself, signed for the exact
        size, good for an hour; confirm registers the uploads as items, up to 20
        a call. local: through the desktop app only, absolute paths on that
        computer, added as items at once with nothing uploaded. A file on the
        user's computer is link (or local through the app); a file the caller
        holds is file or presign. Free.
      operationId: import_media
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
        - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mode:
                  type: string
                  enum:
                    - url
                    - file
                    - link
                    - presign
                    - confirm
                    - local
                  description: >-
                    url (hosted media), file (bytes in the call), link (the user
                    has the file), presign (the caller PUTs up to 5 GB; larger
                    by link), confirm (after the presign PUT), local (paths on
                    the computer running the desktop app).
                items:
                  description: 'mode url: the media to save.'
                  minItems: 1
                  maxItems: 20
                  type: array
                  items:
                    type: object
                    properties:
                      url:
                        type: string
                        format: uri
                      file_name:
                        type: string
                      folder:
                        description: Folder path or id to land in.
                        type: string
                      description:
                        description: What this is. It makes the item searchable, free.
                        type: string
                      kind:
                        description: >-
                          Sound only: what it is, so it lands on the right lane.
                          A sound off our shelf is known; anything else with no
                          word lands as a voiceover.
                        type: string
                        enum:
                          - music
                          - sound_effect
                          - voiceover
                      made_with:
                        description: >-
                          For media generated elsewhere: the model or app that
                          made it.
                        type: string
                      prompt:
                        description: >-
                          For media generated elsewhere: its prompt, recorded as
                          provenance and used as the description, exactly like a
                          native generation.
                        type: string
                    required:
                      - url
                file:
                  description: 'mode file: the bytes, up to 6MB decoded.'
                  type: object
                  properties:
                    file_name:
                      type: string
                      minLength: 1
                      maxLength: 200
                      description: The name to keep it under, with its extension.
                    content_type:
                      type: string
                      minLength: 3
                      description: Its MIME type, e.g. image/png, audio/mpeg, text/vtt.
                    bytes:
                      type: string
                      minLength: 1
                      description: 'The file itself, base64-encoded, with no data: prefix.'
                    description:
                      description: What this is. It makes the item searchable, free.
                      type: string
                    made_with:
                      type: string
                    prompt:
                      type: string
                  required:
                    - file_name
                    - content_type
                    - bytes
                files:
                  description: >-
                    mode presign: one entry per file. The URL is signed for
                    exactly the size declared; a PUT of any other length is
                    refused.
                  minItems: 1
                  maxItems: 20
                  type: array
                  items:
                    type: object
                    properties:
                      file_name:
                        type: string
                      content_type:
                        type: string
                      size:
                        type: integer
                        exclusiveMinimum: 0
                    required:
                      - file_name
                      - content_type
                      - size
                upload_ids:
                  description: >-
                    mode confirm: the upload_id values presign returned, up to
                    20 a call.
                  minItems: 1
                  maxItems: 20
                  type: array
                  items:
                    type: string
                provenance:
                  description: 'mode confirm: per-upload knowledge, matched by upload_id.'
                  type: array
                  items:
                    type: object
                    properties:
                      upload_id:
                        type: string
                      file_name:
                        description: >-
                          The name to keep it under, the one presign was given;
                          without it the item is named after its storage key.
                        type: string
                        minLength: 1
                        maxLength: 200
                      description:
                        description: What this is. It makes the item searchable, free.
                        type: string
                      made_with:
                        description: >-
                          For media generated elsewhere: the model or app that
                          made it.
                        type: string
                      prompt:
                        description: >-
                          For media generated elsewhere: its prompt, recorded as
                          provenance and used as the description, exactly like a
                          native generation.
                        type: string
                    required:
                      - upload_id
                from:
                  description: >-
                    mode link: your name, as the user knows you ("Claude"). The
                    page tells them who to go back to once the files are up.
                  type: string
                  maxLength: 40
                timeline:
                  description: >-
                    mode link: timeline id; each file is also added to it as a
                    clip, after the last one.
                  type: string
                folder:
                  description: >-
                    Folder path or id to land in. Without one, files go to the
                    workspace's Uploads folder.
                  type: string
                context:
                  description: 'Optional: one sentence shown to the user beside this action.'
                  type: string
                  maxLength: 600
              required:
                - mode
      responses:
        '200':
          description: >-
            Done, or a job started for work that runs longer (follow it with
            get_jobs).
          content:
            application/json:
              schema:
                type: object
                required:
                  - ok
                  - data
                  - meta
                properties:
                  ok:
                    const: true
                  data:
                    type: object
                    additionalProperties: true
                  meta:
                    type: object
                    properties:
                      request_id:
                        type: string
                      cost:
                        $ref: '#/components/schemas/Cost'
                      cloud_processing:
                        $ref: '#/components/schemas/CloudProcessing'
                  media:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
        default:
          $ref: '#/components/responses/Error'
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      schema:
        type: string
      description: >-
        Retry a paid dispatch safely: the same key returns the job already
        dispatched instead of charging again.
    WorkspaceId:
      name: x-workspace-id
      in: header
      required: false
      schema:
        type: string
      description: The workspace this one call acts in, when it is not the key's own.
  schemas:
    Cost:
      type: object
      description: AI credits the call cost.
      additionalProperties: true
    CloudProcessing:
      type: object
      description: Cloud processing the call used, and what is left.
      properties:
        ran_on:
          const: cloud
        minutes:
          type: number
        queued_minutes:
          type: number
        left_minutes:
          type: number
        bought_minutes:
          type: number
        note:
          type: string
    Error:
      type: object
      required:
        - ok
        - error
      properties:
        ok:
          const: false
        error:
          type: object
          required:
            - code
            - message
            - retryable
          properties:
            code:
              type: string
            message:
              type: string
              description: What went wrong, in words to act on.
            retryable:
              type: boolean
            suggested_action:
              type: string
              description: The next step that works.
            cloud_processing:
              $ref: '#/components/schemas/CloudProcessing'
  responses:
    Error:
      description: The call was refused or failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: >-
        An API key (es_live_…) from Settings, under API keys, or an OAuth access
        token.

````