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

# Get a sheet

> Fetches a single sheet owned by the authenticated API user, looked up by sheet_id or slug (sheet_license_key).



## OpenAPI

````yaml GET /1.1/sheet/{sheet_license_key}
openapi: 3.0.0
info:
  title: CSVBox Sheets API Documentation
  description: >-
    CSVBox public API for creating sheets and defining column rules,
    destinations, settings, and JavaScript virtual columns, validation functions
    and data transforms.
  version: 1.2.0
servers:
  - url: https://api.csvbox.io/
    description: CSVBox Sheets API Server
security: []
tags:
  - name: Sheets
    description: Sheets
paths:
  /1.1/sheet/{sheet_license_key}:
    get:
      tags:
        - Sheets
      summary: Get Sheet
      description: >-
        Fetches a single sheet owned by the authenticated API user, looked up by
        sheet_id or slug (sheet_license_key).
      operationId: getSheet
      parameters:
        - name: sheet_license_key
          in: path
          description: Sheet's numeric sheet_id or its slug (sheet_license_key)
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/AcceptHeader'
      responses:
        '200':
          description: Sheet found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SheetGetResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Sheet Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - ApiKeyAuth: []
          ApiSecretKeyAuth: []
components:
  parameters:
    AcceptHeader:
      name: Accept
      in: header
      description: Must be application/json
      required: true
      schema:
        type: string
        example: application/json
  schemas:
    SheetGetResponse:
      properties:
        sheet_id:
          type: integer
          example: 123
        sheet_license_key:
          type: string
          example: a1b2c3d4
        title:
          type: string
          example: Customer Import
        created_via:
          type: string
        columns_count:
          type: integer
        import_count:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        sheet_columns:
          type: array
          items:
            $ref: '#/components/schemas/SheetColumn'
        virtual_columns:
          type: array
          items:
            properties:
              column_name:
                type: string
                example: full_name
              js_code:
                type: string
              active:
                type: boolean
                example: true
              dependencies:
                description: >-
                  Omitted when the stored dependency block was not produced by
                  this API (e.g. dashboard-authored).
                type: array
                items:
                  properties:
                    url:
                      type: string
                    integrity:
                      type: string
                    globals:
                      type: array
                      items:
                        type: string
                  type: object
            type: object
        validation_functions:
          type: array
          items:
            properties:
              function_name:
                type: string
                example: check_email
              js_code:
                type: string
              active:
                type: boolean
                example: true
              scope:
                type: string
                enum:
                  - column
                  - row
                example: column
              columns:
                type: array
                items:
                  type: string
              dynamic_columns:
                type: array
                items:
                  type: string
              dependencies:
                description: >-
                  Omitted when the stored dependency block was not produced by
                  this API (e.g. dashboard-authored).
                type: array
                items:
                  properties:
                    url:
                      type: string
                    integrity:
                      type: string
                    globals:
                      type: array
                      items:
                        type: string
                  type: object
            type: object
        data_transforms:
          type: array
          items:
            properties:
              transform_name:
                type: string
                example: uppercase_country
              js_code:
                type: string
              active:
                type: boolean
                example: true
              scope:
                type: string
                enum:
                  - column
                  - row
                example: column
              columns:
                type: array
                items:
                  type: string
              dynamic_columns:
                type: array
                items:
                  type: string
              run_at:
                type: string
                enum:
                  - before_validation
                  - after_validation
                example: before_validation
              dependencies:
                description: >-
                  Omitted when the stored dependency block was not produced by
                  this API (e.g. dashboard-authored).
                type: array
                items:
                  properties:
                    url:
                      type: string
                    integrity:
                      type: string
                    globals:
                      type: array
                      items:
                        type: string
                  type: object
            type: object
        destination:
          description: >-
            Only the configured destination's type is shown. One of `webhook`,
            `testapi`, `xano` or `none` (the values destinations[].type accepts
            on POST/PUT/PATCH, aliased back from their internal storage form)
            when the destination was configured through this API. A destination
            configured only through the dashboard — every type besides those
            four has no write-API surface, same as `display.theme` — reports
            that destination's own internal type name instead (e.g. `mysql`,
            `salesforce`, `airtable`) so the field stays meaningful; such a
            value cannot be round-tripped via PUT/PATCH. `none` when no
            destination is configured. No destination's credentials or settings
            (host, password, API key, tokens, mappings, etc.) ever appear here,
            for any destination.
          type: string
          example: webhook
        webhooks:
          description: >-
            Always exactly one entry, reflecting the import-completion webhook
            actually stored — same shape as the `webhooks` array accepted by
            POST/PUT/PATCH.
          type: array
          items:
            $ref: '#/components/schemas/Webhook'
        security_settings:
          $ref: '#/components/schemas/SecuritySettings'
        display:
          properties:
            theme:
              description: >-
                Only the importer theme and dialog size are shown, as the same
                labels the dashboard's own display-settings form uses. Custom
                theme config (colors, fonts, logo, custom CSS) never appears
                here, regardless of which theme is active. Theme has no
                write-API surface — these are read-only.
              properties:
                type:
                  type: string
                  enum:
                    - Light
                    - Light Custom
                    - Dark
                    - Dark Custom
                  example: Light
                importer_dialog_size:
                  type: string
                  enum:
                    - Large
                    - Medium
                  example: Large
              type: object
          type: object
        steps:
          description: >-
            Step settings under the same step and field names accepted by
            POST/PUT/PATCH's steps (file_upload, select_header, map_columns,
            verify_data, results) — no credentials. Coded/mapped values (e.g.
            copy_delimiter, split_confirm) are converted back to what a caller
            sends.
          type: object
        pdf_metadata_config:
          description: >-
            Same shape accepted by POST/PUT/PATCH. Empty array or absent field
            when unconfigured.
          type: array
          items:
            $ref: '#/components/schemas/PdfMetadataField'
      type: object
    ErrorResponse:
      properties:
        status:
          type: string
          example: Sheet Creation Failed
        errors:
          description: >-
            Keys are dotted paths into the request body (for example
            `virtual_columns.0.js_code`), each mapping to a list of problems
            found at that path. Every failing item is reported in one response,
            so a caller pushing ten functions learns about all ten in a single
            round trip. Requests rejected by the JavaScript gate always use this
            form, and point into that item's own js_code: `line` is 1-based,
            `column` is 0-based. `identifier`, `line` and `column` are present
            only when the violation has one. Codes: js_code_too_long,
            js_forbidden_sequence, js_syntax_error, js_disallowed_global,
            js_forbidden_construct, js_duplicate_name, js_name_conflicts_column,
            js_unknown_column, js_too_many_items, js_budget_exceeded,
            js_name_ambiguous, js_missing_name, js_unknown_field,
            js_invalid_field, js_invalid_item, dependency_url_invalid,
            dependency_host_not_allowed, column_name_ambiguous.
          type: object
          example:
            virtual_columns.0.js_code:
              - code: js_disallowed_global
                message: >-
                  Disallowed global `fetch`. Snippets may only reference the
                  `csvbox` argument, standard built-ins, and globals declared in
                  this item's dependencies.
                identifier: fetch
                line: 1
                column: 7
          additionalProperties:
            type: array
            items:
              type: object
              properties:
                code:
                  type: string
                  example: js_disallowed_global
                message:
                  type: string
                  example: >-
                    Disallowed global `fetch`. Snippets may only reference the
                    `csvbox` argument, standard built-ins, and globals declared
                    in this item's dependencies.
                identifier:
                  type: string
                  example: fetch
                line:
                  type: integer
                  example: 1
                column:
                  type: integer
                  example: 7
      type: object
    SheetColumn:
      required:
        - column_name
      properties:
        column_name:
          type: string
          example: email
        display_label:
          type: string
          example: Email
        info_hint:
          type: string
          example: Enter user email
        matching_keywords:
          type: string
          example: email,user_email
        type:
          type: string
          enum:
            - text
            - number
            - email
            - date
            - time
            - boolean
            - regex
            - ip
            - url
            - credit_card
            - phone_number
            - currency
            - list
            - dependent_list
            - dynamic_list
            - dependent_dynamic_list
            - multiselect_list
            - multiselect_dynamic_list
            - percentage
            - iana_timezone
            - upc
            - uuid
            - domain
            - currency_code
            - country_code_a2
            - country_code_a3
            - imei
            - ean
            - json
          example: text
        default_value:
          type: string
          example: ''
        required:
          type: boolean
          example: false
        read_only:
          type: boolean
          example: false
        position:
          type: integer
          minimum: 1
          example: 1
        validators:
          description: >-
            Validators depend on the column type. See examples below for each
            type.
          properties:
            min_length:
              description: '[text] Minimum character length'
              type: integer
              example: 2
            max_length:
              description: '[text] Maximum character length'
              type: integer
              example: 50
            min_value:
              description: '[number, percentage] Minimum numeric value'
              type: number
              example: 1
            max_value:
              description: '[number, percentage] Maximum numeric value'
              type: number
              example: 100
            output:
              description: '[percentage] Output format'
              type: string
              enum:
                - number
                - percent
              example: number
            format:
              description: >-
                [date] Date format e.g. YYYY-MM-DD | [time] Time format e.g.
                HH:mm:ss
              type: string
              example: YYYY-MM-DD
            custom:
              description: '[date, time] Custom format string, used when format is "custom"'
              type: string
              example: DD/MM/YYYY
            multiple:
              description: '[date, time] Accepted formats, used when format is "multiple"'
              type: array
              items:
                type: string
            expression:
              description: '[regex] Regular expression pattern'
              type: string
              example: ^\d{10}$
            error_message:
              description: '[regex] Custom error message'
              type: string
              example: Please enter a valid 10 digit phone number
            version:
              description: '[ip] IP version'
              type: string
              enum:
                - ipv4
                - ipv6
              example: ipv4
            country_code:
              description: '[phone_number] Country code e.g. IN, US'
              type: string
              example: IN
            symbol:
              description: '[currency] Currency symbol'
              type: string
              example: $
            require_symbol:
              description: '[currency] Whether symbol is required'
              type: boolean
              example: false
            allow_space_after_symbol:
              description: '[currency] Allow a space between the symbol and digits'
              type: boolean
              example: false
            symbol_after_digits:
              description: '[currency] Place the symbol after the digits instead of before'
              type: boolean
              example: false
            allow_negatives:
              description: '[currency] Allow negative values'
              type: boolean
              example: true
            parens_for_negatives:
              description: >-
                [currency] Show negative values in parentheses instead of a
                minus sign
              type: boolean
              example: false
            negative_sign_before_digits:
              description: '[currency] Place the negative sign before the digits'
              type: boolean
              example: true
            negative_sign_after_digits:
              description: '[currency] Place the negative sign after the digits'
              type: boolean
              example: false
            thousands_separator:
              description: '[currency] Thousands separator character'
              type: string
              example: ','
            decimal_separator:
              description: '[currency] Decimal separator character'
              type: string
              example: .
            allow_decimal:
              description: '[currency] Allow decimal values'
              type: boolean
              example: true
            require_decimal:
              description: '[currency] Require a decimal portion'
              type: boolean
              example: false
            digits_after_decimal:
              description: '[currency] Number of digits allowed after the decimal separator'
              type: integer
              example: 2
            allow_space_after_digits:
              description: '[currency] Allow a trailing space after the digits'
              type: boolean
              example: false
            values:
              description: >-
                [list] Array of ListItem objects (with dependents) |
                [multiselect_list] Array of strings
              oneOf:
                - type: array
                  items:
                    $ref: '#/components/schemas/ListItem'
                - type: array
                  items:
                    type: string
            case_sensitive:
              description: '[list, multiselect_list] Case-sensitive matching'
              type: boolean
              example: false
            trim_whitespace:
              description: >-
                [list, dynamic_list, multiselect_list, multiselect_dynamic_list]
                Trim whitespace before matching
              type: boolean
              example: false
            accept_list_values:
              description: >-
                [list] Accept values already present in the configured list
                without further validation
              type: boolean
              example: false
            primary_column:
              description: >-
                [dependent_list, dependent_dynamic_list] The column_name of the
                parent list column
              type: string
              example: col14
            source_url:
              description: '[dynamic_list] URL to fetch list options from'
              type: string
              example: https://example.com/api/list-options
            request_method:
              description: '[dynamic_list] HTTP method'
              type: string
              enum:
                - GET
                - POST
              example: GET
            request_headers:
              description: '[dynamic_list] Custom request headers'
              type: array
              items:
                $ref: '#/components/schemas/Header'
            custom_user_attributes:
              description: '[dynamic_list] Include custom user attributes in request'
              type: boolean
              example: true
            other_values:
              description: >-
                [dynamic_list, multiselect_list] Allow values outside predefined
                list
              type: boolean
              example: false
            delimiter:
              description: >-
                [multiselect_list, multiselect_dynamic_list] Delimiter for
                multiple values
              type: string
              example: ','
            dml_source_url:
              description: '[multiselect_dynamic_list] URL to fetch list options from'
              type: string
              example: https://example.com/api/multiselect-dynamic-options
            dml_request_method:
              description: '[multiselect_dynamic_list] HTTP method'
              type: string
              enum:
                - GET
                - POST
                - PATCH
              example: GET
            dml_request_headers:
              description: '[multiselect_dynamic_list] Custom request headers'
              type: array
              items:
                $ref: '#/components/schemas/Header'
            dml_other_values:
              description: '[multiselect_dynamic_list] Allow values outside predefined list'
              type: boolean
              example: false
          type: object
          example:
            col1 (text):
              min_length: 2
              max_length: 50
            col2 (number):
              min_value: 1
              max_value: 100
            col5 (date):
              format: YYYY-MM-DD
            col6 (time):
              format: HH:mm:ss
            col8 (regex):
              expression: ^\d{10}$
              error_message: Please enter a valid 10 digit phone number
            col9 (ip):
              version: ipv4
            col12 (phone_number):
              country_code: IN
            col13 (currency):
              symbol: $
              require_symbol: false
            col17 (dynamic_list):
              source_url: https://example.com/api/list-options
              request_method: GET
              request_headers: []
              custom_user_attributes: true
              other_values: false
            col18 (dependent_dynamic_list):
              primary_column: col17
            col20 (multiselect_list):
              values:
                - Red
                - Green
                - Blue
              delimiter: ','
              case_sensitive: false
              other_values: false
            col21 (multiselect_dynamic_list):
              dml_source_url: https://example.com/api/multiselect-options
              dml_request_method: GET
              dml_request_headers: []
              delimiter: ','
              dml_other_values: false
            col22 (percentage):
              min_value: 0
              max_value: 100
              output: percent
        metadata:
          description: >-
            Data transforms configured for this column, under the same
            metadata.transforms key POST/PUT/PATCH accept. An empty object when
            no transforms are configured.
          properties:
            transforms:
              type: object
          type: object
      type: object
    Webhook:
      properties:
        import_complete:
          $ref: '#/components/schemas/WebhookImportComplete'
      type: object
    SecuritySettings:
      properties:
        region:
          type: string
          enum:
            - us
            - eu
          example: us
        domains:
          type: array
          items:
            type: string
            example: example.com
        import_url_upload:
          type: boolean
          example: true
        s3_upload:
          type: boolean
          example: true
      type: object
    PdfMetadataField:
      description: >-
        One metadata field to extract from an uploaded PDF/DOCX. Max 20 per
        sheet.
      required:
        - name
        - source
      properties:
        name:
          description: >-
            Output key. For `source=native`/`document-kv` this also drives
            matching (see `source`); for `static`/`line-match` it is only the
            output key.
          type: string
          maxLength: 100
          example: Invoice Number
        source:
          description: >-
            Where the value comes from. `native`: `name` is matched
            case-insensitively against the uploaded PDF/DOCX's own document
            properties (e.g. Author, Title, Subject, Keywords, CreationDate) —
            `value` is ignored. `document-kv`: `name` must match, after
            whitespace/trailing-punctuation normalization, the exact
            (case-sensitive) label text of a key-value pair detected on the
            document (e.g. a form field literally labeled `Invoice Number`) —
            `value` is ignored. `static`: `value` is returned verbatim.
            `line-match`: `value` is a search term — the document's extracted
            text is scanned line by line and whatever follows that term is
            returned (falling back to the next line if nothing follows it on the
            same line).
          type: string
          enum:
            - native
            - document-kv
            - static
            - line-match
          example: document-kv
        value:
          description: >-
            Required when `source` is `static` (the literal to return) or
            `line-match` (the search term). Ignored for `native` and
            `document-kv`.
          type: string
          example: null
          nullable: true
      type: object
    ListItem:
      properties:
        value:
          type: string
          example: ind
        display_label:
          type: string
          example: India
        dependents:
          type: array
          items:
            $ref: '#/components/schemas/ListItemChild'
      type: object
    Header:
      required:
        - key
        - value
      properties:
        key:
          description: |-
            ---------------------------------------------------------
            HEADER OBJECT
            ---------------------------------------------------------
          type: string
          example: Content-Type
        value:
          type: string
          example: application/json
      type: object
    WebhookImportComplete:
      properties:
        url:
          type: string
          format: url
          example: https://example.com/webhook
        send_copy:
          description: Send a copy of imported data to client
          type: boolean
          example: false
        custom_headers:
          type: array
          items:
            $ref: '#/components/schemas/Header'
      type: object
    ListItemChild:
      properties:
        value:
          type: string
          example: mh
        display_label:
          type: string
          example: Maharashtra
        dependents:
          type: array
          items:
            $ref: '#/components/schemas/ListItemDependent'
      type: object
    ListItemDependent:
      properties:
        value:
          type: string
          example: mum
        display_label:
          type: string
          example: Mumbai
      type: object
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: x-csvbox-api-key
      in: header
    ApiSecretKeyAuth:
      type: apiKey
      name: x-csvbox-secret-api-key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.