Skip to main content

How to Access Concierge Report Data via API

Updated yesterday

The Zest API lets you programmatically fetch data from any saved report. Use it to pull report data into your own systems for automated reconciliation, data warehousing, or custom dashboards.

Getting Started

Request an API Key

API access is provisioned by Zest. Contact support to request an API key for your organization.

Important: Treat your API key like a password. Do not share it publicly or commit it to source control. We will also notify you when we recommend rotating your key.

Authentication

All API requests must include your API key in the x-api-key header:

x-api-key: your-api-key-here

Base URL

All endpoints are available at: https://gifts.zest.co/api/partners

Verify Your API Key

Before building an integration, confirm your API key is working:

Request

GET /api/partners/health-check

Headers

Header

Value

x-api-key

your-api-key-here

Response

{
"status": "healthy",
"organizationName": "Your Organization Name"
}

If you receive a 401 UNAUTHORIZED response, your API key may be invalid or expired. Contact Zest support.

Fetch Report Data

The report-data endpoint returns paginated data from any saved report.

Step 1 — Save a Report in the Dashboard

Before you can fetch data via API, you need a saved report:

  1. Go to Reports in the Zest dashboard.

  1. Create or open a report (Child Orders, Transactions, Taxes, Marketing, or Outstanding Inventory).

  1. Configure your columns, filters, and sort.

  1. Click Save as report and give it a name.

Tip: Reports with relative date filters (e.g., "Is in previous 30 days") stay current each time the API fetches data — you don't need to update filters manually.

Step 2 — Get the Report ID

Open your saved report in the dashboard. The report ID is the last segment of the URL: https://gifts.zest.co/partners/reports/{reportId}

Copy this ID for use in API requests.

Step 3 — Fetch the First Page

Request

POST /api/partners/report-data
Content-Type: application/json

Headers

Header

Value

x-api-key

your-api-key-here

Content-Type

application/json

Body

{
"reportId": "your-report-id",
"pageSize": 500
}

Parameter

Type

Required

Description

reportId

string

Yes

The ID of the saved report.

pageSize

number

No

Number of rows per page (1–1000). Defaults to 500.

cursor

string

No

Pagination cursor from a previous response. Omit for the first page.

Response

{
"data": [
{
"orderSubmittedDate": "2025-03-01T12:00:00.000Z",
"total": 49.99,
"reconciliationKey": "1234"
}
],
"nextCursor": "abc123"
}

Field

Type

Description

data

array

Array of row objects. Keys match the column IDs configured in your saved report.

nextCursor

string or null

Pass this value as cursor in the next request to fetch the next page. null means there are no more pages.

Step 4 — Paginate Through All Results

To fetch all rows, keep passing the nextCursor from each response as the cursor in the next request until nextCursor is null.

{
"reportId": "your-report-id",
"pageSize": 500,
"cursor": "abc123"
}

Error Handling

Status Code

Meaning

200

Success.

401

Unauthorized — invalid or missing API key.

404

Report not found — check the report ID and ensure the report belongs to your organization.

500

Internal server error — retry the request or contact support.

Frequently Asked Questions

Which report types can I access via API?

All report types are supported: Child Orders, Transactions, Taxes, Marketing, and Outstanding Inventory. Save any report in the dashboard and use its ID with the API.

Can I create or modify reports via API?

No. Reports must be created and configured in the Zest dashboard. The API is read-only — it fetches data from existing saved reports.

Do relative date filters work with the API?

Yes. If your saved report uses a relative date filter like "Is in previous 30 days," the API evaluates that filter at the time of each request. You don't need to update the report's filters.

Is there a rate limit?

Yes, requests are rate limited.

Did this answer your question?