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

# Get Form

> Retrieve details of a specific form by ID.

Retrieve complete details of a specific form including responses and attachments.

## Response Structure

The response includes complete form details with all nested data:

### Form Fields

* **id**: Form UUID
* **created\_at**: Form creation timestamp
* **status**: Current form status (draft, pending, completed, declined, processed)
* **archived**: Boolean indicating if archived
* **archived\_at**: Timestamp when archived (if applicable)
* **processed\_at**: Timestamp when marked as processed (if applicable)
* **active\_from**: When the form becomes active (if set)
* **active\_until**: When the form expires (if set)
* **links.fill**: Public form link for the contact
* **links.app**: Internal app link to view the form
* **user**: Contact information (email, name, phone, anonymous flag)
* **owner**: Form owner information (id, email) if applicable
* **flow**: Form template info with slug
* **data**: Pre-filled form data object
* **external\_args**: Your custom metadata object
* **options**: Form-specific options
* **responses**: Array of response objects with attachments and signatures
* **notifications**: Array of notification objects

### Notification Fields

Each notification object contains:

* **id**: Unique identifier for the notification (UUID)
* **status**: Current status of the notification (`pending`, `sent`, `failed`, `skipped`)
* **method**: Delivery method (`sms` or `email`)
* **at**: Timestamp when the notification was sent (ISO 8601 format)
* **to**: Recipient address (email address or phone number), can be null
* **from**: Sender address (email or system identifier), can be null
* **cc**: Carbon copy recipient(s), can be null
* **bcc**: Blind carbon copy recipient(s), can be null
* **system**: Boolean indicating if this is a system notification
* **locale**: Language/locale code (e.g., 'fr', 'en')
* **template**: Template name used for the notification (e.g., 'raw', 'request\_completed')
* **variables**: Object containing template variables used in the message, can be null
* **active**: Boolean indicating if the notification is active
* **error**: Error message if notification failed, can be null
* **message\_id**: External message identifier from the delivery provider, can be null
* **attachments**: Attached files, can be null
* **deleted\_at**: Timestamp when the notification was deleted, can be null

## Response Codes

| Code  | Description                             |
| ----- | --------------------------------------- |
| `200` | Success - Form details retrieved        |
| `401` | Unauthorized - Invalid access token     |
| `403` | Forbidden - No access to this resource  |
| `404` | Not Found - Form doesn't exist          |
| `429` | Too Many Requests - Rate limit exceeded |
| `500` | Server Error - Internal error           |

<Tip>
  The response includes all related data nested within the form object (responses, notifications, etc.), so you don't need additional API calls to access related resources.
</Tip>


## OpenAPI

````yaml GET /forms/{id}
openapi: 3.0.0
info:
  title: Penbox API
  version: '1.0'
  description: >-
    The Penbox API provides programmatic access to Penbox's form management,
    case management, and document processing capabilities. Authenticate using
    Bearer tokens created at https://app.penbox.io/workspace/settings/api
servers:
  - url: https://connect.penbox.io/v1
    description: Production
  - url: https://connect.aiboov.com/v1
    description: Staging
security:
  - BearerAuth: []
