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

# Get package

> Returns the package with its recipients, documents, signing sessions, custom field values and newest 100 audit events.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/packages/{packageId}
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/{packageId}:
    get:
      tags:
        - Packages
      summary: Get package
      description: >-
        Returns the package with its recipients, documents, signing sessions,
        custom field values and newest 100 audit events.
      operationId: getPackagesByPackageId
      parameters:
        - schema:
            type: string
          required: true
          name: packageId
          in: path
        - 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:
                      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:
                          $ref: '#/components/schemas/PackageRecipient'
                        description: The recipients in signing order.
                      emailSubject:
                        type: string
                        nullable: true
                        description: >-
                          The subject line of the invitation email, or null for
                          the default.
                        example: Please sign your employment agreement
                      emailMessage:
                        type: string
                        nullable: true
                        description: The sender's message in the invitation email, or null.
                        example: >-
                          Kia ora Jane, please review and sign before your start
                          date. Tom
                      signingMode:
                        allOf:
                          - $ref: '#/components/schemas/SigningMode'
                          - description: >-
                              How recipients are walked through signing.
                              PARALLEL invites every recipient at once;
                              SEQUENTIAL invites one at a time in `order`;
                              WORKFLOW follows the template's workflow, asking
                              recipients its questions as they open the package.
                      tags:
                        type: array
                        items:
                          type: string
                        description: >-
                          The organisation tags on the package, in alphabetical
                          order.
                        example:
                          - HR
                          - Onboarding
                      scheduledAt:
                        type: string
                        nullable: true
                        description: >-
                          When a SCHEDULED package sends itself, as an ISO 8601
                          timestamp, or null when it is not scheduled.
                        example: '2026-10-01T20:00:00.000Z'
                      externalId:
                        type: string
                        nullable: true
                        description: >-
                          The caller's own identifier the package was created
                          with, or null.
                        example: crm-deal-48213
                      documents:
                        type: array
                        items:
                          $ref: '#/components/schemas/Document'
                        description: The attached documents in order.
                      recipientSessions:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The signing session's id.
                              example: cmg4v9d3m0005s7xh2t7y4u8w
                            recipientId:
                              type: string
                              description: >-
                                The id of the recipient the session belongs to,
                                as listed on `recipients`.
                              example: cmg4v8q2k0002s7xh6k4m1p9c
                            recipientName:
                              type: string
                              nullable: true
                              description: The recipient's name, or null.
                              example: Jane Ahu
                            recipientEmail:
                              type: string
                              nullable: true
                              description: The recipient's email address, or null.
                              example: jane.ahu@example.co.nz
                            status:
                              $ref: '#/components/schemas/RecipientSessionStatus'
                            order:
                              type: integer
                              description: >-
                                The recipient's position in the signing order,
                                counting from 0.
                              example: 0
                            sentAt:
                              type: string
                              nullable: true
                              description: >-
                                When the invitation was sent, as an ISO 8601
                                timestamp, or null.
                              example: '2026-09-21T02:15:00.000Z'
                            openedAt:
                              type: string
                              nullable: true
                              description: >-
                                When the recipient first opened the package, as
                                an ISO 8601 timestamp, or null.
                              example: '2026-09-21T19:02:44.000Z'
                            completedAt:
                              type: string
                              nullable: true
                              description: >-
                                When the recipient finished signing, as an ISO
                                8601 timestamp, or null.
                              example: '2026-09-21T19:11:30.000Z'
                            declinedAt:
                              type: string
                              nullable: true
                              description: >-
                                When the recipient declined, as an ISO 8601
                                timestamp, or null.
                              example: null
                            declineReason:
                              type: string
                              nullable: true
                              description: >-
                                The reason the recipient gave for declining, or
                                null.
                              example: null
                          required:
                            - id
                            - recipientId
                            - recipientName
                            - recipientEmail
                            - status
                            - order
                            - sentAt
                            - openedAt
                            - completedAt
                            - declinedAt
                            - declineReason
                        description: >-
                          One signing session per recipient, created when the
                          package is sent. Empty on a draft.
                      auditEvents:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The event's id.
                              example: cmg4v9d3m0009s7xhj4l6n2q0
                            eventType:
                              type: string
                              description: >-
                                The event's action name, such as package_sent,
                                document_uploaded or package_voided.
                              example: package_sent
                            actorEmail:
                              type: string
                              nullable: true
                              description: >-
                                The email of the member or recipient who caused
                                the event, or null for system events.
                              example: tom.rangi@studiophoenix.co.nz
                            recipientSessionId:
                              type: string
                              nullable: true
                              description: >-
                                The signing session the event belongs to, or
                                null when it concerns the package as a whole.
                              example: null
                            metadata:
                              nullable: true
                              description: >-
                                Event-specific details as a JSON object, or null
                                when the event carries none.
                              example:
                                recipientCount: 2
                            createdAt:
                              type: string
                              description: >-
                                When the event happened, as an ISO 8601
                                timestamp.
                              example: '2026-09-21T02:15:00.000Z'
                          required:
                            - id
                            - eventType
                            - actorEmail
                            - recipientSessionId
                            - createdAt
                        description: >-
                          The newest 100 audit events, newest first. Page
                          through every event with `GET
                          /api/v1/packages/:packageId/audit-events`.
                      auditEventCount:
                        type: integer
                        minimum: 0
                        description: The total number of audit events on the package.
                        example: 7
                      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'
                      reminderIntervalDays:
                        type: integer
                        nullable: true
                        minimum: 1
                        description: >-
                          Days between automatic reminders to each recipient who
                          hasn't finished, counted from their invitation. Null
                          or absent sends none.
                        example: 3
                      expirationDays:
                        type: integer
                        nullable: true
                        minimum: 1
                        description: >-
                          Days the package stays open for signing, counted from
                          when it is sent. Null or absent means it never
                          expires.
                        example: 30
                      expiryWarningDays:
                        type: integer
                        nullable: true
                        minimum: 1
                        description: >-
                          Days before expiry at which recipients who haven't
                          finished are warned. MUST be fewer than
                          `expirationDays`.
                        example: 5
                      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'
                      voidReason:
                        type: string
                        nullable: true
                        description: The reason given when the package was voided, or null.
                        example: null
                      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
                      - emailSubject
                      - emailMessage
                      - signingMode
                      - tags
                      - scheduledAt
                      - externalId
                      - documents
                      - recipientSessions
                      - auditEvents
                      - auditEventCount
                      - createdAt
                      - updatedAt
                      - expiresAt
                      - reminderIntervalDays
                      - expirationDays
                      - expiryWarningDays
                      - completedAt
                      - voidReason
                      - templateId
                      - metadata
                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'
        '404':
          description: No package with that id that the caller can see
          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.
    SigningMode:
      type: string
      enum:
        - PARALLEL
        - SEQUENTIAL
        - WORKFLOW
      description: >-
        PARALLEL (the default) invites everyone at once; SEQUENTIAL invites one
        recipient at a time in the order given. WORKFLOW is refused here, since
        a workflow is drawn in the app or comes from a template.
      example: SEQUENTIAL
    Document:
      type: object
      properties:
        id:
          type: string
          description: The document's id.
          example: cmg4v8q2k0003s7xhq1w8n5r7
        title:
          type: string
          description: 'The document''s title: its file name without the extension.'
          example: Employment agreement
        pageCount:
          type: integer
          description: How many pages the document has.
          example: 4
      required:
        - id
        - title
        - pageCount
      description: A document attached to a package or template.
    RecipientSessionStatus:
      type: string
      enum:
        - WAITING
        - ACTIVE
        - COMPLETED
        - DECLINED
        - CANCELLED
      description: >-
        A signing session's status. WAITING is not yet invited, because an
        earlier recipient's turn or this recipient's delay has not come; ACTIVE
        is invited and able to sign; COMPLETED is finished; DECLINED is refused
        by the recipient; CANCELLED is ended without finishing because the
        package ended first.
      example: ACTIVE
    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_*

````