Vamo
Semantic search over 27 million GitHub developers, matched on what they have actually built. One endpoint, one bearer key, JSON in and out.
Base URL https://search.vamotalent.ai
Step 1
Keys are invite-only during the pilot. Paste the code we sent you and we will mint one immediately.
Save this now. It is shown once and cannot be recovered.
Step 2
Every search sends your key as a bearer token.
curl -s https://search.vamotalent.ai/v1/search \
-H "Authorization: Bearer $VAMO_KEY" \
-H "content-type: application/json" \
-d '{"query":"rust compiler and LLVM backend engineers","languages":["Rust"],"limit":10}'
limit: 10 that returns 10 developers costs 10. Every response carries quota so you can self-throttle without a second call. Rate limit is 30 searches a minute.
401 the key is missing, wrong or revoked. 402 the allowance is spent — talk to us about a plan. 429 slow down. 502 search was briefly unavailable, and it cost you nothing.
Reference
| Field | Type | Notes |
|---|---|---|
query | string | Required. Plain language. Matched semantically against what people have built. |
languages | string[] | Up to 10, e.g. ["Rust","C++"]. |
locations | string[] | Up to 10. Matched against self-reported GitHub location, which is often stale or blank. |
minStars | int | null | Minimum stars across their repositories. |
limit | int | 1–50, default 25. This is also what the page costs you. |
cursor | string | null | From the previous response. Opaque — do not construct or parse. |
| Field | Notes |
|---|---|
results[] | id, login, name, avatarUrl, githubUrl, bio, company, location, hasEmail, followers, totalStars, languages, topRepos, matchedRepos |
matchedRepos | Why this person matched: the repositories that drove it. |
hasEmail | Whether we hold an address. The address itself is never returned by this API. |
cursor | null means there is nothing more on this lane. |
unsupported | Any filter that did not bind, named. Empty is the normal case. |
countStatus | exact, or short with a reason. A short page is declared, never padded. |
quota | { limit, used } in profile rows. |
Step 3