Marketplaces and jobs
Read the health of your marketplace connections and find out why a push failed, and follow the asynchronous jobs that endpoints hand back.
GET /api/marketplaces
Your active marketplace connections and the health of each. Needs MarketplacesRead.
This is the endpoint to call when a push did not do what you expected. It tells you whether the connection is working, and if not, what the marketplace said.
{
"Marketplaces": [
{
"MarketplaceId": "6a73...",
"Platform": "Amazon",
"Country": "UnitedKingdom",
"HealthStatus": "UnAuthorized",
"HealthStatusMessage": "The marketplace revoked our authorisation.",
"IsHealthy": false,
"RequiresReauthorization": true,
"LastPull": { "Status": "MarketplaceProductPullCompleted", "TotalSkus": 120, "CurrentSku": 120 }
}
]
}
RequiresReauthorization is the one failure retrying will never clear. Somebody has to reconnect the marketplace in the app. Every other unhealthy state is worth waiting out; this one needs a person. Treat the two differently or your integration will retry forever against a connection that is never coming back on its own.
Only active connections are listed. A connection the merchant has paused is omitted — a paused marketplace is not one to push to.
A connection that has never reported a state comes back with a null HealthStatus. That means "nothing known yet", not "broken".
GET /api/jobs/{id}
The state of one asynchronous job. Needs InventoryRead.
Anything that reaches a marketplace happens on our worker pipeline, so endpoints that trigger one hand you a job id instead of blocking. This is how you follow it.
{
"JobId": "6a73...",
"Type": "EbayInventorySubmit",
"Status": "InProcess",
"IsComplete": false,
"IsSuccessful": false,
"StartedAt": "2026-08-05T10:00:00Z",
"ProgressDone": 120,
"ProgressTotal": 400,
"RecoveryCount": 0
}
- Poll
IsComplete; decide onIsSuccessful. They are separate on purpose — a failed job is complete. Treating "finished" as "worked" is the mistake this shape exists to prevent. Statusis one ofNotStarted,Published(queued),InProcess,Completed,Failed,Cancelled.ProgressDoneandProgressTotalare null for jobs that do not count rows — absent means "does not report progress", not "zero done".RecoveryCountabove zero means the job was picked up again after a worker restarted. Not a failure, but worth knowing when one is slow.
Poll at a sensible interval — the rate limit applies here too. The failure reason is not returned; open the job in the app to read it.