For the complete documentation index, see llms.txt. This page is also available as Markdown.

Sheet API

List Sheets

get

Returns a paginated list of sheets owned by the authenticated API user.

Authorizations
x-csvbox-api-keystringRequired
x-csvbox-secret-api-keystringRequired
Query parameters
pageinteger · min: 1Optional

Page number (1-indexed). Defaults to 1.

per_pageinteger · min: 1 · max: 100Optional

Sheets per page. Defaults to 20, clamped to a maximum of 100.

Header parameters
AcceptstringRequired

Must be application/json

Example: application/json
Responses
200

Paginated list of sheets

application/json
get/1.1/sheet
GET /1.1/sheet HTTP/1.1
Host: api.csvbox.io/
x-csvbox-api-key: YOUR_API_KEY
x-csvbox-secret-api-key: YOUR_API_KEY
Accept: application/json
{
  "data": [
    {
      "sheet_id": 123,
      "sheet_license_key": "a1b2c3d4",
      "title": "Customer Import",
      "created_via": "text",
      "columns_count": 1,
      "import_count": 1,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "links": {
    "first": "text",
    "last": "text",
    "prev": "text",
    "next": "text"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 3,
    "per_page": 20,
    "to": 20,
    "total": 42
  }
}

Get Sheet

get

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

Authorizations
x-csvbox-api-keystringRequired
x-csvbox-secret-api-keystringRequired
Path parameters
sheet_license_keystringRequired

Sheet's numeric sheet_id or its slug (sheet_license_key)

Header parameters
AcceptstringRequired

Must be application/json

Example: application/json
Responses
200

Sheet found

application/json
sheet_idintegerOptionalExample: 123
sheet_license_keystringOptionalExample: a1b2c3d4
titlestringOptionalExample: Customer Import
created_viastringOptional
columns_countintegerOptional
import_countintegerOptional
created_atstring · date-timeOptional
updated_atstring · date-timeOptional
destinationstringOptional

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.

Example: webhook
stepsobjectOptional

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.

get/1.1/sheet/{sheet_license_key}
GET /1.1/sheet/{sheet_license_key} HTTP/1.1
Host: api.csvbox.io/
x-csvbox-api-key: YOUR_API_KEY
x-csvbox-secret-api-key: YOUR_API_KEY
Accept: application/json
{
  "sheet_id": 123,
  "sheet_license_key": "a1b2c3d4",
  "title": "Customer Import",
  "created_via": "text",
  "columns_count": 1,
  "import_count": 1,
  "created_at": "2026-01-01T00:00:00.000Z",
  "updated_at": "2026-01-01T00:00:00.000Z",
  "sheet_columns": [
    {
      "column_name": "email",
      "display_label": "Email",
      "info_hint": "Enter user email",
      "matching_keywords": "email,user_email",
      "type": "text",
      "default_value": "",
      "required": false,
      "read_only": false,
      "position": 1,
      "validators": {
        "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": {
        "transforms": {}
      }
    }
  ],
  "virtual_columns": [
    {
      "column_name": "full_name",
      "js_code": "text",
      "active": true,
      "dependencies": [
        {
          "url": "text",
          "integrity": "text",
          "globals": [
            "text"
          ]
        }
      ]
    }
  ],
  "validation_functions": [
    {
      "function_name": "check_email",
      "js_code": "text",
      "active": true,
      "scope": "column",
      "columns": [
        "text"
      ],
      "dynamic_columns": [
        "text"
      ],
      "dependencies": [
        {
          "url": "text",
          "integrity": "text",
          "globals": [
            "text"
          ]
        }
      ]
    }
  ],
  "data_transforms": [
    {
      "transform_name": "uppercase_country",
      "js_code": "text",
      "active": true,
      "scope": "column",
      "columns": [
        "text"
      ],
      "dynamic_columns": [
        "text"
      ],
      "run_at": "before_validation",
      "dependencies": [
        {
          "url": "text",
          "integrity": "text",
          "globals": [
            "text"
          ]
        }
      ]
    }
  ],
  "destination": "webhook",
  "webhooks": [
    {
      "import_complete": {
        "url": "https://example.com/webhook",
        "send_copy": false,
        "custom_headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    }
  ],
  "security_settings": {
    "region": "us",
    "domains": [
      "example.com"
    ],
    "import_url_upload": true,
    "s3_upload": true
  },
  "display": {
    "theme": {
      "type": "Light",
      "importer_dialog_size": "Large"
    }
  },
  "steps": {},
  "pdf_metadata_config": [
    {
      "name": "Invoice Number",
      "source": "document-kv",
      "value": null
    }
  ]
}

Create Sheet

post

Creates a new sheet importer.

Authorizations
x-csvbox-api-keystringRequired
x-csvbox-secret-api-keystringRequired
Header parameters
AcceptstringRequired

Must be application/json

Example: application/json
Content-TypestringRequired

Content type must be application/json

Example: application/json
Body
titlestringRequiredExample: Customer Import
Responses
201

Sheet Created Successfully

application/json
statusstringOptionalExample: Sheet Created Successfully
post/1.1/sheet
POST /1.1/sheet HTTP/1.1
Host: api.csvbox.io/
x-csvbox-api-key: YOUR_API_KEY
x-csvbox-secret-api-key: YOUR_API_KEY
Accept: application/json
Content-Type: application/json
Content-Length: 8940

{
  "title": "Customer Import",
  "webhooks": [
    {
      "import_complete": {
        "url": "https://example.com/webhook",
        "send_copy": false,
        "custom_headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    }
  ],
  "destinations": [
    {
      "type": "webhook",
      "isActive": true,
      "settings": {
        "method": "POST",
        "url": "https://example.com/api/import",
        "post_data_format": "JSON",
        "rows_per_chunk": 100,
        "request_type": "parallel",
        "server_side_validation": true,
        "allow_resubmit": "all_rows",
        "custom_headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    }
  ],
  "sheet_columns": [
    {
      "column_name": "col1",
      "display_label": "Col1 - Text",
      "info_hint": "What is your highest educational degree",
      "matching_keywords": "degree, education",
      "type": "text",
      "validators": {
        "min_length": 2,
        "max_length": 50
      },
      "default_value": "",
      "required": false,
      "position": 5
    },
    {
      "column_name": "col2",
      "display_label": "col2 - Number",
      "info_hint": "Years of work experience",
      "type": "number",
      "validators": {
        "min_value": 1,
        "max_value": 100
      },
      "required": false,
      "position": 6
    },
    {
      "column_name": "col4",
      "display_label": "col4 - Email",
      "type": "email",
      "required": false,
      "position": 7
    },
    {
      "column_name": "col5",
      "display_label": "col5 - Date",
      "type": "date",
      "required": false,
      "validators": {
        "format": "YYYY-MM-DD"
      },
      "position": 8
    },
    {
      "column_name": "col6",
      "display_label": "col6 - Time",
      "type": "time",
      "required": false,
      "validators": {
        "format": "HH:mm:ss"
      }
    },
    {
      "column_name": "col7",
      "display_label": "col7 - Boolean",
      "type": "boolean",
      "required": false
    },
    {
      "column_name": "col8",
      "display_label": "col8 - Regex",
      "type": "regex",
      "required": false,
      "validators": {
        "expression": "^\\d{10}$",
        "error_message": "Please enter a valid 10 digit phone number"
      }
    },
    {
      "column_name": "col9",
      "display_label": "col9 - IP",
      "type": "ip",
      "required": false,
      "validators": {
        "version": "ipv4"
      }
    },
    {
      "column_name": "col10",
      "display_label": "col10 - URL",
      "type": "url",
      "required": false
    },
    {
      "column_name": "col11",
      "display_label": "col11 - Credit Card",
      "type": "credit_card",
      "required": false
    },
    {
      "column_name": "col12",
      "display_label": "col12 - Phone Number",
      "type": "phone_number",
      "required": false,
      "validators": {
        "country_code": "IN"
      }
    },
    {
      "column_name": "col13",
      "display_label": "col13 - Currency",
      "type": "currency",
      "required": false,
      "validators": {
        "symbol": "$",
        "require_symbol": false
      }
    },
    {
      "column_name": "col14",
      "display_label": "col14 - List",
      "type": "list",
      "required": false,
      "validators": {
        "values": [
          {
            "value": "ind",
            "display_label": "India",
            "dependents": [
              {
                "value": "mh",
                "display_label": "Maharashtra",
                "dependents": [
                  {
                    "value": "mum",
                    "display_label": "Mumbai"
                  },
                  {
                    "value": "pun",
                    "display_label": "Pune"
                  }
                ]
              },
              {
                "value": "gj",
                "display_label": "Gujarat",
                "dependents": [
                  {
                    "value": "amd",
                    "display_label": "Ahmedabad"
                  },
                  {
                    "value": "sur",
                    "display_label": "Surat"
                  }
                ]
              }
            ]
          },
          {
            "value": "usa",
            "display_label": "United States",
            "dependents": [
              {
                "value": "ca",
                "display_label": "California",
                "dependents": [
                  {
                    "value": "la",
                    "display_label": "Los Angeles"
                  },
                  {
                    "value": "sf",
                    "display_label": "San Francisco"
                  }
                ]
              },
              {
                "value": "ny",
                "display_label": "New York",
                "dependents": [
                  {
                    "value": "nyc",
                    "display_label": "New York City"
                  },
                  {
                    "value": "buf",
                    "display_label": "Buffalo"
                  }
                ]
              }
            ]
          },
          {
            "value": "can",
            "display_label": "Canada",
            "dependents": [
              {
                "value": "on",
                "display_label": "Ontario",
                "dependents": [
                  {
                    "value": "tor",
                    "display_label": "Toronto"
                  },
                  {
                    "value": "ott",
                    "display_label": "Ottawa"
                  }
                ]
              },
              {
                "value": "bc",
                "display_label": "British Columbia",
                "dependents": [
                  {
                    "value": "van",
                    "display_label": "Vancouver"
                  },
                  {
                    "value": "vic",
                    "display_label": "Victoria"
                  }
                ]
              }
            ]
          }
        ],
        "case_sensitive": false
      }
    },
    {
      "column_name": "col15",
      "display_label": "col15 - Dependent List",
      "type": "dependent_list",
      "required": false,
      "validators": {
        "primary_column": "col14"
      }
    },
    {
      "column_name": "col16",
      "display_label": "col16 - Dependent List",
      "type": "dependent_list",
      "required": false,
      "validators": {
        "primary_column": "col15"
      }
    },
    {
      "column_name": "col17",
      "display_label": "col17 - Dynamic List",
      "type": "dynamic_list",
      "required": false,
      "validators": {
        "source_url": "https://example.com/api/dynamic-list-options",
        "request_method": "GET",
        "request_headers": [],
        "custom_user_attributes": true,
        "other_values": false
      }
    },
    {
      "column_name": "col18",
      "display_label": "col18 - Dependent Dynamic List",
      "type": "dependent_dynamic_list",
      "required": false,
      "validators": {
        "primary_column": "col17"
      }
    },
    {
      "column_name": "col19",
      "display_label": "col19 - Dependent Dynamic List",
      "type": "dependent_dynamic_list",
      "required": false,
      "validators": {
        "primary_column": "col18"
      }
    },
    {
      "column_name": "col20",
      "display_label": "col20 - Multiselect List",
      "type": "multiselect_list",
      "required": false,
      "validators": {
        "values": [
          "Red",
          "Green",
          "Blue",
          "orange",
          "yellow",
          "black"
        ],
        "delimiter": ",",
        "case_sensitive": false,
        "other_values": false
      }
    },
    {
      "column_name": "col21",
      "display_label": "col21 - Multiselect Dynamic List",
      "type": "multiselect_dynamic_list",
      "required": false,
      "validators": {
        "dml_source_url": "https://example.com/api/multiselect-dynamic-options",
        "dml_request_method": "GET",
        "dml_request_headers": [],
        "delimiter": ",",
        "dml_other_values": false
      }
    },
    {
      "column_name": "col22",
      "display_label": "col22 - Percentage",
      "type": "percentage",
      "required": false,
      "validators": {
        "min_value": 0,
        "max_value": 100,
        "output": "percent"
      }
    },
    {
      "column_name": "col23",
      "display_label": "col23 - UUID",
      "type": "uuid",
      "required": false
    },
    {
      "column_name": "col24",
      "display_label": "col24 - JSON",
      "type": "json",
      "required": false
    }
  ],
  "steps": {
    "file_upload": {
      "types": [
        ".csv"
      ],
      "title": "File Upload",
      "help": "Upload your CSV file",
      "sample_file_url": "",
      "size_mb": 200,
      "validation_msg": "upto 200mb allowed",
      "copy_paste": true,
      "copy_delimiter": "comma",
      "show_upload": true,
      "worksheet_select": true,
      "description_option": true,
      "lang": "en",
      "excel_date_format": "custom",
      "excel_date_custom": "DD-MM-YYYY",
      "hide_cancel": false,
      "split": true,
      "split_rows": 1000,
      "split_confirm": "no",
      "extract_types": [
        "pdf",
        "images"
      ],
      "page_limit": 10,
      "accept_raw_value": false,
      "skip_min_rows": 2,
      "skip_max_rows": 1000,
      "skip_min_cols": 2,
      "skip_max_cols": 20
    },
    "select_header": {
      "skip": true,
      "help": "Select header row",
      "default_row": "2",
      "encoding_option": true,
      "encoding": "windows-1252",
      "row_column_switch": false
    },
    "map_columns": {
      "skip": true,
      "help": "Map columns",
      "mapping_mode": "template_fields",
      "bulk_cols_dd": false,
      "accept_unmapped": true,
      "accept_unmapped_select": true,
      "allow_zero_template": true,
      "ignore_cols": true,
      "ignore_cols_default": true,
      "user_keywords": false
    },
    "verify_data": {
      "skip": true,
      "help": "Verify data",
      "row_display_mode": "invalid",
      "export_option": true,
      "search_option": false,
      "ai_transform": true,
      "allow_new_rows": false,
      "rows_display": 25,
      "allow_invalid": true,
      "invalid_confirmation": false,
      "max_rows": 600,
      "allow_upload_if_max": false,
      "max_rows_msg": "maaaaaax",
      "min_rows": 2,
      "min_rows_msg": "miiiiin"
    },
    "results": {
      "close_mode": "close_on_success",
      "redirect_url": "",
      "success_type": "static",
      "success_text": "Import successful",
      "success_method": "get",
      "success_url": "",
      "success_headers": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "failed_type": "static",
      "failed_text": "Failure",
      "failed_method": "get",
      "failed_url": "",
      "failed_headers": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "show_resubmit": false,
      "show_error_text": false
    }
  },
  "security_settings": {
    "region": "us",
    "domains": [
      "example.com"
    ],
    "import_url_upload": true,
    "s3_upload": true
  },
  "virtual_columns": [
    {
      "column_name": "full_name",
      "js_code": "const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();",
      "active": true,
      "dependencies": [],
      "_delete": false
    }
  ],
  "validation_functions": [
    {
      "function_name": "check_email",
      "scope": "column",
      "columns": [
        "col4"
      ],
      "js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
      "active": true
    },
    {
      "function_name": "check_date",
      "scope": "column",
      "columns": [
        "col5"
      ],
      "js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
      "dependencies": [
        {
          "url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
          "globals": [
            "dayjs"
          ]
        }
      ],
      "active": true
    }
  ],
  "data_transforms": [
    {
      "transform_name": "uppercase_country",
      "scope": "column",
      "run_at": "before_validation",
      "columns": [
        "col1"
      ],
      "dynamic_columns": [
        "region"
      ],
      "js_code": "for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;",
      "active": true,
      "dependencies": [],
      "_delete": false
    }
  ],
  "pdf_metadata_config": [
    {
      "name": "Author",
      "source": "native"
    },
    {
      "name": "Invoice Number",
      "source": "document-kv"
    },
    {
      "name": "processed_by",
      "source": "static",
      "value": "AP Team"
    },
    {
      "name": "invoice_date",
      "source": "line-match",
      "value": "Invoice Date:"
    }
  ]
}
{
  "status": "Sheet Created Successfully",
  "data": {
    "sheet_license_key": "text",
    "title": "text",
    "virtual_columns": [
      {
        "column_name": "full_name",
        "result": "created"
      }
    ],
    "validation_functions": [
      {
        "function_name": "check_email",
        "result": "updated"
      }
    ],
    "data_transforms": [
      {
        "transform_name": "uppercase_country",
        "result": "unchanged"
      }
    ]
  }
}

Update Sheet

put

Fully updates an existing sheet. All provided fields will overwrite existing values.

Authorizations
x-csvbox-api-keystringRequired
x-csvbox-secret-api-keystringRequired
Path parameters
sheet_license_keystringRequired

Sheet License Key

Header parameters
AcceptstringRequired

Must be application/json

Example: application/json
Content-TypestringRequired

Content type must be application/json

Example: application/json
Body
titlestringOptionalExample: Updated Sheet
Responses
200

Sheet Updated Successfully

application/json
statusstringOptionalExample: Sheet Created Successfully
put/1.1/sheet/{sheet_license_key}
PUT /1.1/sheet/{sheet_license_key} HTTP/1.1
Host: api.csvbox.io/
x-csvbox-api-key: YOUR_API_KEY
x-csvbox-secret-api-key: YOUR_API_KEY
Accept: application/json
Content-Type: application/json
Content-Length: 5016

{
  "title": "Updated Sheet",
  "webhooks": [
    {
      "import_complete": {
        "url": "https://example.com/webhook",
        "send_copy": false,
        "custom_headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    }
  ],
  "destinations": [
    {
      "type": "webhook",
      "isActive": true,
      "settings": {
        "method": "POST",
        "url": "https://example.com/api/import",
        "post_data_format": "JSON",
        "rows_per_chunk": 100,
        "request_type": "parallel",
        "server_side_validation": true,
        "allow_resubmit": "all_rows",
        "custom_headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    }
  ],
  "sheet_columns": [
    {
      "column_name": "col1",
      "display_label": "Col1 - Text",
      "info_hint": "What is your highest educational degree",
      "matching_keywords": "degree, education",
      "type": "text",
      "validators": {
        "min_length": 2,
        "max_length": 50
      },
      "default_value": "",
      "required": false,
      "position": 5
    },
    {
      "column_name": "col2",
      "display_label": "col2 - Number",
      "info_hint": "Years of work experience",
      "type": "number",
      "validators": {
        "min_value": 1,
        "max_value": 100
      },
      "required": false,
      "position": 6
    },
    {
      "column_name": "col4",
      "display_label": "col4 - Email",
      "type": "email",
      "required": false,
      "position": 7
    },
    {
      "column_name": "col5",
      "display_label": "col5 - Date",
      "type": "date",
      "validators": {
        "format": "YYYY-MM-DD"
      },
      "required": false,
      "position": 8
    }
  ],
  "steps": {
    "file_upload": {
      "types": [
        ".csv"
      ],
      "title": "File Upload",
      "help": "Upload your CSV file",
      "sample_file_url": "",
      "size_mb": 200,
      "validation_msg": "upto 200mb allowed",
      "copy_paste": true,
      "copy_delimiter": "comma",
      "show_upload": true,
      "worksheet_select": true,
      "description_option": true,
      "lang": "en",
      "excel_date_format": "custom",
      "excel_date_custom": "DD-MM-YYYY",
      "hide_cancel": false,
      "split": true,
      "split_rows": 1000,
      "split_confirm": "no",
      "extract_types": [
        "pdf",
        "images"
      ],
      "page_limit": 10,
      "accept_raw_value": false,
      "skip_min_rows": 2,
      "skip_max_rows": 1000,
      "skip_min_cols": 2,
      "skip_max_cols": 20
    },
    "select_header": {
      "skip": true,
      "help": "Select header row",
      "default_row": "2",
      "encoding_option": true,
      "encoding": "windows-1252",
      "row_column_switch": false
    },
    "map_columns": {
      "skip": true,
      "help": "Map columns",
      "mapping_mode": "template_fields",
      "bulk_cols_dd": false,
      "accept_unmapped": true,
      "accept_unmapped_select": true,
      "allow_zero_template": true,
      "ignore_cols": true,
      "ignore_cols_default": true,
      "user_keywords": false
    },
    "verify_data": {
      "skip": true,
      "help": "Verify data",
      "row_display_mode": "invalid",
      "export_option": true,
      "search_option": false,
      "ai_transform": true,
      "allow_new_rows": false,
      "rows_display": 25,
      "allow_invalid": true,
      "invalid_confirmation": false,
      "max_rows": 600,
      "allow_upload_if_max": false,
      "max_rows_msg": "maaaaaax",
      "min_rows": 2,
      "min_rows_msg": "miiiiin"
    },
    "results": {
      "close_mode": "close_on_success",
      "redirect_url": "",
      "success_type": "static",
      "success_text": "Import successful",
      "success_method": "get",
      "success_url": "",
      "success_headers": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "failed_type": "static",
      "failed_text": "Failure",
      "failed_method": "get",
      "failed_url": "",
      "failed_headers": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "show_resubmit": false,
      "show_error_text": false
    }
  },
  "security_settings": {
    "region": "us",
    "domains": [
      "example.com"
    ],
    "import_url_upload": true,
    "s3_upload": true
  },
  "virtual_columns": [
    {
      "column_name": "full_name",
      "js_code": "const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();",
      "active": true,
      "dependencies": [],
      "_delete": false
    }
  ],
  "validation_functions": [
    {
      "function_name": "check_email",
      "scope": "column",
      "columns": [
        "col4"
      ],
      "js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
      "active": true
    },
    {
      "function_name": "check_date",
      "scope": "column",
      "columns": [
        "col5"
      ],
      "js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
      "dependencies": [
        {
          "url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
          "globals": [
            "dayjs"
          ]
        }
      ],
      "active": true
    }
  ],
  "data_transforms": [
    {
      "transform_name": "uppercase_country",
      "scope": "column",
      "run_at": "before_validation",
      "columns": [
        "col1"
      ],
      "dynamic_columns": [
        "region"
      ],
      "js_code": "for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;",
      "active": true,
      "dependencies": [],
      "_delete": false
    }
  ],
  "pdf_metadata_config": [
    {
      "name": "Author",
      "source": "native"
    },
    {
      "name": "Invoice Number",
      "source": "document-kv"
    },
    {
      "name": "processed_by",
      "source": "static",
      "value": "AP Team"
    },
    {
      "name": "invoice_date",
      "source": "line-match",
      "value": "Invoice Date:"
    }
  ]
}
{
  "status": "Sheet Created Successfully",
  "data": {
    "sheet_license_key": "text",
    "title": "text",
    "virtual_columns": [
      {
        "column_name": "full_name",
        "result": "created"
      }
    ],
    "validation_functions": [
      {
        "function_name": "check_email",
        "result": "updated"
      }
    ],
    "data_transforms": [
      {
        "transform_name": "uppercase_country",
        "result": "unchanged"
      }
    ]
  }
}

Partially Update Sheet

patch

Partially updates an existing sheet. Only provided fields will be updated. Fields not included will remain unchanged.

Authorizations
x-csvbox-api-keystringRequired
x-csvbox-secret-api-keystringRequired
Path parameters
sheet_license_keystringRequired

Sheet License Key

Header parameters
AcceptstringRequired

Must be application/json

Example: application/json
Content-TypestringRequired

Content type must be application/json

Example: application/json
Body
titlestringOptionalExample: Updated Sheet
Responses
200

Sheet Partially Updated Successfully

application/json
statusstringOptionalExample: Sheet Created Successfully
patch/1.1/sheet/{sheet_license_key}
PATCH /1.1/sheet/{sheet_license_key} HTTP/1.1
Host: api.csvbox.io/
x-csvbox-api-key: YOUR_API_KEY
x-csvbox-secret-api-key: YOUR_API_KEY
Accept: application/json
Content-Type: application/json
Content-Length: 8938

{
  "title": "Updated Sheet",
  "webhooks": [
    {
      "import_complete": {
        "url": "https://example.com/webhook",
        "send_copy": false,
        "custom_headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    }
  ],
  "destinations": [
    {
      "type": "webhook",
      "isActive": true,
      "settings": {
        "method": "POST",
        "url": "https://example.com/api/import",
        "post_data_format": "JSON",
        "rows_per_chunk": 100,
        "request_type": "parallel",
        "server_side_validation": true,
        "allow_resubmit": "all_rows",
        "custom_headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    }
  ],
  "sheet_columns": [
    {
      "column_name": "col1",
      "display_label": "Col1 - Text",
      "info_hint": "What is your highest educational degree",
      "matching_keywords": "degree, education",
      "type": "text",
      "validators": {
        "min_length": 2,
        "max_length": 50
      },
      "default_value": "",
      "required": false,
      "position": 5
    },
    {
      "column_name": "col2",
      "display_label": "col2 - Number",
      "info_hint": "Years of work experience",
      "type": "number",
      "validators": {
        "min_value": 1,
        "max_value": 100
      },
      "required": false,
      "position": 6
    },
    {
      "column_name": "col4",
      "display_label": "col4 - Email",
      "type": "email",
      "required": false,
      "position": 7
    },
    {
      "column_name": "col5",
      "display_label": "col5 - Date",
      "type": "date",
      "required": false,
      "validators": {
        "format": "YYYY-MM-DD"
      },
      "position": 8
    },
    {
      "column_name": "col6",
      "display_label": "col6 - Time",
      "type": "time",
      "required": false,
      "validators": {
        "format": "HH:mm:ss"
      }
    },
    {
      "column_name": "col7",
      "display_label": "col7 - Boolean",
      "type": "boolean",
      "required": false
    },
    {
      "column_name": "col8",
      "display_label": "col8 - Regex",
      "type": "regex",
      "required": false,
      "validators": {
        "expression": "^\\d{10}$",
        "error_message": "Please enter a valid 10 digit phone number"
      }
    },
    {
      "column_name": "col9",
      "display_label": "col9 - IP",
      "type": "ip",
      "required": false,
      "validators": {
        "version": "ipv4"
      }
    },
    {
      "column_name": "col10",
      "display_label": "col10 - URL",
      "type": "url",
      "required": false
    },
    {
      "column_name": "col11",
      "display_label": "col11 - Credit Card",
      "type": "credit_card",
      "required": false
    },
    {
      "column_name": "col12",
      "display_label": "col12 - Phone Number",
      "type": "phone_number",
      "required": false,
      "validators": {
        "country_code": "IN"
      }
    },
    {
      "column_name": "col13",
      "display_label": "col13 - Currency",
      "type": "currency",
      "required": false,
      "validators": {
        "symbol": "$",
        "require_symbol": false
      }
    },
    {
      "column_name": "col14",
      "display_label": "col14 - List",
      "type": "list",
      "required": false,
      "validators": {
        "values": [
          {
            "value": "ind",
            "display_label": "India",
            "dependents": [
              {
                "value": "mh",
                "display_label": "Maharashtra",
                "dependents": [
                  {
                    "value": "mum",
                    "display_label": "Mumbai"
                  },
                  {
                    "value": "pun",
                    "display_label": "Pune"
                  }
                ]
              },
              {
                "value": "gj",
                "display_label": "Gujarat",
                "dependents": [
                  {
                    "value": "amd",
                    "display_label": "Ahmedabad"
                  },
                  {
                    "value": "sur",
                    "display_label": "Surat"
                  }
                ]
              }
            ]
          },
          {
            "value": "usa",
            "display_label": "United States",
            "dependents": [
              {
                "value": "ca",
                "display_label": "California",
                "dependents": [
                  {
                    "value": "la",
                    "display_label": "Los Angeles"
                  },
                  {
                    "value": "sf",
                    "display_label": "San Francisco"
                  }
                ]
              },
              {
                "value": "ny",
                "display_label": "New York",
                "dependents": [
                  {
                    "value": "nyc",
                    "display_label": "New York City"
                  },
                  {
                    "value": "buf",
                    "display_label": "Buffalo"
                  }
                ]
              }
            ]
          },
          {
            "value": "can",
            "display_label": "Canada",
            "dependents": [
              {
                "value": "on",
                "display_label": "Ontario",
                "dependents": [
                  {
                    "value": "tor",
                    "display_label": "Toronto"
                  },
                  {
                    "value": "ott",
                    "display_label": "Ottawa"
                  }
                ]
              },
              {
                "value": "bc",
                "display_label": "British Columbia",
                "dependents": [
                  {
                    "value": "van",
                    "display_label": "Vancouver"
                  },
                  {
                    "value": "vic",
                    "display_label": "Victoria"
                  }
                ]
              }
            ]
          }
        ],
        "case_sensitive": false
      }
    },
    {
      "column_name": "col15",
      "display_label": "col15 - Dependent List",
      "type": "dependent_list",
      "required": false,
      "validators": {
        "primary_column": "col14"
      }
    },
    {
      "column_name": "col16",
      "display_label": "col16 - Dependent List",
      "type": "dependent_list",
      "required": false,
      "validators": {
        "primary_column": "col15"
      }
    },
    {
      "column_name": "col17",
      "display_label": "col17 - Dynamic List",
      "type": "dynamic_list",
      "required": false,
      "validators": {
        "source_url": "https://example.com/api/dynamic-list-options",
        "request_method": "GET",
        "request_headers": [],
        "custom_user_attributes": true,
        "other_values": false
      }
    },
    {
      "column_name": "col18",
      "display_label": "col18 - Dependent Dynamic List",
      "type": "dependent_dynamic_list",
      "required": false,
      "validators": {
        "primary_column": "col17"
      }
    },
    {
      "column_name": "col19",
      "display_label": "col19 - Dependent Dynamic List",
      "type": "dependent_dynamic_list",
      "required": false,
      "validators": {
        "primary_column": "col18"
      }
    },
    {
      "column_name": "col20",
      "display_label": "col20 - Multiselect List",
      "type": "multiselect_list",
      "required": false,
      "validators": {
        "values": [
          "Red",
          "Green",
          "Blue",
          "orange",
          "yellow",
          "black"
        ],
        "delimiter": ",",
        "case_sensitive": false,
        "other_values": false
      }
    },
    {
      "column_name": "col21",
      "display_label": "col21 - Multiselect Dynamic List",
      "type": "multiselect_dynamic_list",
      "required": false,
      "validators": {
        "dml_source_url": "https://example.com/api/multiselect-dynamic-options",
        "dml_request_method": "GET",
        "dml_request_headers": [],
        "delimiter": ",",
        "dml_other_values": false
      }
    },
    {
      "column_name": "col22",
      "display_label": "col22 - Percentage",
      "type": "percentage",
      "required": false,
      "validators": {
        "min_value": 0,
        "max_value": 100,
        "output": "percent"
      }
    },
    {
      "column_name": "col23",
      "display_label": "col23 - UUID",
      "type": "uuid",
      "required": false
    },
    {
      "column_name": "col24",
      "display_label": "col24 - JSON",
      "type": "json",
      "required": false
    }
  ],
  "steps": {
    "file_upload": {
      "types": [
        ".csv"
      ],
      "title": "File Upload",
      "help": "Upload your CSV file",
      "sample_file_url": "",
      "size_mb": 200,
      "validation_msg": "upto 200mb allowed",
      "copy_paste": true,
      "copy_delimiter": "comma",
      "show_upload": true,
      "worksheet_select": true,
      "description_option": true,
      "lang": "en",
      "excel_date_format": "custom",
      "excel_date_custom": "DD-MM-YYYY",
      "hide_cancel": false,
      "split": true,
      "split_rows": 1000,
      "split_confirm": "no",
      "extract_types": [
        "pdf",
        "images"
      ],
      "page_limit": 10,
      "accept_raw_value": false,
      "skip_min_rows": 2,
      "skip_max_rows": 1000,
      "skip_min_cols": 2,
      "skip_max_cols": 20
    },
    "select_header": {
      "skip": true,
      "help": "Select header row",
      "default_row": "2",
      "encoding_option": true,
      "encoding": "windows-1252",
      "row_column_switch": false
    },
    "map_columns": {
      "skip": true,
      "help": "Map columns",
      "mapping_mode": "template_fields",
      "bulk_cols_dd": false,
      "accept_unmapped": true,
      "accept_unmapped_select": true,
      "allow_zero_template": true,
      "ignore_cols": true,
      "ignore_cols_default": true,
      "user_keywords": false
    },
    "verify_data": {
      "skip": true,
      "help": "Verify data",
      "row_display_mode": "invalid",
      "export_option": true,
      "search_option": false,
      "ai_transform": true,
      "allow_new_rows": false,
      "rows_display": 25,
      "allow_invalid": true,
      "invalid_confirmation": false,
      "max_rows": 600,
      "allow_upload_if_max": false,
      "max_rows_msg": "maaaaaax",
      "min_rows": 2,
      "min_rows_msg": "miiiiin"
    },
    "results": {
      "close_mode": "close_on_success",
      "redirect_url": "",
      "success_type": "static",
      "success_text": "Import successful",
      "success_method": "get",
      "success_url": "",
      "success_headers": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "failed_type": "static",
      "failed_text": "Failure",
      "failed_method": "get",
      "failed_url": "",
      "failed_headers": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "show_resubmit": false,
      "show_error_text": false
    }
  },
  "security_settings": {
    "region": "us",
    "domains": [
      "example.com"
    ],
    "import_url_upload": true,
    "s3_upload": true
  },
  "virtual_columns": [
    {
      "column_name": "full_name",
      "js_code": "const a = csvbox.row['col1'] || ''; const b = csvbox.row['col2'] || ''; return (a + ' ' + b).trim();",
      "active": true,
      "dependencies": [],
      "_delete": false
    }
  ],
  "validation_functions": [
    {
      "function_name": "check_email",
      "scope": "column",
      "columns": [
        "col4"
      ],
      "js_code": "const rows = csvbox.column['col4'] || []; const errs = []; for (let i = 0; i < rows.length; i++) { if (String(rows[i]).indexOf('@') === -1) { errs.push({ row_id: i + 1, column: 'col4', message: 'Not a valid email' }); } } return errs;",
      "active": true
    },
    {
      "function_name": "check_date",
      "scope": "column",
      "columns": [
        "col5"
      ],
      "js_code": "const rows = csvbox.column['col5'] || []; const errs = []; const today = dayjs(); for (let i = 0; i < rows.length; i++) { const raw = String(rows[i] || '').trim(); if (raw === '') { continue; } const d = dayjs(raw); if (!d.isValid() || d.format('YYYY-MM-DD') !== raw) { errs.push({ row_id: i + 1, column: 'col5', message: 'Use YYYY-MM-DD, e.g. 2024-01-31' }); } else if (d.isAfter(today)) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date cannot be in the future' }); } else if (d.year() < 1900) { errs.push({ row_id: i + 1, column: 'col5', message: 'Date must be 1900 or later' }); } } return errs;",
      "dependencies": [
        {
          "url": "https://cdn.jsdelivr.net/npm/dayjs@1.11.10/dayjs.min.js",
          "globals": [
            "dayjs"
          ]
        }
      ],
      "active": true
    }
  ],
  "data_transforms": [
    {
      "transform_name": "uppercase_country",
      "scope": "column",
      "run_at": "before_validation",
      "columns": [
        "col1"
      ],
      "dynamic_columns": [
        "region"
      ],
      "js_code": "for (let i = 0; i < csvbox.column['col1'].length; i++) { csvbox.column['col1'][i] = String(csvbox.column['col1'][i]).toUpperCase(); } return csvbox;",
      "active": true,
      "dependencies": [],
      "_delete": false
    }
  ],
  "pdf_metadata_config": [
    {
      "name": "Author",
      "source": "native"
    },
    {
      "name": "Invoice Number",
      "source": "document-kv"
    },
    {
      "name": "processed_by",
      "source": "static",
      "value": "AP Team"
    },
    {
      "name": "invoice_date",
      "source": "line-match",
      "value": "Invoice Date:"
    }
  ]
}
{
  "status": "Sheet Created Successfully",
  "data": {
    "sheet_license_key": "text",
    "title": "text",
    "virtual_columns": [
      {
        "column_name": "full_name",
        "result": "created"
      }
    ],
    "validation_functions": [
      {
        "function_name": "check_email",
        "result": "updated"
      }
    ],
    "data_transforms": [
      {
        "transform_name": "uppercase_country",
        "result": "unchanged"
      }
    ]
  }
}

Last updated