API reference

    Briefs

    Intro notes: what a recruiter needs before the first message to one person.


    POST /v2/briefs

    Writes short intro notes on a single person from the public web: who they are now, what has changed for them lately, and what to open the conversation with. It is the step after you have found someone and before you contact them.

    Like an enrichment, a brief is the derived layer. It is written from public pages, it can be wrong, and it is not the board record. Read it before you rely on it.

    A brief runs live research, so creating one takes seconds rather than milliseconds, sometimes up to a minute. Create one for the people you are about to contact, not for every result.

    Create a brief

    Point at a license you already have:

    bash
    curl https://api.zuse.live/v2/briefs \
      -H "Authorization: Bearer $ZUSE_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: 2c9f6a3e-1d47-4b0a-8e55-7a1c4f0b9d21" \
      -d '{ "license_id": 48211 }'

    Or name the person yourself. The role and the employer make the brief sharper, so pass them when you know them, for example from an enrichment:

    bash
    curl https://api.zuse.live/v2/briefs \
      -H "Authorization: Bearer $ZUSE_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: 2c9f6a3e-1d47-4b0a-8e55-7a1c4f0b9d22" \
      -d '{ "first_name": "Jane", "last_name": "Doe", "city": "Los Angeles", "state": "CA",
            "title": "Veterinarian", "current_employer": "Example Animal Hospital" }'
    FieldTypeDescription
    license_idintegerThe id of a license from professionals or licenses. The name, locality, license number and license type are taken from the index.
    first_name, last_namestringRequired when license_id is not sent.
    city, statestringKnown locality. Strongly recommended when naming the person yourself: it keeps same-named people apart.
    titlestringRole or license type, such as Registered Veterinary Technician.
    current_employerstringWhere they work now, if you know it.
    license_number, license_statestringLicense details, when naming the person yourself.

    Any field you send alongside license_id overrides what the index holds.

    Send an Idempotency-Key. A brief costs real money each time it runs, and with a key a retry returns the first brief and is not charged again. See Idempotency.

    Response

    201 Created, with a Location header pointing at the stored brief.

    json
    {
      "data": {
        "id": "brf_6f0c1d2e3a4b4c5d8e9f0a1b2c3d4e5f",
        "license_id": 48211,
        "status": "completed",
        "matched": true,
        "summary": "Associate veterinarian at a 24-hour hospital with an emergency and critical-care caseload.",
        "overview": {
          "employer": "Example Animal Hospital, a 24-hour hospital",
          "focus": "Emergency and critical care, small animal",
          "setting": "Urban ER, recently corporate-owned"
        },
        "triggers": [
          { "date": "June 2026", "text": "The hospital was acquired by a corporate group." },
          { "date": "March 2026", "text": "Completed a continuing-education track in emergency ultrasound." }
        ],
        "talking_points": [
          "Ask how scheduling has changed since the acquisition.",
          "Lead with the caseload, not the title."
        ],
        "sources": ["https://example.org/team", "https://example.com/news/acquisition"],
        "layer": "derived"
      },
      "billing": { "operation": "brief", "cost_usd": 0.25, "credit_remaining_usd": 9.75 }
    }
    FieldMeaning
    idIdentifies this brief. Use it to fetch the brief again.
    matchedtrue when there was enough on the public web to write a brief. When false, the other fields are empty and the request is free.
    summaryOne sentence on the person's role and likely priorities.
    overviewShort notes on their employer, clinical focus and practice setting. A key is left out when nothing was found for it.
    triggersRecent changes that make a reach-out timely, each with a date written as a month and year. The date is text, not an ISO date, and can be null.
    talking_pointsSuggested openers for a first message, drawn from the triggers and background.
    sourcesThe pages the research drew on.
    layerAlways derived.

    The suggestions are a starting point for a person to edit, not a script. You are the sender of anything you write from them, and the laws on commercial email and calls apply to you.

    Get a brief

    GET /v2/briefs/{id}

    Returns the stored brief, in the same shape, for 24 hours after it was written. Free. After 24 hours the id returns 404.

    The notes themselves stay on your team's records. Ask for the same person again and they are returned from there: from_records is true, written_at says when they were written, and nothing is charged. Send "refresh": true to have new ones written, at the usual price.

    Billing

    Intro notes are their own operation (brief in billing and usage): $0.25 when matched is true, free when there was not enough to write one, free when the research itself fails (502 or 503), and free when your team already has notes for the person (from_records is true). The limit is 10 a minute and 100 a day, counting misses, separate from Background's. See Rate limits.

    Background and Intro notes are separate requests. Running both for one person costs $0.50.

    Errors

    StatusCodeWhen
    400invalid_requestNeither license_id nor a first and last name was sent.
    403enrichment_unavailableThe person has asked not to be researched. Nothing ran and nothing was charged. See Enrichments.
    404not_foundlicense_id does not exist, or belongs to a practice.
    409idempotency_key_reusedThe Idempotency-Key was already used with a different body.
    409request_in_progressThe first request with this key is still running. Retry after a couple of seconds.
    502provider_errorThe research provider returned an error. Retry with back-off, using the same key.
    503unavailableResearch is temporarily unavailable.