ZalesMachine API · Developers

Read ZalesMachine like a machine.

A public, read-only API with the same data the site renders, an OpenAPI 3.1 spec, every page available as Markdown, and a company summary for agents. No API key, no sandbox: everything here is public and safe to call.

Quickstart

Three requests and you know what ZalesMachine is, what it costs and what it has delivered.

curl -sS https://www.zalesmachine.com/api/v1/company
curl -sS "https://www.zalesmachine.com/api/v1/case-studies?service=outbound&lang=es"
curl -sS -H "Accept: text/markdown" https://www.zalesmachine.com/

Endpoints

Base URL: https://www.zalesmachine.com

Every endpoint accepts ?lang=en|es. Default is English.

GET /api/v1/companyCompany profile, when-to-use guidance, operating modes and contact channels. Call this first.
GET /api/v1/solutionsThe four solutions with modules, process stages, pricing plans and FAQs.
GET /api/v1/solutions/{slug}One solution: outbound, content, ai-agents or gtm-os.
GET /api/v1/case-studiesThe 15 documented results. Filter with ?service=outbound|content|agents.
GET /api/v1/case-studies/{slug}One case study with KPIs, narrative and testimonial.

OpenAPI 3.1: https://www.zalesmachine.com/openapi.json

Errors

Every error under /api is JSON with the same shape, including unknown paths (404) and unsupported methods (405). No HTML is ever returned under /api.

{
  "error": {
    "code": "not_found",
    "message": "Case study \"acme\" was not found.",
    "hint": "Valid slugs: aon, visma, thomson-reuters, ... List them at /api/v1/case-studies.",
    "status": 404,
    "docs": "https://www.zalesmachine.com/developers"
  }
}

Pages as Markdown

Send Accept: text/markdown to any page of the site and you get the same content as Markdown, with Content-Type: text/markdown and Vary: Accept. Unknown paths return a 404 with a Markdown body that points to the sitemap and llms.txt.

curl -sS -i -H "Accept: text/markdown" https://www.zalesmachine.com/es/casos/mendel

Machine-readable files

  • openapi.json

    OpenAPI 3.1 spec of the public API. Also at /api/openapi.json.

  • .well-known/api-catalog

    API catalog (RFC 9727): where the spec, the docs and the policy live, as a Linkset.

  • llms.txt

    Company summary for LLMs: when to use ZalesMachine, pricing, modules, case studies, articles.

  • sitemap.xml

    Every indexable page in both languages.

  • brand-system.html

    Design tokens as JSON, voice rules and claims with validity dates.

Rate limits

60 requests per minute per client IP. Every response carries the IETF RateLimit headers, in the current structured form (RateLimit-Policy, RateLimit) and in the earlier integer form (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset). Over the limit you get a 429 with a JSON error and Retry-After in seconds: wait that long and retry. Successful responses are cacheable for 5 minutes.

HTTP/2 200
RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=59;t=60
RateLimit-Limit: 60
RateLimit-Remaining: 59
RateLimit-Reset: 60
API-Version: 1
Link: <https://www.zalesmachine.com/developers#versioning>; rel="deprecation"; type="text/html"

HTTP/2 429
Retry-After: 42
{ "error": { "code": "rate_limited", "message": "Too many requests.", ... } }

Versioning and deprecation

The version is in the path (/api/v1) and in the API-Version response header. v1 is the current version and is not deprecated.

Within a version, only backward-compatible changes ship: new fields and new endpoints. A field is never removed, renamed or retyped inside a version. A breaking change is a new version (/api/v2).

A deprecated version keeps answering for at least 6 months after the announcement. From that day on, every response of that version carries a Deprecation header (RFC 9745) with the deprecation date and a Sunset header (RFC 8594) with the shutdown date, and the change is announced here and in llms.txt.

Every response already includes Link: <https://www.zalesmachine.com/developers#versioning>; rel="deprecation", so an agent knows where to look before it matters.

Terms

Prices and figures carry an as-of date and are updated with the site. There are no write endpoints: hiring, booking a call or sending data goes through a person.

Need something the API does not expose (a webhook, an MCP server, write access for a client integration)? Write to nfrancese@zalesmachine.com.