curl --request POST \
--url https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": {
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
},
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
}
'import requests
url = "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc"
payload = {
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": {
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
},
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_name: '<string>',
last_name: '<string>',
date_of_birth: '2023-12-25',
address: {
address: '<string>',
city: '<string>',
zip: '<string>',
address_2: 'Suite 9',
state: 'CA'
},
ip: '<string>',
id_number: '123-45-6789',
id_type: 'us_ssn',
phone_number: '+14155550123'
})
};
fetch('https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc"
payload := strings.NewReader("{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'first_name' => '<string>',
'last_name' => '<string>',
'date_of_birth' => '2023-12-25',
'address' => [
'address' => '<string>',
'city' => '<string>',
'zip' => '<string>',
'address_2' => 'Suite 9',
'state' => 'CA'
],
'ip' => '<string>',
'id_number' => '123-45-6789',
'id_type' => 'us_ssn',
'phone_number' => '+14155550123'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const url = 'https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_name: '<string>',
last_name: '<string>',
date_of_birth: '2023-12-25',
address: {
address: '<string>',
city: '<string>',
zip: '<string>',
address_2: 'Suite 9',
state: 'CA'
},
ip: '<string>',
id_number: '123-45-6789',
id_type: 'us_ssn',
phone_number: '+14155550123'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": [
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
],
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-api-key": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))falsefalse$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": {
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
},
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
}'{
"representative_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Submit representative KYC data
Submit identity (KYC) data for a representative you added. Verification runs server-side; poll the entity onboarding status endpoint for the result. Use this when you hold the representative’s identity details; otherwise mint a verification link for them to self-verify.
curl --request POST \
--url https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": {
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
},
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
}
'import requests
url = "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc"
payload = {
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": {
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
},
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_name: '<string>',
last_name: '<string>',
date_of_birth: '2023-12-25',
address: {
address: '<string>',
city: '<string>',
zip: '<string>',
address_2: 'Suite 9',
state: 'CA'
},
ip: '<string>',
id_number: '123-45-6789',
id_type: 'us_ssn',
phone_number: '+14155550123'
})
};
fetch('https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc"
payload := strings.NewReader("{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'first_name' => '<string>',
'last_name' => '<string>',
'date_of_birth' => '2023-12-25',
'address' => [
'address' => '<string>',
'city' => '<string>',
'zip' => '<string>',
'address_2' => 'Suite 9',
'state' => 'CA'
],
'ip' => '<string>',
'id_number' => '123-45-6789',
'id_type' => 'us_ssn',
'phone_number' => '+14155550123'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const url = 'https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
first_name: '<string>',
last_name: '<string>',
date_of_birth: '2023-12-25',
address: {
address: '<string>',
city: '<string>',
zip: '<string>',
address_2: 'Suite 9',
state: 'CA'
},
ip: '<string>',
id_number: '123-45-6789',
id_type: 'us_ssn',
phone_number: '+14155550123'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"date_of_birth\": \"2023-12-25\",\n \"address\": {\n \"address\": \"<string>\",\n \"city\": \"<string>\",\n \"zip\": \"<string>\",\n \"address_2\": \"Suite 9\",\n \"state\": \"CA\"\n },\n \"ip\": \"<string>\",\n \"id_number\": \"123-45-6789\",\n \"id_type\": \"us_ssn\",\n \"phone_number\": \"+14155550123\"\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": [
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
],
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-api-key": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))falsefalse$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/kyc' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"first_name": "<string>",
"last_name": "<string>",
"date_of_birth": "2023-12-25",
"address": {
"address": "<string>",
"city": "<string>",
"zip": "<string>",
"address_2": "Suite 9",
"state": "CA"
},
"ip": "<string>",
"id_number": "123-45-6789",
"id_type": "us_ssn",
"phone_number": "+14155550123"
}'{
"representative_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your Meow API key, sent in the x-api-key header for authentication.
Body
Legal first name.
1"Felix"
Legal last name.
1"Whiskers"
Date of birth (YYYY-MM-DD).
Residential address.
Show child attributes
Show child attributes
IPv4 or IPv6 address of the end user submitting this verification. Forwarded to the identity-verification provider as a fraud signal.
"203.0.113.42"
Government ID number matching id_type. For us_ssn use nine digits, with or without dashes (123-45-6789 or 123456789); for us_ssn_last_4 use the last four digits; for non-US ID types provide the number as issued. Formatting characters are stripped before verification. Required when the representative's country issues an ID type we can verify, and must be omitted when it does not (e.g. the United Kingdom, which has no supported ID type).
"123-45-6789"
Type of government ID, which must belong to the country of the representative's address. Defaults to us_ssn; non-US representatives pass their country-specific type (e.g. sg_nric, au_passport, ca_sin). Ignored when the country has no supported ID type.
ar_dni, au_drivers_license, au_passport, br_cpf, ca_sin, cl_run, cn_resident_card, co_nit, dk_cpr, eg_national_id, es_dni, es_nie, hk_hkid, in_pan, in_epic, it_cf, jo_civil_id, jp_my_number, ke_huduma_namba, kw_civil_id, mx_curp, mx_rfc, my_nric, ng_nin, nz_drivers_license, om_civil_id, ph_psn, pl_pesel, ro_cnp, sa_national_id, se_pin, sg_nric, tr_tc_kimlik, us_ssn, us_ssn_last_4, za_smart_id Phone number in E.164 format (e.g. +14155550123).
^\+[1-9]\d{1,14}$"+14155550123"
Response
Successful Response
ID of the representative whose KYC was submitted.
This representative's identity verification status right after submission. It completes asynchronously; track this representative's status in the representatives array on GET /entities/{entity_id} or via the identity_verification.* webhooks. The entity's top-level kyc_status reflects only the primary representative, and next_step advances once every representative has started verification (not once they pass), so neither confirms this representative's outcome.
not_started, pending, action_required, approved, rejected