Overview
Calls
- •signup
- •getsalt
- •login
- cors•user/lookup
- cors•<user>/pgp_keys.asc
- •key/add
- •key/fetch
- •session/killall
- •sig/next_seqno
- •sig/post
- •sig/post_auth
- cors•merkle/root
- cors•merkle/block
Other details
user/lookup
CORS Support | Yes! AJAX can work from any website. | |
GET | https://keybase.io/_/api/1.0/user/lookup.json
|
|
SAMPLE QUERIES |
https://keybase.io/_/api/1.0/user/lookup.json?usernames=chris,max
https://keybase.io/_/api/1.0/user/lookup.json?usernames=fake_user1,fake_user2 # nulls come back
https://keybase.io/_/api/1.0/user/lookup.json?domain=chriscoyne.com
https://keybase.io/_/api/1.0/user/lookup.json?twitter=malgorithms
https://keybase.io/_/api/1.0/user/lookup.json?github=malgorithms
https://keybase.io/_/api/1.0/user/lookup.json?reddit=malgorithms
https://keybase.io/_/api/1.0/user/lookup.json?hackernews=malgorithms
https://keybase.io/_/api/1.0/user/lookup.json?github=malgorithms&fields=basics,public_keys
https://keybase.io/_/api/1.0/user/lookup.json?key_fingerprint=94aa3a5bdbd40ea549cabaf9fbc07d6a97016cb3
|
|
SAMPLE OUTPUT |
// note that `them` is an array because certain lookups
// such as `domain` and `usernames` (which itself can be a list)
// can produce multiple results
{
"status": {
"code": 0,
"name": "OK"
},
"them": [{
"id": "9a2c8a8ac48162723c7992570c87da00",
"basics": {
"username": "maxtaco",
"ctime": 1399919269,
"mtime": 1399919269,
"id_version": 5,
"track_version": 1,
"last_id_change": 1399919279
},
"pictures": {
"primary": {
"url": "https://s3.amazonaws.com/ke..._square_200.png",
"width": 200,
"height": 200
}
},
"public_keys": {
"primary": {
"key_fingerprint": "e53878dbb0e644cff5f10e20fa9930221099dd13",
"kid": "0101995d003...",
"key_type": 1,
"bundle": "-----BEGIN PGP PUBLIC KEY.../*cropped for display*/",
"mtime": 1400074240,
"ctime": 1400074240,
"ukbid": "4f8bc40c19626b015308fcb9ef8c5811",
}
}
}],
"csrf_token": "lgHZIDQ1NTU0ODE3NzY5ZmM5N..."
}
|
When users cannot be found
If you pass a comma-separated usernames parameter with N names, you will get back a matching N-sized array, but with null
for any users who could not be found. We imagine this is easier to deal with.
For external identities, such as domains, this API only supports passing one lookup item at a time (no comma-separated list), but the returning result is still an array. Why? Well, multiple people may prove ownership of a domain, and possibly other search fields. See https://keybase.io/_/api/1.0/user/lookup.json?domain=keybase.io&fields=basics as an example. Unlike a usernames lookup, this resulting array cannot have any null
values in it. It will only return legitimate matches, and therefore its length could be 0, 1, or more.
User objects are massive
The above example is a pretty small result. A user object is a large dictionary and could contain pretty much everything about a user that you have access to. (See the user objects page in the documentation for more info.)
To avoid getting more data than you need, you can (should!) specify a comma-separated list of fields you desire. Acceptable values are:
- pictures
- basics
- public_keys
- profile
- proofs_summary
- remote_key_proofs
- sigs
- cryptocurrency_addresses New
CORS
Also note that this API call, along with both user/autocomplete and username/pgp_keys.asc is available via AJAX using CORS. Combining the three, you can search Keybase from any page on the web, present results to a viewer, and let them encrypt or verify.