paths:
  /forms/{id}:
    parameters:
      - name: id
        in: path
        required: true
        description: Form UUID
        schema:
          type: string
          format: uuid
    get:
      summary: Get Form
      description: Retrieve details of a specific form by ID.
      operationId: get-form
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Form'
        '404':
          description: Form not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Form:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Form UUID
        created_at:
          type: string
          format: date-time
          description: Creation timestamp
        status:
          type: string
          enum:
            - draft
            - pending
            - completed
            - declined
            - processed
          description: Current form status
        archived:
          type: boolean
          description: Whether the form is archived
        archived_at:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when archived
        processed_at:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when marked as processed
        active_from:
          type: string
          format: date-time
          nullable: true
          description: When the form becomes active
        active_until:
          type: string
          format: date-time
          nullable: true
          description: When the form expires
        links:
          type: object
          properties:
            fill:
              type: string
              format: uri
              description: Public form link for the contact
            app:
              type: string
              format: uri
              description: Internal app link to view the form
          description: URLs for accessing the form
        user:
          type: object
          properties:
            anonymous:
              type: boolean
            email:
              type: string
            phone:
              type: string
            given_name:
              type: string
            family_name:
              type: string
            company_name:
              type: string
            internal_ref:
              type: string
          description: Contact information
        owner:
          type: object
          nullable: true
          properties:
            id:
              type: string
              format: uuid
            email:
              type: string
          description: Form owner information
        flow:
          type: object
          properties:
            slug:
              type: string
              description: Form template slug identifier
          description: Form template information
        data:
          type: object
          description: Pre-filled form data
        external_args:
          type: object
          nullable: true
          description: Custom metadata
        options:
          type: object
          nullable: true
          description: Form-specific options
        responses:
          type: array
          items:
            $ref: '#/components/schemas/ResponseFlat'
          description: Array of form responses
        notifications:
          type: array
          items:
            $ref: '#/components/schemas/Notification'
          description: Array of notifications sent for this form
        webhooks:
          type: object
          nullable: true
          description: Webhook URLs with event subscriptions
          additionalProperties:
            type: array
            items:
              type: string
    Error:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              status:
                type: string
              title:
                type: string
              detail:
                type: string
              source:
                type: object
                properties:
                  pointer:
                    type: string
    ResponseFlat:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Response UUID
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the response was completed
        updated_at:
          type: string
          format: date-time
          description: Last update timestamp
        data:
          type: object
          description: Form field values
        user:
          type: object
          properties:
            anonymous:
              type: boolean
            ip:
              type: string
            email:
              type: string
            phone:
              type: string
            locale:
              type: string
            given_name:
              type: string
            family_name:
              type: string
            user-agent:
              type: string
            accept-language:
              type: string
          description: User information
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/AttachmentFlat'
          description: Uploaded files
        signatures:
          type: object
          description: Signature data
        files:
          type: object
          description: Organized files by category
    Notification:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique notification identifier
        status:
          type: string
          enum:
            - pending
            - sent
            - failed
            - skipped
          description: Current status of the notification
        method:
          type: string
          enum:
            - sms
            - email
          description: Delivery method
        at:
          type: string
          format: date-time
          description: Timestamp when the notification was sent
        to:
          type: string
          nullable: true
          description: Recipient address (email or phone number)
        from:
          type: string
          nullable: true
          description: Sender address
        cc:
          type: string
          nullable: true
          description: Carbon copy recipient
        bcc:
          type: string
          nullable: true
          description: Blind carbon copy recipient
        system:
          type: boolean
          description: Whether this is a system notification
        locale:
          type: string
          description: Language/locale code (e.g., 'fr', 'en')
        template:
          type: string
          nullable: true
          description: Template name used for the notification
        variables:
          type: object
          nullable: true
          description: Template variables used in the message
        active:
          type: boolean
          description: Whether the notification is active
        error:
          type: string
          nullable: true
          description: Error message if notification failed
        message_id:
          type: string
          nullable: true
          description: External message identifier from delivery provider
        attachments:
          type: object
          nullable: true
          description: Attached files
        deleted_at:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the notification was deleted
      required:
        - id
        - status
        - method
        - at
    AttachmentFlat:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Attachment UUID
        name:
          type: string
          description: Original filename
        type:
          type: string
          description: MIME type
        scope:
          type: string
          nullable: true
          description: Attachment scope
        data:
          type: string
          nullable: true
          description: Base64-encoded file content
        metadata:
          type: object
          properties:
            size:
              type: integer
              description: File size in bytes
            width:
              type: integer
              nullable: true
            height:
              type: integer
              nullable: true
        uri:
          type: string
          format: uri
          description: Direct download URL
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: token
      description: >-
        API token (starts with pnbx_). Create at
        https://app.penbox.io/workspace/settings/api. Include as: Authorization:
        Bearer {token}

````