Amazon Seller Central
Orders, sales, inventory, listings and returns
Authorization happens on Amazon's own Seller Central consent screen. SellerPort receives a scoped refresh token — never your Amazon password.
Connect your marketplaces once, then read every metric SellerPort holds through one consistent, workspace-scoped API. This page covers the connection flow, how requests are authenticated, and every endpoint available today.
The SellerPort API is the same interface the dashboard itself uses. Every response is scoped to a single workspace, so a request can only ever return data for the account you are signed in as.
Base URL for a production workspace:
https://dashboard.growithamazon.comBefore any endpoint returns data, the workspace needs at least one connected platform. Connection happens through the provider's own consent screen — SellerPort never asks for, stores or transmits your marketplace password.
The authorization flow can also be started directly. This redirects to the provider and returns to /<workspace>/settings?connected=<platform>:
GET /api/oauth/amazon/start?platform=amazon_sp_api
# platform: amazon_sp_api | amazon_ads | vendor_centralOrders, sales, inventory, listings and returns
Authorization happens on Amazon's own Seller Central consent screen. SellerPort receives a scoped refresh token — never your Amazon password.
Impressions, clicks, spend, ROAS and campaigns
Uses the Amazon Advertising OAuth flow. After consent you pick the advertising profile that matches your marketplace.
Purchase orders, retail analytics and invoices
Vendor accounts authorize through the Vendor SP-API. Both UAE and KSA accounts can be connected to one workspace.
Noon sales and advertising
Noon has no self-serve OAuth yet. Share a Drive folder containing the Noon exports, or contact SellerPort to finish setup.
Requests are authenticated with the gwa_session cookie issued at login. It is HttpOnly, SameSite=Lax, and secure in production. Send it with every request.
curl 'https://dashboard.growithamazon.com/api/dashboard?client=YOUR_WORKSPACE' \
-H 'Cookie: gwa_session=<your session cookie>'// Same-origin from inside the dashboard — the cookie is sent automatically
const res = await fetch('/api/dashboard?client=YOUR_WORKSPACE', {
credentials: 'include',
});
const data = await res.json();client that is not yours returns 403 Forbidden — there is no cross-workspace read.?client=<slug>.from and to are YYYY-MM-DD in Asia/Dubai (GST) — matching Amazon.ae, not IST or UTC. Use the same date in both for a single day.X-Data-Source header — mysql, file-cache, amazon-sp-api or stale-cache — so you can tell cached data from live.Cache-Control: private. Pass refresh=true to bypass it.Errors return a JSON body with a single error field and a matching status code.
{ "error": "Unauthorized" }| Status | Meaning | What to do |
|---|---|---|
400 | Missing or invalid parameter — often a missing client. | Check required query parameters. |
401 | No valid session cookie. | Sign in again and retry with the new cookie. |
403 | The requested workspace is not yours. | Use the slug your session belongs to. |
500 | Upstream source failed. A stale cached payload may be returned instead. | Retry; check X-Data-Source. |
The aggregate payload behind the Seller Central overview — orders, revenue and channel mix.
/api/dashboardCombined dashboard payload for a workspace and date range.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
refresh | boolean | Pass `true` to bypass the cache and re-read from the source. |
/api/historyHistorical daily series used for trend charts.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
/api/monthly-reportMonth-level rollup used by the Monthly Report view.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
Wholesale purchase orders, retail analytics, catalog and finance. Reads MySQL first and falls back to the Vendor SP-API bundle.
/api/vendor-central/dataFull Vendor Central bundle — POs, PO lines, catalog, sales, traffic, inventory and forecast.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
refresh | boolean | Re-read instead of serving cache. |
live | boolean | Force a live SP-API pull rather than MySQL. |
full | boolean | Include the slower report datasets. |
Returns `X-Data-Source` so you can tell a cached response from a live one.
/api/vendor-central/overview-kpisPO value, PO count, units and distinct ASINs for a range.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
/api/vendor-central/invoicesInvoices grouped from PO lines, with payment-status KPIs.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
status | all | paid | pending | Filter by payment status. |
/api/vendor-central/retail-analyticsSales, traffic, inventory and forecast datasets.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
daysBack | number | History window, 7–1095 days. |
includeForecast | boolean | Include the forecast dataset. |
/api/vendor-central/syncTrigger a live pull and persist it to MySQL.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
light | boolean | Skip the slow report datasets. |
ordersOnly | boolean | Purchase orders and PO lines only. |
retailOnly | boolean | Sales, traffic, inventory and forecast only. |
Excel-imported invoice, deduction and appointment columns are preserved on upsert.
Seller Central analytics, advertising and Buy Box intelligence.
/api/amazon-analyticsSales, traffic, listings and inventory from Seller Central.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
/api/amazon-adsImpressions, clicks, spend, ROAS and campaign performance.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
/api/buy-boxBuy Box ownership and competing offers by ASIN.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
/api/amazon-fba-returnsFBA customer returns with reasons.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
The non-Amazon channels, available once their source is connected.
/api/google-adsGoogle Ads spend, clicks and conversions.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
/api/google-analyticsGA4 sessions, users and ecommerce metrics.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
/api/google-search-consoleSearch Console queries, clicks and impressions.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
from | YYYY-MM-DD | Start of the range, in Asia/Dubai (GST). |
to | YYYY-MM-DD | End of the range, inclusive. |
/api/noon-drive-syncNoon.com sales and ads sourced from the connected Drive folder.
| Parameter | Type | Description |
|---|---|---|
clientrequired | string | Workspace slug. Must match the signed-in session, or the request is rejected with 403. |
Session state and the platforms a workspace has selected or connected.
/api/auth/sessionThe current session — workspace slug and display name.
/api/onboarding/platformsEvery platform in the catalog with its selected and connected state.
/api/onboarding/platformsSelect platforms, or add/remove one.
Body accepts `{ platforms: string[] }`, `{ add: string }` or `{ remove: string }`.
/api/oauth/amazon/startBegin the Amazon authorization flow and redirect to Amazon's consent screen.
| Parameter | Type | Description |
|---|---|---|
platformrequired | amazon_sp_api | amazon_ads | vendor_central | Which Amazon product to authorize. |
Scheduled sync routes under /api/cron/* are not session-authenticated. They use a shared secret, so they can be driven by an external scheduler.
curl -X GET 'https://dashboard.growithamazon.com/api/cron/vendor-central-sync' \
-H 'Authorization: Bearer $CRON_SECRET'CRON_SECRET like a password. Keep it in your scheduler's secret store — never in client-side code or a repository.Issued API keys, webhooks and custom exports are on the roadmap. Tell us what you are building and we will tell you where it fits.