Skip to main content

Data exports

Exports are background file-generation requests, not paginated file downloads. Each POST /v1/export/... operation takes its own query filters and returns { "success": true } when work has been requested. The file, or a failure notice, is sent by email to the requesting account. The signed download link lasts one hour. Do not treat the HTTP acknowledgement as proof that file generation or delivery finished.

Plan an export​

  1. Pick the dataset below. The read endpoint is useful for checking filters and a sample of records; its filter schema is not automatically identical to the export's.
  2. Choose a narrow brand, channel, status, or date window where the export supports it. Check whether the requested scope is within your access.
  3. Send the export request with query parameters, even though the method is POST. Store the request filters and time in your own job record.
  4. Wait for the completion or failure email. A successful HTTP response confirms the request, not the file. Save the file before its link expires and inspect its row count against the scope you asked for.

Choose the dataset​

Data you needExport operationFormatRelated API read
Orders and parcelsOrdersCSVOrder directory
Return requestsReturnsCSVReturns queue
Channel listingsListingsCSVCatalog
Brand productsProductsCSVCatalog
Product × destination forecastInventory planningCSVForecast
Sales aggregatesReportsXLSXOverview
Two sales periodsPeriod comparisonXLSXPeriod comparison
Vendor PO headers or linesPurchase orders · line itemsCSVVendor POs
Settlement statementsSettlementsCSVSettlements
Financial ledger rowsProfitability transactionsCSVTransactions

Use the export operation's filter schema. A corresponding page read can have different filters or defaults; POST does not imply a JSON body here. For example, a reports export requires its date window in the query. An inventory-planning export produces one row per SKU and destination, which is different from the forecast's grouped product response. The products CSV has dynamic status, price, and inventory columns for channels present in the exported data; do not assume every file has identical columns.

curl -X POST --get 'https://backend.nasam.co/v1/export/reports' \
--data-urlencode 'startDate=2026-09-01' \
--data-urlencode 'endDate=2026-09-30' \
-H 'key: YOUR_API_KEY'

Inventory-planning, settlement, and profitability-transaction exports cap their output at 100,000 rows. If a scope is larger, narrow its brand or date filters to avoid an incomplete file. Repeating a request can generate another email and link, so record the acknowledgement in your own workflow before retrying.

For purchase orders, use the header export for one row per PO and the line-items export for product-level reconciliation. Both accept brandIds, saleChannelIds, and statuses as comma-separated query values, plus optional startDate and endDate. For period comparison, supply both complete date windows (p1StartDate, p1EndDate, p2StartDate, p2EndDate); a single reports window is not interchangeable. When a file seems incomplete, check filters, record count in the delivery email, and the operation's row limit before requesting it again.