curl --request POST \
--url https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary \
--header 'x-api-key: <api-key>'import requests
url = "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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}/make-primary")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
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}/make-primary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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}/make-primary';
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
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}/make-primary");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary")
.post(null)
.addHeader("x-api-key", "<api-key>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["x-api-key": "<api-key>"]
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>")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary' -Method POST -Headers $headers{
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending_document_upload",
"business_name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"documents": [
{
"proof_type": "accredited",
"file_name": "<string>",
"representative_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"kyc_status": "not_started",
"onboarding_type": "api",
"next_step": {
"step": "gather_business_context",
"phase": "business_info",
"missing": [
"<string>"
],
"can_submit": true,
"required_proof_types": [
"accredited"
],
"info_requests": [
{
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"required_proof_types": [
"accredited"
],
"questions_pending": true,
"outstanding": [
{
"kind": "document",
"detail": "<string>",
"proof_type": "accredited"
}
],
"note": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
]
},
"representatives": [
{
"representative_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"is_primary": true,
"is_beneficial_owner": true,
"percent_ownership": "<string>",
"kyc_status": "not_started"
}
],
"consent_url": "<string>",
"consent": {
"status": "pending",
"consented_items": [
"patriot_act"
],
"remaining_items": [
"patriot_act"
],
"viewed_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
}{
"code": 123,
"message": "<string>",
"debug_message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}Make a representative primary
Make an existing representative the primary representative (signer). Any current primary is demoted, so exactly one remains. Allowed only before the application is submitted for review. Returns the updated onboarding status.
curl --request POST \
--url https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary \
--header 'x-api-key: <api-key>'import requests
url = "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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}/make-primary")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
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}/make-primary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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}/make-primary';
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
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}/make-primary");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary")
.post(null)
.addHeader("x-api-key", "<api-key>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["x-api-key": "<api-key>"]
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>")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary' -Method POST -Headers $headers{
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending_document_upload",
"business_name": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"documents": [
{
"proof_type": "accredited",
"file_name": "<string>",
"representative_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"kyc_status": "not_started",
"onboarding_type": "api",
"next_step": {
"step": "gather_business_context",
"phase": "business_info",
"missing": [
"<string>"
],
"can_submit": true,
"required_proof_types": [
"accredited"
],
"info_requests": [
{
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"required_proof_types": [
"accredited"
],
"questions_pending": true,
"outstanding": [
{
"kind": "document",
"detail": "<string>",
"proof_type": "accredited"
}
],
"note": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
]
},
"representatives": [
{
"representative_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"is_primary": true,
"is_beneficial_owner": true,
"percent_ownership": "<string>",
"kyc_status": "not_started"
}
],
"consent_url": "<string>",
"consent": {
"status": "pending",
"consented_items": [
"patriot_act"
],
"remaining_items": [
"patriot_act"
],
"viewed_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
}{
"code": 123,
"message": "<string>",
"debug_message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}Authorizations
Your Meow API key, sent in the x-api-key header for authentication.
Path Parameters
The representative, as returned in representatives on GET /entities/{entity_id}.
The entity being onboarded.
Response
Successful Response
Public ID of the onboarded business entity, stable across the onboarding lifecycle and matching the entity_id used in the Customer API, MCP, and webhook payloads.
Current onboarding status.
pending_document_upload, pending_user_action, submitted, under_review, approved, rejected Legal business name.
ISO 8601 timestamp of when the entity was created.
ISO 8601 timestamp of when onboarding was last updated.
Documents uploaded during onboarding.
Show child attributes
Show child attributes
Identity verification status of the primary representative. After you submit KYC data or they complete verification, this moves to pending and resolves on its own; poll it to track progress. action_required means their verification needs another step from them (for example, a document): create a link with POST /entities/{entity_id}/representatives/{representative_id}/verification-link and share it so they can finish. See representatives for every representative's status.
not_started, pending, action_required, approved, rejected How this entity was onboarded (e.g. api, smb, partner).
api, smb, mcp, partner What you must do next: the current onboarding step, the items still missing for it, and whether the application is ready to be submitted for review.
Show child attributes
Show child attributes
Every representative on the application with their identity verification (KYC) status. The top-level kyc_status reflects the primary representative; the application can only be approved once every representative is approved.
Show child attributes
Show child attributes
Link where the primary representative reviews and accepts the required agreements and disclosures in their browser. Populated once the application has been submitted; share it with the primary representative. The link needs no login and anyone holding it can accept on the business's behalf, so treat it as a secret.
Progress through the agreements at consent_url. Populated alongside it once the application has been submitted. Consent is collected in parallel with review, so status moves to under_review on submission whether or not these are accepted. Poll this field, not status, to see whether the primary representative still owes anything.
Show child attributes
Show child attributes