curl --request GET \
--url https://api.csvbox.io/1.1/sheet/{sheet_license_key} \
--header 'Accept: <accept>' \
--header 'x-csvbox-api-key: <api-key>' \
--header 'x-csvbox-secret-api-key: <api-key>'import requests
url = "https://api.csvbox.io/1.1/sheet/{sheet_license_key}"
headers = {
"Accept": "<accept>",
"x-csvbox-api-key": "<api-key>",
"x-csvbox-secret-api-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
Accept: '<accept>',
'x-csvbox-api-key': '<api-key>',
'x-csvbox-secret-api-key': '<api-key>'
}
};
fetch('https://api.csvbox.io/1.1/sheet/{sheet_license_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.csvbox.io/1.1/sheet/{sheet_license_key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"x-csvbox-api-key: <api-key>",
"x-csvbox-secret-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.csvbox.io/1.1/sheet/{sheet_license_key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "<accept>")
req.Header.Add("x-csvbox-api-key", "<api-key>")
req.Header.Add("x-csvbox-secret-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.csvbox.io/1.1/sheet/{sheet_license_key}")
.header("Accept", "<accept>")
.header("x-csvbox-api-key", "<api-key>")
.header("x-csvbox-secret-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.csvbox.io/1.1/sheet/{sheet_license_key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept"] = '<accept>'
request["x-csvbox-api-key"] = '<api-key>'
request["x-csvbox-secret-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"sheet_id": 123,
"sheet_license_key": "a1b2c3d4",
"title": "Customer Import",
"created_via": "<string>",
"columns_count": 123,
"import_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"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": "<string>",
"active": true,
"dependencies": [
{
"url": "<string>",
"integrity": "<string>",
"globals": [
"<string>"
]
}
]
}
],
"validation_functions": [
{
"function_name": "check_email",
"js_code": "<string>",
"active": true,
"scope": "column",
"columns": [
"<string>"
],
"dynamic_columns": [
"<string>"
],
"dependencies": [
{
"url": "<string>",
"integrity": "<string>",
"globals": [
"<string>"
]
}
]
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"js_code": "<string>",
"active": true,
"scope": "column",
"columns": [
"<string>"
],
"dynamic_columns": [
"<string>"
],
"run_at": "before_validation",
"dependencies": [
{
"url": "<string>",
"integrity": "<string>",
"globals": [
"<string>"
]
}
]
}
],
"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
}
]
}{
"status": "Sheet Creation Failed",
"errors": {
"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
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"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
}
]
}
}Get a sheet
Fetches a single sheet owned by the authenticated API user, looked up by sheet_id or slug (sheet_license_key).
curl --request GET \
--url https://api.csvbox.io/1.1/sheet/{sheet_license_key} \
--header 'Accept: <accept>' \
--header 'x-csvbox-api-key: <api-key>' \
--header 'x-csvbox-secret-api-key: <api-key>'import requests
url = "https://api.csvbox.io/1.1/sheet/{sheet_license_key}"
headers = {
"Accept": "<accept>",
"x-csvbox-api-key": "<api-key>",
"x-csvbox-secret-api-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
Accept: '<accept>',
'x-csvbox-api-key': '<api-key>',
'x-csvbox-secret-api-key': '<api-key>'
}
};
fetch('https://api.csvbox.io/1.1/sheet/{sheet_license_key}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.csvbox.io/1.1/sheet/{sheet_license_key}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Accept: <accept>",
"x-csvbox-api-key: <api-key>",
"x-csvbox-secret-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.csvbox.io/1.1/sheet/{sheet_license_key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Accept", "<accept>")
req.Header.Add("x-csvbox-api-key", "<api-key>")
req.Header.Add("x-csvbox-secret-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.csvbox.io/1.1/sheet/{sheet_license_key}")
.header("Accept", "<accept>")
.header("x-csvbox-api-key", "<api-key>")
.header("x-csvbox-secret-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.csvbox.io/1.1/sheet/{sheet_license_key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept"] = '<accept>'
request["x-csvbox-api-key"] = '<api-key>'
request["x-csvbox-secret-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"sheet_id": 123,
"sheet_license_key": "a1b2c3d4",
"title": "Customer Import",
"created_via": "<string>",
"columns_count": 123,
"import_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"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": "<string>",
"active": true,
"dependencies": [
{
"url": "<string>",
"integrity": "<string>",
"globals": [
"<string>"
]
}
]
}
],
"validation_functions": [
{
"function_name": "check_email",
"js_code": "<string>",
"active": true,
"scope": "column",
"columns": [
"<string>"
],
"dynamic_columns": [
"<string>"
],
"dependencies": [
{
"url": "<string>",
"integrity": "<string>",
"globals": [
"<string>"
]
}
]
}
],
"data_transforms": [
{
"transform_name": "uppercase_country",
"js_code": "<string>",
"active": true,
"scope": "column",
"columns": [
"<string>"
],
"dynamic_columns": [
"<string>"
],
"run_at": "before_validation",
"dependencies": [
{
"url": "<string>",
"integrity": "<string>",
"globals": [
"<string>"
]
}
]
}
],
"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
}
]
}{
"status": "Sheet Creation Failed",
"errors": {
"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
}
]
}
}{
"status": "Sheet Creation Failed",
"errors": {
"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
}
]
}
}Headers
Must be application/json
"application/json"
Path Parameters
Sheet's numeric sheet_id or its slug (sheet_license_key)
Response
Sheet found
123
"a1b2c3d4"
"Customer Import"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
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.
"webhook"
Always exactly one entry, reflecting the import-completion webhook actually stored — same shape as the webhooks array accepted by POST/PUT/PATCH.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
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.
Same shape accepted by POST/PUT/PATCH. Empty array or absent field when unconfigured.
Show child attributes
Show child attributes

