curl -X POST https://admin.kycert.com.br/api/v1/bureau/runs \
-H "x-api-key: $KYCERT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": {
"type": "pf",
"doc": "12345678901",
"name": "João Silva"
},
"webhook_url": "https://broker.com/webhooks/kycert"
}'const res = await fetch('https://admin.kycert.com.br/api/v1/bureau/runs', {
method: 'POST',
headers: {
'x-api-key': process.env.KYCERT_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
template_id: '550e8400-e29b-41d4-a716-446655440000',
subject: { type: 'pf', doc: '12345678901', name: 'João Silva' },
webhook_url: 'https://broker.com/webhooks/kycert',
}),
})
const { run_id, status } = await res.json()
console.log(run_id, status)
import requests, os
res = requests.post(
'https://admin.kycert.com.br/api/v1/bureau/runs',
headers={'x-api-key': os.environ['KYCERT_API_KEY']},
json={
'template_id': '550e8400-e29b-41d4-a716-446655440000',
'subject': {'type': 'pf', 'doc': '12345678901', 'name': 'João Silva'},
'webhook_url': 'https://broker.com/webhooks/kycert',
},
)
data = res.json()
print(data['run_id'], data['status'])
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://admin.kycert.com.br/api/v1/bureau/runs', [
'headers' => ['x-api-key' => getenv('KYCERT_API_KEY')],
'json' => [
'template_id' => '550e8400-e29b-41d4-a716-446655440000',
'subject' => ['type' => 'pf', 'doc' => '12345678901', 'name' => 'João Silva'],
'webhook_url' => 'https://broker.com/webhooks/kycert',
],
]);
$data = json_decode($response->getBody(), true);
echo $data['run_id'];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
payload, _ := json.Marshal(map[string]interface{}{
"template_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": map[string]string{
"type": "pf",
"doc": "12345678901",
"name": "João Silva",
},
"webhook_url": "https://broker.com/webhooks/kycert",
})
req, _ := http.NewRequest("POST", "https://admin.kycert.com.br/api/v1/bureau/runs", bytes.NewBuffer(payload))
req.Header.Set("x-api-key", os.Getenv("KYCERT_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result["run_id"])
}
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
template_id: '550e8400-e29b-41d4-a716-446655440000',
subject: {type: 'pf', doc: '12345678901', name: 'João Silva'},
webhook_url: 'https://broker.com/webhooks/kycert',
external_id: 'cust_abc123',
metadata: {customer_name: 'João Silva', channel: 'app_mobile'}
})
};
fetch('https://admin.kycert.com.br/api/v1/bureau/runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://admin.kycert.com.br/api/v1/bureau/runs")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"template_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": {\n \"type\": \"pf\",\n \"doc\": \"12345678901\",\n \"name\": \"João Silva\"\n },\n \"webhook_url\": \"https://broker.com/webhooks/kycert\",\n \"external_id\": \"cust_abc123\",\n \"metadata\": {\n \"customer_name\": \"João Silva\",\n \"channel\": \"app_mobile\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://admin.kycert.com.br/api/v1/bureau/runs")
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 \"template_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": {\n \"type\": \"pf\",\n \"doc\": \"12345678901\",\n \"name\": \"João Silva\"\n },\n \"webhook_url\": \"https://broker.com/webhooks/kycert\",\n \"external_id\": \"cust_abc123\",\n \"metadata\": {\n \"customer_name\": \"João Silva\",\n \"channel\": \"app_mobile\"\n }\n}"
response = http.request(request)
puts response.read_body{
"run_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"livemode": true
}Criar run
Inicia a execução do bureau para um CPF ou CNPJ.
Retorna imediatamente com run_id e status: queued.
O resultado é entregue via webhook quando disponível (5–30s em média).
curl -X POST https://admin.kycert.com.br/api/v1/bureau/runs \
-H "x-api-key: $KYCERT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": {
"type": "pf",
"doc": "12345678901",
"name": "João Silva"
},
"webhook_url": "https://broker.com/webhooks/kycert"
}'const res = await fetch('https://admin.kycert.com.br/api/v1/bureau/runs', {
method: 'POST',
headers: {
'x-api-key': process.env.KYCERT_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
template_id: '550e8400-e29b-41d4-a716-446655440000',
subject: { type: 'pf', doc: '12345678901', name: 'João Silva' },
webhook_url: 'https://broker.com/webhooks/kycert',
}),
})
const { run_id, status } = await res.json()
console.log(run_id, status)
import requests, os
res = requests.post(
'https://admin.kycert.com.br/api/v1/bureau/runs',
headers={'x-api-key': os.environ['KYCERT_API_KEY']},
json={
'template_id': '550e8400-e29b-41d4-a716-446655440000',
'subject': {'type': 'pf', 'doc': '12345678901', 'name': 'João Silva'},
'webhook_url': 'https://broker.com/webhooks/kycert',
},
)
data = res.json()
print(data['run_id'], data['status'])
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://admin.kycert.com.br/api/v1/bureau/runs', [
'headers' => ['x-api-key' => getenv('KYCERT_API_KEY')],
'json' => [
'template_id' => '550e8400-e29b-41d4-a716-446655440000',
'subject' => ['type' => 'pf', 'doc' => '12345678901', 'name' => 'João Silva'],
'webhook_url' => 'https://broker.com/webhooks/kycert',
],
]);
$data = json_decode($response->getBody(), true);
echo $data['run_id'];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
payload, _ := json.Marshal(map[string]interface{}{
"template_id": "550e8400-e29b-41d4-a716-446655440000",
"subject": map[string]string{
"type": "pf",
"doc": "12345678901",
"name": "João Silva",
},
"webhook_url": "https://broker.com/webhooks/kycert",
})
req, _ := http.NewRequest("POST", "https://admin.kycert.com.br/api/v1/bureau/runs", bytes.NewBuffer(payload))
req.Header.Set("x-api-key", os.Getenv("KYCERT_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result["run_id"])
}
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
template_id: '550e8400-e29b-41d4-a716-446655440000',
subject: {type: 'pf', doc: '12345678901', name: 'João Silva'},
webhook_url: 'https://broker.com/webhooks/kycert',
external_id: 'cust_abc123',
metadata: {customer_name: 'João Silva', channel: 'app_mobile'}
})
};
fetch('https://admin.kycert.com.br/api/v1/bureau/runs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://admin.kycert.com.br/api/v1/bureau/runs")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"template_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": {\n \"type\": \"pf\",\n \"doc\": \"12345678901\",\n \"name\": \"João Silva\"\n },\n \"webhook_url\": \"https://broker.com/webhooks/kycert\",\n \"external_id\": \"cust_abc123\",\n \"metadata\": {\n \"customer_name\": \"João Silva\",\n \"channel\": \"app_mobile\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://admin.kycert.com.br/api/v1/bureau/runs")
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 \"template_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n \"subject\": {\n \"type\": \"pf\",\n \"doc\": \"12345678901\",\n \"name\": \"João Silva\"\n },\n \"webhook_url\": \"https://broker.com/webhooks/kycert\",\n \"external_id\": \"cust_abc123\",\n \"metadata\": {\n \"customer_name\": \"João Silva\",\n \"channel\": \"app_mobile\"\n }\n}"
response = http.request(request)
puts response.read_body{
"run_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"livemode": true
}Authorizations
API key no header x-api-key (recomendado)
Headers
UUID único por tentativa. Mesmo valor nas próximas 24h retorna o run original sem executar novamente. Use sempre que implementar retry no seu código.
Versão da API a usar. Omitir = versão mais recente.
Fixe em 2026-06-03 para garantir estabilidade em produção.
"2026-06-03"
Body
ID do template configurado no dashboard kycert
Sujeito a ser analisado
Show child attributes
Show child attributes
URL HTTPS para entrega do resultado deste run. Se omitido, usa o endpoint padrão configurado em Integrações & API → Webhooks no dashboard.
Seu identificador interno para este run. Útil para correlacionar com seu sistema.
255Até 10 pares chave-valor string. Retornado no webhook e no GET /runs.
Show child attributes
Show child attributes