agentlyleads docs
Offerings API

Errors

HTTP status codes

StatusMeaning
200All rows succeeded
207 Multi-StatusPartial success — at least one row failed; inspect results[].status and results[].error
400 Bad RequestInvalid request body — malformed JSON, empty products array, or more than 1,000 items
401 UnauthorizedMissing, malformed, or revoked API key

Request-level errors

When the whole request is rejected (before any rows are processed), the response body is:

{ "error": "<message>" }

Examples:

{ "error": "products must not be empty." }
{ "error": "Max 1000 products per request." }

These are returned with a 400 status.

Per-row validation errors (207)

A row that fails validation does not abort the batch. The failed row is skipped and reported in results with "status": "error" and a human-readable error string:

{
  "created": 2,
  "updated": 0,
  "errors": 1,
  "results": [
    { "index": 0, "status": "created", "id": "cmq1abc2def3ghi4jkl5" },
    { "index": 1, "status": "updated", "id": "cmq6mno7pqr8stu9vwx0" },
    {
      "index": 2,
      "status": "error",
      "error": "name: String must contain at least 1 character(s); price: Number must be greater than or equal to 0"
    }
  ]
}

The error string format is field: message for each failing validation, joined by ; . Field names match the Product object reference.

When the response status is 207, the rows that succeeded were still written to the database. Only rows listed with "status": "error" were skipped.

Limits

  • Max 1,000 products per request — enforced at the request level (400 if exceeded).
  • No per-key rate limit currently (planned for a future release).
  • Keep request payloads reasonable in size; a body-size cap is also on the roadmap.

On this page