Documentation navigation

Vamo API

Search GitHub developers by what they have actually built, resolve identities to full profiles, and enrich them with the signals you need. Every endpoint below documents its access requirements, credit cost, and rate limits alongside its schemas.

Building with an agent?

Copy one line into your coding agent. It fetches the setup prompt, connects to the Vamo MCP server, and asks you for a key when it needs one.

Start here

The Vamo API is the control plane for GitHub developer search and enrichment. Search for developers by what they have actually built, resolve GitHub or LinkedIn identities to full profiles, and enrich them with the signals you need.

Base URL

https://api.vamotalent.ai

Authentication

Every non-public endpoint takes a bearer credential:

Authorization: Bearer vamo_sk_...

API keys are prefixed vamo_sk_ and are scoped to one account. Mint and manage them with the Keys endpoints (POST /v1/keys, GET /v1/keys, revoke). Humans signed in to the Vamo app use session tokens over the same header; keys and sessions follow one usage model.

Status codes are precise: 401 no or invalid credential, 403 your role lacks the required entitlement, 402 your plan lacks the capability, 429 a rate limit or usage quota is exhausted.

Every error body carries a stable code, a human message, and, when the condition is self-clearable, a remedy pointing at the way out. Branch on code, never on the numeric status.

Rate limiting

Every endpoint declares its own fixed-window rate limit, scoped per account, per actor, or per IP. The exact limit and window are in the operation's x-vamo.rateLimit block. Exceeding a limit returns 429.

Versioning

The API is versioned in the path (/v1). Additive changes ship continuously and are not breaking: new endpoints, new optional request fields, and new response fields. Parse responses permissively and ignore fields you do not recognise.

openapi.json is generated from the API itself, so it cannot lag behind the behaviour. Diff it in CI and you will see any change to the surface the moment it ships.

Quickstart

Search for developers by what they have built. Describe the work in plain language and get back a page of matching developers, each with the proof behind the match.

curl -G https://api.vamotalent.ai/v1/developers/search \
  -H "Authorization: Bearer vamo_sk_..." \
  --data-urlencode "q=senior rust engineers working on distributed databases" \
  --data-urlencode "depth=core" \
  --data-urlencode "limit=10"

Advanced filters

Every filter is optional and free — filters narrow the ranked pool, they never change the price. The GitHub-native filters (lang, minCracked, orgs, subjects, techs, minStars, hideHighProfile, city, …) apply to the whole indexed population. The professional filters resolved from the LinkedIn overlay (titles, companySize, industries, peerCompanies, yoeMin/yoeMax, openToWork, experienceTier, state) only match the linked-profile minority we hold, so they narrow the page sharply — reach for them when resolved professional detail matters more than reach. See each parameter's description in openapi.json for its exact coverage.

curl -G https://api.vamotalent.ai/v1/developers/search \
  -H "Authorization: Bearer vamo_sk_..." \
  --data-urlencode "q=distributed systems engineers" \
  --data-urlencode "lang=go,rust" \
  --data-urlencode "titles=staff engineer,principal engineer" \
  --data-urlencode "companySize=51-200" \
  --data-urlencode "yoeMin=8" \
  --data-urlencode "openToWork=true" \
  --data-urlencode "city=san francisco,new york" \
  --data-urlencode "hideHighProfile=true" \
  --data-urlencode "depth=enriched"

Authentication

Every request is authenticated with an API key passed as a bearer token. Create a key from your workspace settings, then send it in the Authorization header:

-H 'Authorization: Bearer vamo_sk_YOUR_KEY'

See the authentication guide for scoping a key, what each refusal means, and signed requests.

Reference

Search

Developers

Developers

Resolve identifiers (handles, GitHub or LinkedIn URLs, names, repos) to developer profiles, and enrich those profiles with facets. Enrichment is available inline for cached values and as a durable report for values that must be computed.