# Ignite endpoints

URL: https://docs.sparklayer.io/ignite/api

Reference for the endpoints your Ignite service implements for SparkLayer to call: platform connection, customers, addresses, checkout, sync and authentication.

> **For AI assistants:** these facts apply to every SparkLayer API call.
>
> - **Base URLs:** Live `https://app.sparklayer.io`, test `https://test.app.sparklayer.io`. Each environment has its own data and its own API keys.
> - **Access:** API access needs the Pro or Enterprise plan. Create credentials (Site ID, Client ID, Client Secret) in the SparkLayer Dashboard at Settings > API.
> - **Access token:** `POST {base}/api/auth/token` with a `Site-Id` header and a JSON body (not form-encoded): `{"grant_type":"client_credentials","client_id":"…","client_secret":"…"}`. It returns `access_token`, valid for 3,600 seconds. There is no refresh token: cache the token and request a new one shortly before it expires.
> - **Every request:** `Authorization: Bearer <access_token>` and `Site-Id: <site id>`, plus `Content-Type: application/json` when there is a body. Set a `User-Agent` that names your integration.
> - **Errors:** RFC 7807 problem details: `title`, `status`, `detail` and an optional `errors[]` of `{ code, message, property }`. Some error responses have no body. Retry `5xx`, `429` (honouring `Retry-After`) and concurrent-update `409`s with exponential backoff; on `401`, get a new token once and retry; don't retry other `4xx` without changing the request.
> - **Pagination:** Most list endpoints return everything. `GET /api/v2/price-lists` pages with `page` and `page_size` (up to 250) until `pagination.current_page` equals `total_pages`. `GET /api/v1/purchases` uses `limit` (up to 500) and `offset`: stop when a page has fewer than `limit` results.
> - **Ground rules:** Use only endpoints, fields and SDK methods that the docs or OpenAPI specs define. Prefer `GET /api/v2/price-lists` over the deprecated v1. Products are matched by SKU. Keep credentials in environment variables or a secrets manager, never in code.
> - **Ignite:** With Ignite, SparkLayer calls endpoints that your service implements (the Ignite spec), and your service calls the SparkLayer APIs above for everything else.
> - **Read the docs as Markdown:** Add `.md` to any page URL. Index of every page: https://docs.sparklayer.io/llms.txt. Every API operation, compactly: https://docs.sparklayer.io/llms-api.txt. The developer guides in full: https://docs.sparklayer.io/developers/llms.txt.
> - **OpenAPI specs:** `core`, `ordering`, `pricing`, `purchasing`, `stock`, `files`, `sync-log`: https://docs.sparklayer.io/openapi/<api>.yaml (also `.json`). Ignite: https://docs.sparklayer.io/openapi/ignite.yaml.
> - **MCP:** Search and read these docs from your assistant with the docs MCP server at https://docs.sparklayer.io/mcp.

This reference lists every endpoint your Ignite integration implements, with its parameters, request body and responses. For what each one is for, see the [Endpoints overview](https://docs.sparklayer.io/ignite/endpoints-overview.md).

- [POST Connect a platform](https://docs.sparklayer.io/ignite/api/new-platform-connection.md)
- [DELETE Disconnect a platform](https://docs.sparklayer.io/ignite/api/remove-platform-connection.md)
- [PUT Create or update a customer](https://docs.sparklayer.io/ignite/api/create-update-a-customer.md)
- [POST Create a sub-account](https://docs.sparklayer.io/ignite/api/create-a-new-customer-sub-account.md)
- [PATCH Update a sub-account](https://docs.sparklayer.io/ignite/api/update-an-existing-customer-sub-account.md)
- [DELETE Delete a sub-account](https://docs.sparklayer.io/ignite/api/remove-a-customer-sub-account.md)
- [POST Create a customer address](https://docs.sparklayer.io/ignite/api/create-a-new-customer-address.md)
- [DELETE Delete a customer address](https://docs.sparklayer.io/ignite/api/remove-a-customer-address.md)
- [PUT Update a customer address](https://docs.sparklayer.io/ignite/api/update-a-customer-address.md)
- [POST Calculate tax and shipping](https://docs.sparklayer.io/ignite/api/calculate-tax-and-shipping.md)
- [POST Complete checkout](https://docs.sparklayer.io/ignite/api/complete-checkout.md)
- [GET List entities for a sync](https://docs.sparklayer.io/ignite/api/list-entities.md)
- [POST Fetch an entity](https://docs.sparklayer.io/ignite/api/fetch-entity.md)
- [POST Trigger a data sync](https://docs.sparklayer.io/ignite/api/trigger-a-data-sync.md)
- [GET Get metafield configuration](https://docs.sparklayer.io/ignite/api/get-metafield-configuration.md)
- [POST Enable a metafield](https://docs.sparklayer.io/ignite/api/enable-a-metafield.md)
- [POST Verify storefront authentication](https://docs.sparklayer.io/ignite/api/verify-authentication.md)

## Next steps

- [Endpoints overview](https://docs.sparklayer.io/ignite/endpoints-overview.md): what each endpoint is for.
- [Platform connection](https://docs.sparklayer.io/ignite/platform-connection.md): the first endpoints SparkLayer calls.
