> ## 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.

# manage timelines

> List, create, duplicate, rename, configure, open and delete timelines, and keep one as a template. list returns a page of timelines, newest edit first, each with name, id, last edit, editor link, clip count, duration, forked_from where duplicated and parent_id where it is a clip of a project. Duplicating (create with from) is how variations are made. template keeps a finished piece as a shape: its picture clips become holes, get_templates lists it, and create with from_template and fill copies it with new files in the holes in one call. find_text finds wording in every timeline's titles, captions, graphics and chapters. open opens a timeline in the user's editor as a tab. delete is permanent; a project holding clips is refused unless whole_project is set, and its feed post goes with it. Free.



## OpenAPI

````yaml /openapi.json post /tools/manage_timelines
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/manage_timelines:
    post:
      tags:
        - Timeline
      summary: manage timelines
      description: >-
        List, create, duplicate, rename, configure, open and delete timelines,
        and keep one as a template. list returns a page of timelines, newest
        edit first, each with name, id, last edit, editor link, clip count,
        duration, forked_from where duplicated and parent_id where it is a clip
        of a project. Duplicating (create with from) is how variations are made.
        template keeps a finished piece as a shape: its picture clips become
        holes, get_templates lists it, and create with from_template and fill
        copies it with new files in the holes in one call. find_text finds
        wording in every timeline's titles, captions, graphics and chapters.
        open opens a timeline in the user's editor as a tab. delete is
        permanent; a project holding clips is refused unless whole_project is
        set, and its feed post goes with it. Free.
      operationId: manage_timelines
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
        - $ref: '#/components/parameters/WorkspaceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                list:
                  description: The workspace's timelines, newest edit first.
                  type: boolean
                find_text:
                  description: >-
                    Words to find in every timeline, whatever the case: an old
                    tagline, a misspelled name. Returns each timeline holding
                    them with every title, caption, graphic, chapter and note
                    that does.
                  type: string
                  minLength: 2
                  maxLength: 200
                create:
                  type: object
                  properties:
                    name:
                      description: >-
                        A short title for the finished piece, shown on its card:
                        "Kitchen reel, vertical", "Launch teaser". A clip of a
                        project left unnamed is numbered after its siblings.
                      type: string
                    from:
                      description: >-
                        Timeline id to duplicate (recorded as forked_from). A
                        project comes over whole: its sub-timelines are copied
                        with it and the copy's nested clips play the copies, so
                        the original is never touched by work on the duplicate.
                      type: string
                    parent:
                      description: >-
                        Make it a clip of this project (a timeline id): it sits
                        in that timeline's tab strip at its rate and size and
                        can be nested into it as one clip. With from too, a copy
                        of that timeline inside the project.
                      type: string
                    from_template:
                      description: >-
                        A template to copy: one off the shelf (get_templates
                        kind timeline; ids like issue-01) or a timeline this
                        workspace kept as one. The copy keeps the cut, music,
                        styling and transitions; its marked clips are holes for
                        fill. get_templates with the id lists the holes with
                        their lengths.
                      type: string
                    fill:
                      description: >-
                        With from_template: a file or a line per hole, chosen
                        for what each hole asks for. A hole nobody fills keeps
                        the template's own sample.
                      maxItems: 60
                      type: array
                      items:
                        type: object
                        properties:
                          ref:
                            description: >-
                              The library item going into a picture hole: an id
                              or a name.
                            type: string
                          text:
                            description: >-
                              The line a words hole takes, written for the
                              length the sample was cut for.
                            type: string
                            maxLength: 500
                          clip_id:
                            description: >-
                              Which hole it fills. Left off, each kind fills the
                              open holes of its own kind, in the order they
                              play.
                            type: string
                          at_seconds:
                            description: >-
                              Where in the file the hole starts. Left off, it
                              plays from the head. The hole's length never
                              changes.
                            type: number
                            minimum: 0
                template:
                  description: >-
                    Keep a timeline as a starting shape, or stop. Its pictures
                    and its titles become the holes a copy fills; clear the ones
                    that should stay, and say what belongs in each with
                    edit_timeline updateClip placeholder.
                  type: object
                  properties:
                    id:
                      type: string
                    is_template:
                      type: boolean
                    description:
                      description: >-
                        What the template is for, in a sentence: the job, the
                        look, the footage it wants. get_templates lists it and
                        searches it, so this is how another agent finds it. Left
                        off, whatever it says stays; null clears it.
                      anyOf:
                        - type: string
                          maxLength: 500
                        - type: 'null'
                  required:
                    - id
                    - is_template
                rename:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                  required:
                    - id
                    - name
                settings:
                  description: >-
                    Composition size in pixels (setAspectRatio on edit_timeline
                    is the shorthand for the standard sizes) and frame rate.
                  type: object
                  properties:
                    id:
                      type: string
                    width:
                      description: >-
                        Composition width in pixels. Odd sides are rounded down
                        by one: h264 refuses them.
                      type: integer
                      minimum: 2
                    height:
                      description: Composition height in pixels.
                      type: integer
                      minimum: 2
                    fps:
                      description: >-
                        Frame rate: 24, 25, 30, 50, 60. Changing it re-times the
                        whole document so every clip stays at its second; frame
                        numbers in later calls count at the new rate.
                      type: number
                  required:
                    - id
                open:
                  description: >-
                    Show this timeline in the user's editor as a tab, switched
                    to. The call cannot tell whether an editor is open to
                    receive it.
                  type: object
                  properties:
                    id:
                      type: string
                  required:
                    - id
                delete:
                  description: >-
                    Take a timeline away for good. There is no trash. A clip of
                    a project goes on its own; a project goes with its clips
                    only when whole_project says so, and its post leaves the
                    feed with it.
                  type: object
                  properties:
                    id:
                      type: string
                    whole_project:
                      description: >-
                        Delete a project together with every clip cut into it.
                        Off, a project that still holds clips is refused and
                        says how many.
                      type: boolean
                  required:
                    - id
                limit:
                  description: 'Listing only: timelines per page. Default 50.'
                  type: integer
                  minimum: 1
                  maximum: 100
                cursor:
                  description: >-
                    next_cursor from the answer before: the next page of the
                    list.
                  type: string
                context:
                  description: 'Optional: one sentence shown to the user beside this action.'
                  type: string
                  maxLength: 600
      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.

````