RNS
Search
K

RNS APIs

Overview

Verify identities and ensure compliance in seconds with RNS API. Our ID verification API reduces churn by streamlining the minutes-long KYC process to a single click.
It’s designed to be simple and secure for integration with exchanges and banks.

Scope

This online verification service, for the purpose of verifying the identity of an individual, employs KYC process that may include, but are not limited to the following:
  1. 1.
    Identity Verification
a. Provider shall verify the identity information provided by the User, such as name, date of birth, date of expiration of identity documents etc.
b. Provider shall verify the authenticity of the User's government-issued identity document.
  1. 2.
    Known Face Search
Provider shall compare the User's face to a database of known faces to detect and prevent criminals and terrorists.
  1. 3.
    AML Screening
Determination of a natural person's presence or non-presence on global sanctions lists, PEP lists, watchlists, blacklists, or adverse media (OFAC, UN, HMT, EU, DFT, etc).
  1. 4.
    Ongoing AML Monitoring
Daily re-check of the customer database against AML watchlists (sanctions, PEPs, adverse media, etc).
  1. 5.
    Document Monitoring
Daily re-check of the validity of identity documents previously submitted by a given user, based on their expiry date. This includes sending automated requests for replacements if documents expire. Once Document Monitoring is initiated, ongoing monitoring is included for ten years.
Swagger https://api.rns.id/swagger/, filter to KYC APIs.

APIs

Step 1 -- Get NFTs

Use web3 apis to get nfts in a wallet. The call below uses chainbase for testnet. ID 0x33 or 51 is the latest in that wallet 0xDdbaB36b99D852e8F03727D9f62a83658Fa2C2bB
1 curl -X GET 'https://api.chainbase.online/v1/account/nfts?chain_id=97&address=0xDdbaB36b99D852e8F03727D9f62a83658Fa2C2bB' \
2 -H 'X-API-KEY: key ' \
3 -H 'Content-Type: application/json'
The api returns
1 {
2 "code": 0,
3 "message": "ok",
4 "data": [
5 {
6 "contract_address": "0xa983e239235a65e13fa47d32e85a7fb9bb215d7f",
7 "erc_type": "ERC721",
8 "image_uri": "",
9 "metadata": null,
10 "mint_time": "0001-01-01T00:00:00Z",
11 "mint_transaction_hash": "",
12 "name": "RNS ID",
13 "owner": "0xDdbaB36b99D852e8F03727D9f62a83658Fa2C2bB",
14 "symbol": "RNSId",
15 "token_id": "0x33",
16 "token_uri": "https://api.rns.id/api/v2/portal/identity/nft/92acac98-283e-4eab-93b0-08ca5399586c.json",
17 "total": 1,
18 "total_string": "1",
19 "traits": null
20 },
21 {
22 "contract_address": "0xa983e239235a65e13fa47d32e85a7fb9bb215d7f",
23 "erc_type": "ERC721",
24 "image_uri": "",
25. "metadata": null,
26 "mint_time": "0001-01-01T00:00:00Z",
27 "mint_transaction_hash": "",
28 "name": "RNS ID",
29 "owner": "0xDdbaB36b99D852e8F03727D9f62a83658Fa2C2bB",
30 "symbol": "RNSId",
31 "token_id": "0x32",
32 "token_uri": "https://api.rns.id/api/v2/portal/identity/nft/c6c6f30b-3e11-47cc-ac50-de9ebeb682b3.json",
33 "total": 1,
34 "total_string": "1",
35 "traits": null
36 },
37 {
38 "contract_address": "0xa983e239235a65e13fa47d32e85a7fb9bb215d7f",
39 "erc_type": "ERC721",
40 "image_uri": "",
41 "metadata": null,
42 "mint_time": "0001-01-01T00:00:00Z",
43 "mint_transaction_hash": "",
44 "name": "RNS ID",
45 "owner": "0xDdbaB36b99D852e8F03727D9f62a83658Fa2C2bB",
46 "symbol": "RNSId",
47 "token_id": "0x31",
48 "token_uri": "https://api.rns.id/api/v2/portal/identity/nft/2d02eae3-a37a-4ee5-9f9c-ad1ca7583e32.json",
49 "total": 1,
50 "total_string": "1",
51 "traits": null
52 }
53 ],
54 "count": 3
55 }

