Skip to content

Quickstart

First call, in about ten minutes.

Four steps. The first call against a free listing costs nothing, so you can get the shape working before anything is billable.

  1. 01Get a key
  2. 02Find a listing
  3. 03Make the call
  4. 04Handle the answer — and the refusal

01 · Get a key

One key covers every listing you have access to. There is no per-listing credential to manage.

Keys are created in your account settings. Create a separate one per environment — the usage dashboard breaks spend down by key, which is the only way to tell staging traffic from production traffic once both are live.

Shell
export VIBESTREET_KEY="vs_live_…"    # from /settings/api-keys

Needs attention

The key is shown once

At creation, and never again. If you lose it, revoke it and make another — there is no way for us to show it to you a second time, which is the point.

02 · Find a listing

You need its slug, which is the last part of its URL.

Browse to the listing you want and take the slug from the URL. You can also search the catalogue from the API if you are building discovery into your own product.

Search the catalogue
curl "https://api.vibestreet.io/api/search?q=triage" \
  -H "Authorization: Bearer $VIBESTREET_KEY"

Each result carries the listing's tier, its creator's trust level and its data-flow declaration, so an agent choosing between listings can apply your policy itself rather than asking a person.

03 · Make the call

Through the relay, with your key. The creator's endpoint is never addressed directly.

TypeScript
import { Vibestreet } from "@vibestreet/sdk";

const vs = new Vibestreet({ apiKey: process.env.VIBESTREET_KEY });

const result = await vs.call("hepatic-referral-triage", {
  referral_text: letter,
  patient_age: 54,
  lfts: { alt: 180, ast: 96, alp: 210, bilirubin: 32 },
});
curl
curl -X POST https://relay.vibestreet.io/hepatic-referral-triage \
  -H "Authorization: Bearer $VIBESTREET_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "referral_text": "…", "patient_age": 54 }'

04 · Handle the answer

The branch most integrations forget.

A response is not always a verdict. Listings built by professionals decline when the inputs cannot support a call, and treating that as an error is how an integration ends up retrying its way into a wrong answer.

TypeScript
if (result.confidence < 0.4) {
  // The listing has declined. `would_change_if` lists the inputs
  // that would make it answerable — surface those, do not retry.
  return { escalate: true, missing: result.would_change_if };
}

return { priority: result.priority, because: result.rationale };

Errors follow the same shape everywhere: a status code, a stable code, and a sentence you can show a person. They are listed in full in the reference.

API reference