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

> ## Agent Instructions
> Flowsign is one word with a lowercase s.
> The REST API base URL is https://my.flowsign.app and every endpoint lives under /api/v1.
> When answering API questions, cite the HTTP method and endpoint path.
> API access needs the Enterprise plan and an API key with the API access permission.

# List packages

> Returns a paginated list of the packages the caller's package-visibility permissions let them see.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/packages
openapi: 3.0.3
info:
  title: Flowsign API
  version: 1.0.0
  description: >-
    Public v1 API for Flowsign. Every endpoint is authenticated with a Bearer
    API key (prefix `fsk_`). Errors use `{ error, details? }`; success responses
    wrap payload data as `{ data }`.


    An organisation is divided into workspaces. A key is issued for one
    workspace and acts there on every request (see `GET /api/v1/workspaces`);
    `X-Workspace-Id` is optional and may only name that workspace. Packages,
    templates, contacts and members are scoped to the key's workspace.
servers:
  - url: https://my.flowsign.app
    description: Production
security:
  - ApiKey: []
paths:
  /api/v1/packages:
    get:
      tags:
        - Packages
      summary: List packages
      description: >-
        Returns a paginated list of the packages the caller's package-visibility
        permissions let them see.
      operationId: getPackages
      parameters:
        - schema:
            anyOf:
              - $ref: '#/components/schemas/PackageStatus'
              - type: string
                enum:
                  - VIEWED
            description: >-
              Only packages in this status. DRAFT is not yet sent; SCHEDULED is
              queued to send at its scheduled time; IN_PROGRESS is out for
              signing; COMPLETED is signed by every signer; DECLINED is refused
              by a recipient; ON_HOLD is paused by the sender; VOID is ended
              early by the sender or at its expiry. VIEWED is not a stored
              status: it selects packages, whatever their status, that a
              recipient has opened.
            example: IN_PROGRESS
          required: false
          name: status
          in: query
        - schema:
            type: string
            minLength: 1
            description: Only packages whose title contains this text, ignoring case.
            example: Employment
          required: false
          name: search
          in: query
        - schema:
            type: integer
            minimum: 1
            default: 1
            description: The page to return, counting from 1.
            example: 1
          required: false
          name: page
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 25
            description: Packages per page, from 1 to 100.
            example: 25
          required: false
          name: pageSize
          in: query
        - schema:
            type: string
            description: >-
              The workspace the key was issued for, as returned by `GET
              /api/v1/workspaces`. Optional: omitting it acts in the key's
              workspace, and any other id is rejected with 401.
          required: false
          name: x-workspace-id
          in: header
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      packages:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The package's id.
                              example: cmg4v8q2k0001s7xh3b9d2f6a
                            title:
                              type: string
                              description: The package's title.
                              example: Employment agreement for Jane Ahu
                            status:
                              $ref: '#/components/schemas/PackageStatus'
                            description:
                              type: string
                              nullable: true
                              description: >-
                                The sender's description of the package, or
                                null.
                              example: Package with 1 document
                            recipients:
                              type: array
                              items:
                                allOf:
                                  - $ref: '#/components/schemas/PackageRecipient'
                                  - type: object
                                    properties:
                                      signed:
                                        type: boolean
                                        description: >-
                                          true once this recipient has completed
                                          their signing session.
                                        example: false
                                    required:
                                      - signed
                                description: A person the package goes to.
                            documentsCount:
                              type: integer
                              minimum: 0
                              description: How many documents are attached to the package.
                              example: 1
                            signingProgress:
                              type: object
                              nullable: true
                              properties:
                                completed:
                                  type: integer
                                  minimum: 0
                                  description: Signing sessions that have been completed.
                                  example: 1
                                total:
                                  type: integer
                                  minimum: 0
                                  description: >-
                                    Signing sessions on the package, one per
                                    recipient.
                                  example: 2
                              required:
                                - completed
                                - total
                              description: >-
                                Completed signing sessions against the total, or
                                null before the package has been sent and has no
                                sessions yet.
                            createdAt:
                              type: string
                              description: >-
                                When the package was created, as an ISO 8601
                                timestamp.
                              example: '2026-09-21T02:14:07.000Z'
                            updatedAt:
                              type: string
                              description: >-
                                When the package last changed, as an ISO 8601
                                timestamp.
                              example: '2026-09-24T21:40:12.000Z'
                            expiresAt:
                              type: string
                              nullable: true
                              description: >-
                                When the package stops accepting signatures, as
                                an ISO 8601 timestamp. Set from `expirationDays`
                                when the package is sent; null before that, or
                                when it has no expiry.
                              example: '2026-10-21T02:14:07.000Z'
                            completedAt:
                              type: string
                              nullable: true
                              description: >-
                                When the last signer finished, as an ISO 8601
                                timestamp, or null while the package is not
                                completed.
                              example: '2026-09-24T21:40:12.000Z'
                            templateId:
                              type: string
                              nullable: true
                              description: >-
                                The id of the template the package was launched
                                from, or null when it was built from scratch.
                              example: K7dQm2xPz9Lw
                            metadata:
                              type: object
                              additionalProperties:
                                type: string
                                description: The custom field's value.
                                example: CC-4410
                              description: >-
                                Custom field values keyed by custom field `key`.
                                `{}` when none are set.
                              example:
                                cost_centre: CC-4410
                                region: Auckland
                          required:
                            - id
                            - title
                            - status
                            - description
                            - recipients
                            - documentsCount
                            - signingProgress
                            - createdAt
                            - updatedAt
                            - expiresAt
                            - completedAt
                            - templateId
                            - metadata
                        description: The page of packages, most recently updated first.
                      totalCount:
                        type: integer
                        minimum: 0
                        description: Packages matching the filters across every page.
                        example: 42
                      page:
                        type: integer
                        minimum: 1
                        description: The page returned.
                        example: 1
                      pageSize:
                        type: integer
                        minimum: 1
                        description: The page size used.
                        example: 25
                    required:
                      - packages
                      - totalCount
                      - page
                      - pageSize
                required:
                  - data
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Caller's plan does not include this feature (publicApi / webhooks)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: API key present but caller lacks the required permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Request failed schema validation; details keyed by field
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded; see `Retry-After`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PackageStatus:
      type: string
      enum:
        - DRAFT
        - SCHEDULED
        - IN_PROGRESS
        - COMPLETED
        - DECLINED
        - ON_HOLD
        - VOID
      description: >-
        The package's status. DRAFT is not yet sent; SCHEDULED is queued to send
        at its scheduled time; IN_PROGRESS is out for signing; COMPLETED is
        signed by every signer; DECLINED is refused by a recipient; ON_HOLD is
        paused by the sender; VOID is ended early by the sender or at its
        expiry.
      example: IN_PROGRESS
    PackageRecipient:
      type: object
      properties:
        id:
          type: string
          description: >-
            The recipient's id. Fields are assigned to it as `recipientId`, and
            library documents map their roles onto it.
          example: cmg4v8q2k0002s7xh6k4m1p9c
        name:
          type: string
          description: The recipient's name.
          example: Jane Ahu
        email:
          type: string
          description: The recipient's email address.
          example: jane.ahu@example.co.nz
        action:
          type: string
          description: >-
            What the recipient does with the package: "Sign" for a signer,
            "View" for a viewer or CC recipient. Derived from `actionType`.
          example: Sign
        actionType:
          $ref: '#/components/schemas/ActionType'
        delivery:
          $ref: '#/components/schemas/RecipientDelivery'
        roleName:
          type: string
          nullable: true
          description: >-
            The template role the recipient fills, as named on the template at
            launch. Null for a package built from scratch.
          example: Employee
        delay:
          type: number
          description: >-
            Minutes to wait after this recipient's turn begins before their
            invitation is sent. Omitted when no delay is set.
          example: 60
      required:
        - id
        - name
        - email
        - action
        - actionType
        - delivery
        - roleName
      description: A person the package goes to.
    Error:
      type: object
      properties:
        error:
          type: string
          description: What went wrong, in plain words.
          example: 'Missing permission: canSendPackages'
        details:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Validation problems keyed by field path. Present only on 422
            responses.
          example:
            recipients.0.email:
              - Invalid email
      required:
        - error
    ActionType:
      type: string
      enum:
        - SIGNER
        - VIEWER
        - CC
      description: >-
        What the recipient does with the package. SIGNER completes fields and
        signs; VIEWER can open and read the package while it is out but has no
        fields; CC only receives the finished copy by email and never gets a
        signing session.
      example: SIGNER
    RecipientDelivery:
      type: string
      enum:
        - EMAIL
        - IN_PERSON
      description: >-
        How the recipient receives the package. EMAIL sends them an invitation;
        IN_PERSON sends no email, and a host opens the session and hands the
        device over.
      example: EMAIL
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: fsk_*

````