Exports
Asynchronous bulk exports of account data, available on the Enterprise plan. Create an export job, then poll it until the download links are ready.
The endpoints in this group are not yet available. This page documents the contract as currently defined.
{
"id": "job_01J9KT3H6W",
"status": "completed",
"request": {
"resources": [
"documents",
"orders"
],
"from": "2025-01-01",
"to": "2026-09-12",
"format": "ndjson"
},
"files": [
{
"resource": "documents",
"download_url": "https://storage.zester.co.il/signed/XXXXXXXX/documents.ndjson",
"size_bytes": 96512331,
"row_count": 18432,
"expires_at": "2026-09-14T09:14:37+03:00"
},
{
"resource": "orders",
"download_url": "https://storage.zester.co.il/signed/XXXXXXXX/orders.ndjson",
"size_bytes": 41820118,
"row_count": 9217,
"expires_at": "2026-09-14T09:14:37+03:00"
}
],
"error": null,
"created_at": "2026-09-13T09:00:00+03:00",
"completed_at": "2026-09-13T09:14:37+03:00"
}
POST
/exportsRequest body application/json
Possible values
ordersdocumentsexpensesjournal_linessuppliersproductsinventory_countsz_reportsitem_salescard_transactionsResponses
202The export job, queued for processing.
Show 5 child attributesHide child attributes
403The credential is valid but is not allowed to make this request. The code is scope_missing, plan_required, ip_not_allowed or client_suspended.
429The rate limit was exceeded. Retry after the number of seconds given in Retry-After.
Headers: Retry-After RateLimit-Limit RateLimit-Remaining RateLimit-Reset
curl -X POST "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…" \
-H "Content-Type: application/json" \
-d '{
"resources": [
"documents",
"orders"
],
"from": "2025-01-01",
"to": "2026-09-12",
"format": "ndjson"
}'const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports", {
method: "POST",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
"Content-Type": "application/json",
},
body: JSON.stringify({
"resources": [
"documents",
"orders"
],
"from": "2025-01-01",
"to": "2026-09-12",
"format": "ndjson"
}),
});
const data = await res.json();import requests
res = requests.post(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
json={
"resources": [
"documents",
"orders"
],
"from": "2025-01-01",
"to": "2026-09-12",
"format": "ndjson"
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var body = new StringContent("""
{
"resources": [
"documents",
"orders"
],
"from": "2025-01-01",
"to": "2026-09-12",
"format": "ndjson"
}
""", Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports", body);
var data = await res.Content.ReadAsStringAsync();
{
"id": "job_01J9KT3H6W",
"status": "queued",
"request": {
"resources": [
"documents",
"orders"
],
"from": "2025-01-01",
"to": "2026-09-12",
"format": "ndjson"
},
"files": [],
"error": null,
"created_at": "2026-09-13T09:00:00+03:00",
"completed_at": null
}{
"type": "https://developers.zester.co.il/errors/scope_missing",
"title": "Scope missing",
"status": 403,
"code": "scope_missing",
"detail": "This API client does not have the exports:manage scope. Add it in Settings → Developers.",
"request_id": "req_01J9KT3G2B"
}{
"type": "https://developers.zester.co.il/errors/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"detail": "An export job is already running for this account (job_01J9KT3H6W). Start a new one after it completes.",
"request_id": "req_01J9KT4K7C"
}
GET
/exports/{export_id}Path parameters
Responses
200The export job. Poll it until status is completed, when download links appear in files.
Show 5 child attributesHide child attributes
404The resource does not exist or belongs to another account.
curl "https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports/job_01J9KT3H6W" \
-H "Authorization: Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…"const res = await fetch("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports/job_01J9KT3H6W", {
method: "GET",
headers: {
Authorization: "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
});
const data = await res.json();import requests
res = requests.get(
"https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports/job_01J9KT3H6W",
headers={
"Authorization": "Bearer zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…",
},
)
data = res.json()using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "zk_test_XXXXXXXX_…zk_live_XXXXXXXX_…");
var res = await http.GetAsync("https://sandbox-api.zester.co.il/v2https://api.zester.co.il/v2/exports/job_01J9KT3H6W");
var data = await res.Content.ReadAsStringAsync();
{
"id": "job_01J9KT3H6W",
"status": "completed",
"request": {
"resources": [
"documents",
"orders"
],
"from": "2025-01-01",
"to": "2026-09-12",
"format": "ndjson"
},
"files": [
{
"resource": "documents",
"download_url": "https://storage.zester.co.il/signed/XXXXXXXX/documents.ndjson",
"size_bytes": 96512331,
"row_count": 18432,
"expires_at": "2026-09-14T09:14:37+03:00"
},
{
"resource": "orders",
"download_url": "https://storage.zester.co.il/signed/XXXXXXXX/orders.ndjson",
"size_bytes": 41820118,
"row_count": 9217,
"expires_at": "2026-09-14T09:14:37+03:00"
}
],
"error": null,
"created_at": "2026-09-13T09:00:00+03:00",
"completed_at": "2026-09-13T09:14:37+03:00"
}{
"type": "https://developers.zester.co.il/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Export job job_01J9KT3H6W does not exist on this account.",
"request_id": "req_01J9KT9M5D"
}