Concepts

    Versioning

    How the API changes over time, and what counts as a breaking change.


    The version is in the path

    The API version is part of the URL: https://api.zuse.live/v2/.... A version is stable: a request that works against a version today keeps working against it.

    VersionStatusStyle
    v2Current.Resources: GET /v2/professionals, GET /v2/licenses, POST /v2/enrichments.
    v1Retired on October 5, 2026.Operations: POST /v1/verify, POST /v1/source, POST /v1/enrich.

    Any request to a /v1 path is answered with 410 and the code version_retired. v1 was an early-access version that was withdrawn within days of v2 shipping, before general availability.

    Moving a v1 request to v2

    v1v2
    POST /v1/verifyGET /v2/licenses
    POST /v1/sourceGET /v2/professionals, or GET /v2/practices for profession: "premises"
    POST /v1/enrichPOST /v2/enrichments

    What is different in v2: reads are GET with query parameters instead of POST with a body; every response uses one envelope (data, pagination, meta, billing); errors are { "error": { "code", "message", "request_id" } }; dates are ISO 8601 (2027-08-31); and the filter practice_type is named specialty_type.

    One name for each operation, everywhere

    Each operation has one name people see, one operation in billing and usage, and the same price on every channel.

    NameoperationRESTMCP toolSlack
    NearbysourceGET /v2/professionals, GET /v2/practicessource_professionalsnearby 90013 techs
    License checkverifyGET /v2/licenses, /v2/licenses/{id}, /v2/people/{id}, /v2/clinics/{ref}verify_license, get_cliniccheck Jane Doe CA
    BackgroundenrichPOST /v2/enrichmentsenrich_personbackground 3
    Intro notesbriefPOST /v2/briefsresearch_briefintro 3
    Web searchwebPOST /v2/web-searchesfind_people_on_webnearby 85281 groomers, web
    ContactcontactPOST /v2/contactsfind_contactcontact 3
    Nearby clinicsclinicsGET /v2/clinicsfind_clinicsclinics 85004 emergency
    Clinic researchclinic_researchPOST /v2/clinic-researchresearch_clinicresearch 2

    Changes that do not need a new version

    These can ship to an existing version at any time. Write clients that tolerate them:

    • New endpoints.
    • New optional request parameters.
    • New fields in a response.
    • New values in an open-ended list, such as a new entry in red_flags, a new specialty type, or a new error code.
    • New MCP tools.

    In practice: ignore response fields you do not recognize, do not fail on an unfamiliar red_flags value, and treat an unknown error code by its HTTP status.

    Changes that do need a new version

    These are breaking and ship only under a new path:

    • Removing or renaming an endpoint, a parameter, or a response field.
    • Changing the type or meaning of an existing field.
    • Adding a required parameter.
    • Changing what an outcome value means.

    Retiring a version

    v2 is not scheduled for retirement. From v2 on, a version is retired only after it is announced in the changelog, and its responses carry Deprecation and Sunset headers from that announcement until the day it stops answering.

    Data is not versioned

    The index itself changes continuously as boards are re-ingested and jurisdictions are added. A response can therefore differ from one day to the next for the same request. That is the data changing, not the API.

    MCP

    The MCP server reports its own version in serverInfo during initialize, and negotiates the protocol version with the client. Tool arguments follow the same compatibility rules as request parameters.