Step 2 -- Get NFT Properties

1 curl https://api.rns.id/api/v2/portal/identity/nft/92acac98-283e-4eab-93b0-08ca5399586c.json | jq
Outputs:
1 {
2 "name": "RNS ID CYO6681H",
3 "description": "RNS ID CYO6681H for Ukraine",
4 "image": "https://rns.mypinata.cloud/ipfs/QmZe5C4eiPpcsZ4mWwaLafcN96CWnVri9n8hgJBqkVNyr1/Ukraine.png",
5 "animation_url": "https://rns.mypinata.cloud/ipfs/QmZe5C4eiPpcsZ4mWwaLafcN96CWnVri9n8hgJBqkVNyr1/Ukraine.mp4",
6 "attributes": [
7 {
8 "trait_type": "Internal ID",
9 "value": "92acac98-283e-4eab-93b0-08ca5399586c"
10 },
11 {
12 "trait_type": "Valid",
13 "value": "True"
14 },
15 {
16 "trait_type": "Issued",
17 "value": 1573430400,
18 "display_type": "date"
19 },
20 {
21 "trait_type": "Expires",
22 "value": 1731283200,
23 "display_type": "date"
24 },
25 {
26 "trait_type": "Jurisdiction",
27 "value": "UKRAINE"
28 },
29 {
30 "trait_type": "ID Type",
31 "value": "Passport"
32 },
33 {
34 "trait_type": "Gender",
35 "value": "M"
36 },
37 {
38 "trait_type": "Age Over 21",
39 "value": "True"
40 },
41 {
42 "trait_type": "Age Over 18",
43 "value": "True"
44 },
45 {
46 "trait_type": "Photo Hash",
47 "value": "None"
48 },
49 {
50 "trait_type": "RNS ID Number",
51 "value": "CYO6681H"
52 }
53 ],
54 "internal_id": "92acac98-283e-4eab-93b0-08ca5399586c",
55 "valid": true,
56 "issued": "2019-11-11 00:00:00+00:00",
57 "expires": "2024-11-11 00:00:00+00:00",
58 "jurisdiction": "UKRAINE",
59 "id_type": "Passport",
60 "gender": "M",
61 "age_over_21": true,
62 "age_over_18": true,
63 "photo_hash": "None",
64 "idnumber": "CYO6681H"
65 }

Step 3 -- Call L1 API

1 curl https://api.rns.id/api/v2/kyc/l2/903076ce-3d48-426b-b297-246c031e9477/ \
2 -H 'Authorization: bearer api:37fbd00bf3875d9c6f904ce291de28a96e74a12be3acaa0a9bbb57273d69b778' \
3 -H 'Content-Type: application/json'
This returns:
1 {
2 "status": {
3 "code": 200,
4 "message": ""
5 },
6 "data": {
7 "has_id": true,
8 "internal_id": "903076ce-3d48-426b-b297-246c031e9477",
9 "valid": true,
10 "expiration_date": "2028-01-11 00:00:00+00:00",
11 "jurisdiction": "Palau",
12 "rns_id": "CGB9933C",
13 "id_type": "ID",
14 "gender": "M",
15 "first_name": "FNAME",
16 "last_name": "LNAME",
17 "issue_date": "2023-01-11 00:00:00+00:00",
18 "birth_date": "1970-01-01",
19 "under_sanctions": false,
20 "url_photo": "https://api.rns.id/api/v2/kyc/photo/903076ce-3d48-426b-b297-246c031e9477/"
21 }
22 }

Step 4 -- Get Photo

1 curl https://api.rns.id/api/v2/kyc/photo/903076ce-3d48-426b-b297-246c031e9477/ \
2 -H 'Authorization: bearer api:37fbd00bf3875d9c6f904ce291de28a96e74a12be3acaa0a9bbb57273d69b778' \
3 -o photo.jpg

Error List:

200 Successful
400 Invalid Request
401 Not Authorized
403 Forbidden
404 Not found
429 Server Busy - Try again
500 Application Error'