curl --request POST \
--url https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"file_name": "<string>",
"content_type": "application/pdf"
}
'import requests
url = "https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url"
payload = {
"file_name": "<string>",
"content_type": "application/pdf"
}
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({file_name: '<string>', content_type: 'application/pdf'})
};
fetch('https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url', 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/partner/applications/{app_id}/documents/upload-url"
payload := strings.NewReader("{\n \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\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/partner/applications/{app_id}/documents/upload-url")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url")
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 \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url",
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([
'file_name' => '<string>',
'content_type' => 'application/pdf'
]),
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/partner/applications/{app_id}/documents/upload-url';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({file_name: '<string>', content_type: 'application/pdf'})
};
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/partner/applications/{app_id}/documents/upload-url");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\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 \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"file_name": "<string>",
"content_type": "application/pdf"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url")!
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/partner/applications/{app_id}/documents/upload-url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"file_name": "<string>",
"content_type": "application/pdf"
}'{
"upload_url": "<string>",
"object_key": "<string>",
"max_bytes": 123,
"expires_in_seconds": 123
}{
"code": 123,
"message": "<string>",
"debug_message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}Get Document Upload URL
Get a pre-signed URL to upload a KYB document. Use HTTP PUT to upload the file to the returned URL, then confirm it.
curl --request POST \
--url https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"file_name": "<string>",
"content_type": "application/pdf"
}
'import requests
url = "https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url"
payload = {
"file_name": "<string>",
"content_type": "application/pdf"
}
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({file_name: '<string>', content_type: 'application/pdf'})
};
fetch('https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url', 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/partner/applications/{app_id}/documents/upload-url"
payload := strings.NewReader("{\n \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\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/partner/applications/{app_id}/documents/upload-url")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url")
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 \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url",
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([
'file_name' => '<string>',
'content_type' => 'application/pdf'
]),
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/partner/applications/{app_id}/documents/upload-url';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({file_name: '<string>', content_type: 'application/pdf'})
};
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/partner/applications/{app_id}/documents/upload-url");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\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 \"file_name\": \"<string>\",\n \"content_type\": \"application/pdf\"\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"file_name": "<string>",
"content_type": "application/pdf"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/partner/applications/{app_id}/documents/upload-url")!
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/partner/applications/{app_id}/documents/upload-url' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"file_name": "<string>",
"content_type": "application/pdf"
}'{
"upload_url": "<string>",
"object_key": "<string>",
"max_bytes": 123,
"expires_in_seconds": 123
}{
"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 onboarding application, as returned when it was created.
Body
Type of KYB document being uploaded. Common values are incorporation (certificate of incorporation or formation document), address (proof of business address), and bank_statement. Non-US businesses also upload shareholder_registry (your shareholder registry, also called the register of members) and officer_registry (your register of directors and officers). The onboarding status response lists exactly what an entity owes in next_step.required_proof_types.
accredited, address, articles_of_organization, bank_statement, client_contract, client_invoice, beneficial_owner_address, beneficial_owner_id, beneficial_owner_id_back, beneficial_ownership_register, bylaws, certificate_of_good_standing, corporate_resolution, drivers_license, due_diligence, ein, final_edd_report, government_issued_business_license, hemp_cultivator_state_license, incorporation, industry_related_license, lease_agreement, llc_resolution, money_service_business_license, money_transmitter_registration, mortgage_statement, national_id, org_chart, partnership_agreement, partnership_agreement_due_diligence, partnership_resolution, personal_address, remote_employees_due_diligence, signed_ss4, tax_exemption_certificate, uk_officer_passport, officer_registry, uk_registry, shareholder_registry, uk_w8_en, utility_bill, us_based_office_proof_of_address_due_diligence, pitch_deck, active_business_registration, proof_of_ownership_or_banking_authorization, non_profit_bylaws, operating_agreement, flow_of_funds, aml_sanction, registration_or_license, sec_filing, legal_opinion, certificate_of_formation_master_llc, series_operating_agreement, share_subscription_agreement, fund_subscription_agreement, safe_agreement, convertible_note_agreement, loan_promissory_note, token_purchase_agreement, saft_agreement, deal_memo_hybrid_agreement, issuer_due_diligence_report, protocol_ecosystem_questionnaire, investment_company_due_diligence_form, us_based_operations_due_diligence_form, register_of_directors, articles_of_association, memorandum_of_association, non_profit_status, ofac_sanctions_screening_policy, aml_kyc_policy, w8_bene, corporate_structure_chart, custody_safeguarding_agreement, reserve_attestation, sanctions_vendor_service_agreement, contractual_fund_flow_agreements Original file name including extension.
MIME type of the file (e.g. application/pdf, image/png).
Response
Successful Response