> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.etals.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.etals.com/_mcp/server.

# Status codes and API info

Etals APIs use JSON for request and response bodies.

Send requests with:

```http
Content-Type: application/json
Accept: application/json
```

## Common status codes

| Status code                 | Meaning                                                                                  |
| --------------------------- | ---------------------------------------------------------------------------------------- |
| `200 OK`                    | The request was accepted and processed successfully.                                     |
| `400 Bad Request`           | The request body, mapping, or validation data is invalid.                                |
| `401 Unauthorized`          | The request is missing a valid API token.                                                |
| `403 Forbidden`             | The token or user does not have the required ability or permission.                      |
| `404 Not Found`             | The requested resource or endpoint could not be found, or the funnel is inactive.        |
| `422 Unprocessable Entity`  | The payload format is valid JSON, but the data does not match what the endpoint expects. |
| `500 Internal Server Error` | Etals could not complete the request because of an unexpected error.                     |

## Response format

Etals API responses use this structure:

```json
{
  "status": "success",
  "message": "Data received successfully."
}
```

When a request fails, the response includes `status`, `message`, and any relevant validation errors:

```json
{
  "status": "error",
  "message": "Validation failed for one or more items.",
  "errors": {
    "SKU-1001": {
      "Product Image": "The image must be a valid URL."
    }
  }
}
```

## Error handling

When integrating with Etals, handle errors based on the response status and message.

For batch operations, check whether the response contains item-level errors. Some endpoints can accept valid items while returning errors for invalid items, depending on the endpoint settings.