API documentation

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.

Introduction

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.

This is a workspace API, not a public API-key product. Requests are authenticated with your dashboard session. If you need machine-to-machine access with issued keys, talk to us — it is not self-serve yet.

Base URL for a production workspace:

Base URL
https://dashboard.growithamazon.com

Connecting a source

Before 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.

  1. 1
    Pick your platforms. At signup, or later from Connections & Settings, select the channels you sell on. Only selected platforms appear in your workspace.
  2. 2
    Authorize. Press Authorize & connect on a platform card. You are redirected to the provider, you approve, and you land back on your settings page with that card marked Connected.
  3. 3
    Wait for the first sync. The initial pull backfills history; afterwards data refreshes on a schedule with on-demand refresh available.

The authorization flow can also be started directly. This redirects to the provider and returns to /<workspace>/settings?connected=<platform>:

Start authorization
GET /api/oauth/amazon/start?platform=amazon_sp_api

# platform: amazon_sp_api | amazon_ads | vendor_central

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.

Amazon Ads

Impressions, clicks, spend, ROAS and campaigns

Uses the Amazon Advertising OAuth flow. After consent you pick the advertising profile that matches your marketplace.

Amazon Vendor Central

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.com

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.

Authentication

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
curl 'https://dashboard.growithamazon.com/api/dashboard?client=YOUR_WORKSPACE' \
  -H 'Cookie: gwa_session=<your session cookie>'
JavaScript
// 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();
A session only ever resolves to one workspace. Passing a client that is not yours returns 403 Forbidden — there is no cross-workspace read.

Conventions

  • Workspace scope. Most endpoints require ?client=<slug>.
  • Dates. 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.
  • Freshness. Responses carry an X-Data-Source header — mysql, file-cache, amazon-sp-api or stale-cache — so you can tell cached data from live.
  • Caching. Read endpoints send Cache-Control: private. Pass refresh=true to bypass it.

Errors

Errors return a JSON body with a single error field and a matching status code.

Error shape
{ "error": "Unauthorized" }
StatusMeaningWhat to do
400Missing or invalid parameter — often a missing client.Check required query parameters.
401No valid session cookie.Sign in again and retry with the new cookie.
403The requested workspace is not yours.Use the slug your session belongs to.
500Upstream source failed. A stale cached payload may be returned instead.Retry; check X-Data-Source.

Dashboard

The aggregate payload behind the Seller Central overview — orders, revenue and channel mix.

GET/api/dashboard

Combined dashboard payload for a workspace and date range.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
refreshbooleanPass `true` to bypass the cache and re-read from the source.
GET/api/history

Historical daily series used for trend charts.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
GET/api/monthly-report

Month-level rollup used by the Monthly Report view.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.

Vendor Central

Wholesale purchase orders, retail analytics, catalog and finance. Reads MySQL first and falls back to the Vendor SP-API bundle.

GET/api/vendor-central/data

Full Vendor Central bundle — POs, PO lines, catalog, sales, traffic, inventory and forecast.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
refreshbooleanRe-read instead of serving cache.
livebooleanForce a live SP-API pull rather than MySQL.
fullbooleanInclude the slower report datasets.

Returns `X-Data-Source` so you can tell a cached response from a live one.

GET/api/vendor-central/overview-kpis

PO value, PO count, units and distinct ASINs for a range.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
GET/api/vendor-central/invoices

Invoices grouped from PO lines, with payment-status KPIs.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
statusall | paid | pendingFilter by payment status.
GET/api/vendor-central/retail-analytics

Sales, traffic, inventory and forecast datasets.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
daysBacknumberHistory window, 7–1095 days.
includeForecastbooleanInclude the forecast dataset.
POST/api/vendor-central/sync

Trigger a live pull and persist it to MySQL.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
lightbooleanSkip the slow report datasets.
ordersOnlybooleanPurchase orders and PO lines only.
retailOnlybooleanSales, traffic, inventory and forecast only.

Excel-imported invoice, deduction and appointment columns are preserved on upsert.

Amazon

Seller Central analytics, advertising and Buy Box intelligence.

GET/api/amazon-analytics

Sales, traffic, listings and inventory from Seller Central.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
GET/api/amazon-ads

Impressions, clicks, spend, ROAS and campaign performance.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
GET/api/buy-box

Buy Box ownership and competing offers by ASIN.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
GET/api/amazon-fba-returns

FBA customer returns with reasons.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.

Google & Noon

The non-Amazon channels, available once their source is connected.

GET/api/google-ads

Google Ads spend, clicks and conversions.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
GET/api/google-analytics

GA4 sessions, users and ecommerce metrics.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
GET/api/google-search-console

Search Console queries, clicks and impressions.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.
fromYYYY-MM-DDStart of the range, in Asia/Dubai (GST).
toYYYY-MM-DDEnd of the range, inclusive.
GET/api/noon-drive-sync

Noon.com sales and ads sourced from the connected Drive folder.

ParameterTypeDescription
clientrequiredstringWorkspace slug. Must match the signed-in session, or the request is rejected with 403.

Workspace & connections

Session state and the platforms a workspace has selected or connected.

GET/api/auth/session

The current session — workspace slug and display name.

GET/api/onboarding/platforms

Every platform in the catalog with its selected and connected state.

POST/api/onboarding/platforms

Select platforms, or add/remove one.

Body accepts `{ platforms: string[] }`, `{ add: string }` or `{ remove: string }`.

GET/api/oauth/amazon/start

Begin the Amazon authorization flow and redirect to Amazon's consent screen.

ParameterTypeDescription
platformrequiredamazon_sp_api | amazon_ads | vendor_centralWhich Amazon product to authorize.

Automation

Scheduled sync routes under /api/cron/* are not session-authenticated. They use a shared secret, so they can be driven by an external scheduler.

Scheduled sync
curl -X GET 'https://dashboard.growithamazon.com/api/cron/vendor-central-sync' \
  -H 'Authorization: Bearer $CRON_SECRET'
Treat CRON_SECRET like a password. Keep it in your scheduler's secret store — never in client-side code or a repository.

Need something this API does not cover?

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.

Book a 15-min call (opens the scheduler in a new tab)