Zapiet developer resources

Zapiet builds Shopify apps for local delivery, store pickup (click & collect and BOPIS), curbside pickup, delivery rate control and restaurant ordering. This page lists every API, specification and machine-readable file Zapiet publishes, at a stable URL, so a developer or an AI agent can find them by name rather than by crawling.

Product APIs

The APIs you integrate against when you are building on top of a Zapiet app.

Zapiet Widget API JavaScript, reference docs
The in-storefront API for the Zapiet Pickup + Delivery widget. Read and set the selected pickup location, delivery date and time slot, listen for checkout events, and drive the widget from your own theme code. This is the API most Shopify developers integrating Zapiet need.
Zapiet Last Mile Delivery API REST, partner programme
For courier and last-mile delivery providers: connect your delivery service to the thousands of Shopify merchants running Zapiet, so merchants can dispatch to you from inside their store. Partner onboarding is handled by the Zapiet team.

Website API

The public HTTP endpoints on zapiet.com itself.

OpenAPI specification OpenAPI 3.1, JSON
The complete description of the public endpoints on zapiet.com: the contact-form and newsletter-signup operations, their typed request fields, every response schema, the error shape, and the rate-limit and version headers. Each operation has a unique operationId and a description, so it can be consumed by codegen or by an agent without any accompanying prose.
API catalogue RFC 9727 linkset, JSON
The discovery document for everything above, published as an RFC 9264 linkset. Start here if you are crawling rather than reading: it links each endpoint to its documentation and its machine-readable description.

For AI agents

Zapiet publishes its catalogue, pricing and content in formats an agent can consume directly, so nothing needs to be scraped out of a marketing page.

MCP server Model Context Protocol, Streamable HTTP
A read-only MCP server exposing Zapiet's app catalogue, published pricing and site content as tools any MCP client can call: list_zapiet_apps, get_zapiet_app_pricing and search_zapiet_content. No authentication and no account needed. POST JSON-RPC 2.0 to this URL; there is no server-initiated SSE stream, so a GET answers 405 by design.
MCP manifest JSON
Discovery manifest for the MCP server: transport, endpoint URL, authentication, the tools on offer, and explicit when-to-use and when-not-to-use guidance. Wire up the server from this file without a human pasting a URL.
llms.txt Markdown, text/plain
The curated index of what Zapiet publishes, in the llmstxt.org format: every app, the case studies, the latest posts, the industries served, common questions, courier integrations, and a when-to-use section describing the jobs Zapiet is the right answer for.
llms-full.txt Markdown, text/plain
The same index, unabridged: every published page rather than a curated selection, plus the technical detail on checkout integration, theme compatibility and language support.
Markdown for any page text/markdown
Append .md to any page URL on this site to get that page as Markdown instead of HTML — for example /blog/how-to-set-up-bopis-shopify-store.md. Useful for reading a page without parsing the markup around it.
sitemap.xml XML
Every indexable URL on zapiet.com, with language alternates and last-modified dates.

Versioning and deprecation policy

Versioning is by URL path: https://zapiet.com/api/v1/<endpoint>. A backwards-incompatible change to a request or response shape ships as a new prefix — /api/v2/ — and never mutates a version already in use. Additive changes (a new optional field, a new error code, a new endpoint) can land within a version, so clients must ignore response fields they do not recognise rather than fail on them.

The unversioned paths — /api/contact-form and /api/newsletter-signup — are what the forms on this website post to. They keep working, but only the versioned paths carry the promise above. Build against /api/v1/.

How a retirement is signalled

Deprecation is announced on the responses themselves, following RFC 8594 and RFC 9745, so a client discovers it without reading this page:

  • Deprecation appears as soon as a version is deprecated.
  • Sunset gives the date after which the version stops responding.
  • Link: <…>; rel="successor-version" points at the replacement.

A deprecated version keeps responding for at least 12 months after the Deprecation header first appears. No version has been deprecated to date, so no live response carries these headers today.

Rate limits

30 requests per 60 seconds per client IP, counted per endpoint. Every response — successful or not — carries the current state, so a client can pace itself rather than discover the ceiling by hitting it:

  • RateLimit — combined state, e.g. limit=30, remaining=29, reset=60
  • RateLimit-Policy — the advertised policy, 30;w=60
  • RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset — the same values as discrete headers, for clients that read those instead.
  • Retry-After — added on a 429, in seconds.

Read RateLimit-Remaining and slow down before it reaches zero. Retrying straight into a 429 wastes both our budgets.

Error responses

Every failure on an /api path returns RFC 7807 Problem Details as JSON, never an HTML error page — including a 404 for a path that does not exist and a 405 for the wrong verb. Branch on code, which is stable; title, detail and hint are for humans and may change. Each type URI resolves to a description of that problem class.

{
  "type": "https://zapiet.com/problems/validation_error",
  "title": "Validation Error",
  "status": 400,
  "detail": "Email address is required",
  "code": "validation_error",
  "hint": "Include a non-empty email field.",
  "error": "Email address is required",
  "success": false
}

The code values are enumerated in the OpenAPI spec. The top-level error string duplicates detail and exists only for older clients.

Webhooks

The endpoints on this website do not emit webhooks. Order and fulfilment webhooks for a merchant's store are configured inside the Zapiet app and documented alongside the Widget API. Courier partners receiving dispatch callbacks should start from the Last Mile Delivery API.

Getting help

Integration questions go to the Zapiet Help Centre, or reach the team through the contact page. Pricing for every app is listed on the pricing page.