# Keybase Identity API
> Live cryptographic social-identity lookup from Keybase — no key, nothing cached. Keybase links a person's identities together with public-key cryptography, so this answers "who is this account, really, and what else are they?". The user endpoint takes a Keybase username and returns the profile (full name, location, bio, picture), every verified identity proof — the Twitter, GitHub, Reddit, Hacker News, Mastodon, website and DNS accounts that user has cryptographically proven are theirs — plus their on-file cryptocurrency addresses (Bitcoin, Zcash and more) and PGP key fingerprint: Keybase user "chris" resolves to Chris Coyne in Maine, with proven twitter/github/reddit @malgorithms and a Bitcoin address. The lookup endpoint runs the reverse — give it a GitHub, Twitter, Reddit or Hacker News handle, a domain or a PGP fingerprint and it finds the Keybase user who proved it, so a bare GitHub handle resolves to a full verified identity. The proofs endpoint returns just the connected-accounts graph and crypto addresses. This is the identity-verification and social-graph layer for any trust, onboarding, anti-impersonation, social or crypto app — proven links, not claimed ones. Live from Keybase, nothing stored. Distinct from single-platform profile APIs — this is the cross-platform proven-identity graph. 4 endpoints.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/keybase-api/..."
```

## Pricing
- **Free** (Free) — 13,000 calls/Mo, 3 req/s
- **Starter** ($6/Mo) — 160,000 calls/Mo, 8 req/s
- **Pro** ($16/Mo) — 680,000 calls/Mo, 15 req/s
- **Scale** ($38/Mo) — 3,400,000 calls/Mo, 30 req/s

## Endpoints

### Identity

#### `GET /v1/lookup` — Reverse: find user by identity

**Parameters:**
- `network` (query, required, string) — twitter|github|reddit|hackernews|mastodon|domain|pgp Example: `github`
- `value` (query, required, string) — The handle/domain/fingerprint Example: `malgorithms`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/keybase-api/v1/lookup?network=github&value=malgorithms"
```

**Response:**
```json
{
    "data": {
        "count": 1,
        "query": {
            "value": "malgorithms",
            "network": "github"
        },
        "matches": [
            {
                "uid": "23260c2ce19420f97b58d7d95b68ca00",
                "proofs": [
                    {
                        "url": "https://twitter.com/malgorithms",
                        "name": "malgorithms",
                        "state": 1,
                        "network": "twitter"
                    },
                    {
                        "url": "https://github.com/malgorithms",
                        "name": "malgorithms",
                        "state": 1,
                        "network": "github"
                    },
                    {
                        "url": "https://reddit.com/user/malgorithms",
                        "name": "malgorithms",
                        "state": 1,
                        "network": "reddit"
                    },
                    {
                        "url": "https://news.ycombinator.com/user?id=malgorithms",
                        "name": "malgorithms",
                        "state": 1,
                        "network": "hackernews"
                    },
                    {
                        "url": "http://chriscoyne.com",
                        "name": "chriscoyne.com",
                        "state": 1,
                        "network": "dns"
                    },
                    {
                 
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/proofs` — Connected-accounts graph

**Parameters:**
- `username` (query, required, string) — Keybase username Example: `chris`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/keybase-api/v1/proofs?username=chris"
```

**Response:**
```json
{
    "data": {
        "count": 6,
        "proofs": [
            {
                "url": "https://twitter.com/malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "twitter"
            },
            {
                "url": "https://github.com/malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "github"
            },
            {
                "url": "https://reddit.com/user/malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "reddit"
            },
            {
                "url": "https://news.ycombinator.com/user?id=malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "hackernews"
            },
            {
                "url": "http://chriscoyne.com",
                "name": "chriscoyne.com",
                "state": 1,
                "network": "dns"
            },
            {
                "url": "https://chriscoyne.com",
                "name": "chriscoyne.com",
                "state": 1,
                "network": "generic_web_site"
            }
        ],
        "username": "chris",
        "crypto_addresses": [
            {
                "type": "bitcoin",
                "address": "3LKaAcHgUja3B3ZwfJjxVdqWbxd71pE6NK"
            },
            {
                "type": "zcash",
                "address": "t1KiyNNYFy7jE
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/user` — Full Keybase identity

**Parameters:**
- `username` (query, required, string) — Keybase username Example: `chris`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/keybase-api/v1/user?username=chris"
```

**Response:**
```json
{
    "data": {
        "bio": "Previously worked on 🔐 Keybase, 😻OkCupid, 📘SparkNotes, and some random other junk. I love making things.",
        "uid": "23260c2ce19420f97b58d7d95b68ca00",
        "proofs": [
            {
                "url": "https://twitter.com/malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "twitter"
            },
            {
                "url": "https://github.com/malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "github"
            },
            {
                "url": "https://reddit.com/user/malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "reddit"
            },
            {
                "url": "https://news.ycombinator.com/user?id=malgorithms",
                "name": "malgorithms",
                "state": 1,
                "network": "hackernews"
            },
            {
                "url": "http://chriscoyne.com",
                "name": "chriscoyne.com",
                "state": 1,
                "network": "dns"
            },
            {
                "url": "https://chriscoyne.com",
                "name": "chriscoyne.com",
                "state": 1,
                "network": "generic_web_site"
            }
        ],
        "picture": "https://s3.amazonaws.com/keybase_processed_uploads/4c7cff041ee54c71fd25595898133505_360_360.
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/keybase-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "source": "Keybase public API (live)",
        "service": "keybase-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/user": "A Keybase user's full identity (username=chris): profile, proofs, crypto addresses, PGP.",
            "GET /v1/lookup": "Reverse: find the Keybase user behind an identity (network=github&value=malgorithms, or github=malgorithms). Networks: twitter, github, reddit, hackernews, mastodon, domain, pgp.",
            "GET /v1/proofs": "Just the connected-accounts graph + crypto addresses (username=chris)."
        },
        "description": "Live cryptographic social-identity lookup from Keybase: a username resolves to its profile (full name, location, bio, picture), every verified identity proof (Twitter, GitHub, Reddit, Hacker News, Mastodon, website, DNS), cryptocurrency addresses and PGP fingerprint. Reverse-lookup finds the Keybase user behind a GitHub/Twitter/Reddit/Hacker-News handle, a domain or a PGP fingerprint. Live, no key, nothing stored. Distinct from single-platform profile APIs — this is the cross-platform proven-identity graph.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:56.894Z",
        "request_id": "d75431b7-4636-46a9-8daa-13c5b4e16a95"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/keybase-api
OpenAPI spec: https://www.oanor.com/api/keybase-api/openapi.json
