Individual Holmes
Query official bureaus and Stark Infra's internal datasets to investigate an individual (CPF). Each request targets a specific bureau by type and returns the structured payload of that bureau alongside a paging cursor.
Use Individual Holmes to run KYC, anti-fraud, judicial, sanctions and federal-revenue checks on a person before onboarding, granting credit or releasing a high-risk operation.
Every call is synchronous, scoped to your workspace and logged on Stark Infra's side — there is no resource lifecycle to track.
NOTE: Read Core Concepts before continuing this guide.
Setup
For each environment (Sandbox and Production):
1. Create an account at Stark Bank.
2. Get in touch with your account manager to enable Individual Holmes on your workspace — each bureau is contracted independently, so let us know which type values you intend to use.
3. Have the CPF you want to investigate ready in unmasked or masked form — Stark Infra normalizes both. For type=internationalPep, use the person's full name instead of a CPF.
4. Generate your ECDSA credentials by following How to Create ECDSA Keys and authenticate every request with the Access-Id, Access-Time and Access-Signature headers.
Individual Holmes Overview
Individual Holmes investigates a person (CPF) against an external bureau or an internal dataset. Every request targets a specific bureau by type; the response wraps the bureau's raw payload under a key named exactly after the type you queried.
All bureaus are queried through the same endpoint signature, with the same validation pipeline and the same paging contract. Only the two JusBrasil bureaus — civil and criminal — return a real cursor; every other bureau returns null (or [] for internationalPep).
Query an Individual Bureau
Path params identify what to look up. The searchKey is a CPF (11 digits, masked or unmasked) for every bureau except internationalPep, where it is the person's full name. The type selects the bureau and the shape of the response.
Query params control paging. Only civil and criminal honour cursor — repeat the request with the returned cursor to fetch the next page.
Parameters
Response Envelope
Every successful response carries the bureau's payload under a key named after the type queried, plus a cursor field. The concrete envelope for each bureau is shown in the sections below.
Cursor semantics: populated only for civil/criminal. null for every other bureau. [] for internationalPep (it returns an array sentinel instead of a string cursor).
Parameters
Civil Lawsuits
Civil lawsuits sourced from JusBrasil. Paginated — repeat with the returned cursor until null. Returns a list of processes; typification is always [] for civil.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="civil",
limit=50,
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "civil",
limit: 50
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/civil?limit=50' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": "ChsSFWoNZX5zdGFyay1iYW5rcgwLEgVDaXZpbBgBDA==",
"civil": [
{
"processType": "Civil",
"latestUpdateDate": "2026-05-18",
"associationConfidence": "ALTA",
"status": {
"date": "2026-05-18",
"inferred": "Ativo",
"normalized": "Em andamento",
"court": null
},
"identifiedTypification": null,
"typification": [],
"occurrenceType": "Procedimento Comum Cível",
"occurrenceDescription": "Procedimento Comum Cível",
"legislation": "Lei nº 13.105/2015",
"nature": "PROCEDIMENTO COMUM CÍVEL",
"proceduralClass": "OUTROS",
"subject": "DIREITO CIVIL (899) - Obrigações (10431) - Espécies de Contratos (7681)",
"processYear": "2025",
"role": "Autor",
"processNumber": "1023456-78.2025.8.26.0100",
"relatedProcesses": null,
"link": "https://www.jusbrasil.com.br/consulta-pro/processos/1023456-78.2025.8.26.0100"
}
]
}
Javascript
{
"cursor": "ChsSFWoNZX5zdGFyay1iYW5rcgwLEgVDaXZpbBgBDA==",
"civil": [
{
"processType": "Civil",
"latestUpdateDate": "2026-05-18",
"associationConfidence": "ALTA",
"status": {
"date": "2026-05-18",
"inferred": "Ativo",
"normalized": "Em andamento",
"court": null
},
"identifiedTypification": null,
"typification": [],
"occurrenceType": "Procedimento Comum Cível",
"occurrenceDescription": "Procedimento Comum Cível",
"legislation": "Lei nº 13.105/2015",
"nature": "PROCEDIMENTO COMUM CÍVEL",
"proceduralClass": "OUTROS",
"subject": "DIREITO CIVIL (899) - Obrigações (10431) - Espécies de Contratos (7681)",
"processYear": "2025",
"role": "Autor",
"processNumber": "1023456-78.2025.8.26.0100",
"relatedProcesses": null,
"link": "https://www.jusbrasil.com.br/consulta-pro/processos/1023456-78.2025.8.26.0100"
}
]
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": "ChsSFWoNZX5zdGFyay1iYW5rcgwLEgVDaXZpbBgBDA==",
"civil": [
{
"processType": "Civil",
"latestUpdateDate": "2026-05-18",
"associationConfidence": "ALTA",
"status": {
"date": "2026-05-18",
"inferred": "Ativo",
"normalized": "Em andamento",
"court": null
},
"identifiedTypification": null,
"typification": [],
"occurrenceType": "Procedimento Comum Cível",
"occurrenceDescription": "Procedimento Comum Cível",
"legislation": "Lei nº 13.105/2015",
"nature": "PROCEDIMENTO COMUM CÍVEL",
"proceduralClass": "OUTROS",
"subject": "DIREITO CIVIL (899) - Obrigações (10431) - Espécies de Contratos (7681)",
"processYear": "2025",
"role": "Autor",
"processNumber": "1023456-78.2025.8.26.0100",
"relatedProcesses": null,
"link": "https://www.jusbrasil.com.br/consulta-pro/processos/1023456-78.2025.8.26.0100"
}
]
}
Criminal Lawsuits
Same JusBrasil source as civil. Returns a list of processes with the same shape, but the typification field is populated with the criminal codes invoked.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="criminal",
limit=50,
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "criminal",
limit: 50
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/criminal?limit=50' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"criminal": [
{
"processType": "Criminal",
"latestUpdateDate": "2026-04-02",
"associationConfidence": "ALTA",
"status": {
"date": "2026-04-02",
"inferred": "Arquivado",
"normalized": "Extinto",
"court": "Extinto"
},
"identifiedTypification": "Crime contra o patrimônio",
"typification": [
{
"occurrenceCode": "171",
"occurrenceType": "Estelionato",
"occurrenceDescription": "Obter, para si ou para outrem, vantagem ilícita, em prejuízo alheio, induzindo ou mantendo alguém em erro",
"legislation": [
{"lei": "Art. 171 do Código Penal", "pena_prevista": "Reclusão, de 1 a 5 anos, e multa"}
]
}
],
"occurrenceType": "Ação Penal",
"occurrenceDescription": "Ação Penal - Procedimento Ordinário",
"legislation": "Decreto-Lei nº 2.848/1940",
"nature": "Ação Penal de Competência do Juiz Singular",
"proceduralClass": "PROCEDIMENTO COMUM CRIMINAL",
"subject": "DIREITO PENAL (287) - Crimes contra o Patrimônio (3372) - Estelionato (3392)",
"processYear": "2023",
"role": "Réu",
"processNumber": "0098765-43.2023.8.13.0024",
"relatedProcesses": null,
"link": "https://www.jusbrasil.com.br/consulta-pro/processos/0098765-43.2023.8.13.0024"
}
]
}
Javascript
{
"cursor": null,
"criminal": [
{
"processType": "Criminal",
"latestUpdateDate": "2026-04-02",
"associationConfidence": "ALTA",
"status": {
"date": "2026-04-02",
"inferred": "Arquivado",
"normalized": "Extinto",
"court": "Extinto"
},
"identifiedTypification": "Crime contra o patrimônio",
"typification": [
{
"occurrenceCode": "171",
"occurrenceType": "Estelionato",
"occurrenceDescription": "Obter, para si ou para outrem, vantagem ilícita, em prejuízo alheio, induzindo ou mantendo alguém em erro",
"legislation": [
{"lei": "Art. 171 do Código Penal", "pena_prevista": "Reclusão, de 1 a 5 anos, e multa"}
]
}
],
"occurrenceType": "Ação Penal",
"occurrenceDescription": "Ação Penal - Procedimento Ordinário",
"legislation": "Decreto-Lei nº 2.848/1940",
"nature": "Ação Penal de Competência do Juiz Singular",
"proceduralClass": "PROCEDIMENTO COMUM CRIMINAL",
"subject": "DIREITO PENAL (287) - Crimes contra o Patrimônio (3372) - Estelionato (3392)",
"processYear": "2023",
"role": "Réu",
"processNumber": "0098765-43.2023.8.13.0024",
"relatedProcesses": null,
"link": "https://www.jusbrasil.com.br/consulta-pro/processos/0098765-43.2023.8.13.0024"
}
]
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"criminal": [
{
"processType": "Criminal",
"latestUpdateDate": "2026-04-02",
"associationConfidence": "ALTA",
"status": {
"date": "2026-04-02",
"inferred": "Arquivado",
"normalized": "Extinto",
"court": "Extinto"
},
"identifiedTypification": "Crime contra o patrimônio",
"typification": [
{
"occurrenceCode": "171",
"occurrenceType": "Estelionato",
"occurrenceDescription": "Obter, para si ou para outrem, vantagem ilícita, em prejuízo alheio, induzindo ou mantendo alguém em erro",
"legislation": [
{"lei": "Art. 171 do Código Penal", "pena_prevista": "Reclusão, de 1 a 5 anos, e multa"}
]
}
],
"occurrenceType": "Ação Penal",
"occurrenceDescription": "Ação Penal - Procedimento Ordinário",
"legislation": "Decreto-Lei nº 2.848/1940",
"nature": "Ação Penal de Competência do Juiz Singular",
"proceduralClass": "PROCEDIMENTO COMUM CRIMINAL",
"subject": "DIREITO PENAL (287) - Crimes contra o Patrimônio (3372) - Estelionato (3392)",
"processYear": "2023",
"role": "Réu",
"processNumber": "0098765-43.2023.8.13.0024",
"relatedProcesses": null,
"link": "https://www.jusbrasil.com.br/consulta-pro/processos/0098765-43.2023.8.13.0024"
}
]
}
Fraud Score
Quod anti-fraud score for the CPF. Not paginated.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="frauds",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "frauds"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/frauds' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"frauds": {
"type": "normal",
"reason": "no-confirmed-fraud",
"risk": "low",
"totalConfirmedFrauds": 0,
"frauds": [
{"reason": "identity-theft", "date": "2025-09-14", "channel": "pix", "isConfirmed": "SIM"}
]
}
}
Javascript
{
"cursor": null,
"frauds": {
"type": "normal",
"reason": "no-confirmed-fraud",
"risk": "low",
"totalConfirmedFrauds": 0,
"frauds": [
{"reason": "identity-theft", "date": "2025-09-14", "channel": "pix", "isConfirmed": "SIM"}
]
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"frauds": {
"type": "normal",
"reason": "no-confirmed-fraud",
"risk": "low",
"totalConfirmedFrauds": 0,
"frauds": [
{"reason": "identity-theft", "date": "2025-09-14", "channel": "pix", "isConfirmed": "SIM"}
]
}
}
Registration Data
BigDataCorp registration data (dataset pessoas/registration_data). Not paginated. Empty result returns [].
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="data",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "data"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/data' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"data": {
"fullName": "MARIA EDUARDA SILVA OLIVEIRA",
"birthData": "1991-04-12",
"motherName": "JOANA MARIA SILVA",
"address": {
"primary": {
"street": "Avenida Brigadeiro Faria Lima",
"number": "1234",
"complement": "Apto 502",
"neighborhood": "Itaim Bibi",
"city": "São Paulo",
"state": "SP",
"zipCode": "04538-132"
},
"secondary": {
"street": "Rua das Palmeiras",
"number": "87",
"complement": "",
"neighborhood": "Centro",
"city": "Campinas",
"state": "SP",
"zipCode": "13010-090"
}
},
"emails": ["maria.eduarda@example.com"],
"taxIdStatus": "REGULAR",
"hasObitIndication": false
}
}
Javascript
{
"cursor": null,
"data": {
"fullName": "MARIA EDUARDA SILVA OLIVEIRA",
"birthData": "1991-04-12",
"motherName": "JOANA MARIA SILVA",
"address": {
"primary": {
"street": "Avenida Brigadeiro Faria Lima",
"number": "1234",
"complement": "Apto 502",
"neighborhood": "Itaim Bibi",
"city": "São Paulo",
"state": "SP",
"zipCode": "04538-132"
},
"secondary": {
"street": "Rua das Palmeiras",
"number": "87",
"complement": "",
"neighborhood": "Centro",
"city": "Campinas",
"state": "SP",
"zipCode": "13010-090"
}
},
"emails": ["maria.eduarda@example.com"],
"taxIdStatus": "REGULAR",
"hasObitIndication": false
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"data": {
"fullName": "MARIA EDUARDA SILVA OLIVEIRA",
"birthData": "1991-04-12",
"motherName": "JOANA MARIA SILVA",
"address": {
"primary": {
"street": "Avenida Brigadeiro Faria Lima",
"number": "1234",
"complement": "Apto 502",
"neighborhood": "Itaim Bibi",
"city": "São Paulo",
"state": "SP",
"zipCode": "04538-132"
},
"secondary": {
"street": "Rua das Palmeiras",
"number": "87",
"complement": "",
"neighborhood": "Centro",
"city": "Campinas",
"state": "SP",
"zipCode": "13010-090"
}
},
"emails": ["maria.eduarda@example.com"],
"taxIdStatus": "REGULAR",
"hasObitIndication": false
}
}
Pix User
Looks the CPF up on Stark Infra's internal Dict (Pix directory) microservice. Returns the raw user object on success.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="dict",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "dict"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/dict' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"dict": {
"name": "MARIA EDUARDA SILVA OLIVEIRA",
"taxIdNumber": "012.345.678-90",
"personType": "naturalPerson",
"keys": [
{"key": "maria.eduarda@example.com", "type": "email", "status": "registered"},
{"key": "+5511987654321", "type": "phone", "status": "registered"},
{"key": "012.345.678-90", "type": "taxId", "status": "registered"}
]
}
}
Javascript
{
"cursor": null,
"dict": {
"name": "MARIA EDUARDA SILVA OLIVEIRA",
"taxIdNumber": "012.345.678-90",
"personType": "naturalPerson",
"keys": [
{"key": "maria.eduarda@example.com", "type": "email", "status": "registered"},
{"key": "+5511987654321", "type": "phone", "status": "registered"},
{"key": "012.345.678-90", "type": "taxId", "status": "registered"}
]
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"dict": {
"name": "MARIA EDUARDA SILVA OLIVEIRA",
"taxIdNumber": "012.345.678-90",
"personType": "naturalPerson",
"keys": [
{"key": "maria.eduarda@example.com", "type": "email", "status": "registered"},
{"key": "+5511987654321", "type": "phone", "status": "registered"},
{"key": "012.345.678-90", "type": "taxId", "status": "registered"}
]
}
}
KYC & National PEP
Both kyc and nationalPep share the same BigDataCorp pessoas/kyc dataset and return the same payload. Not paginated. Empty result returns {}. The history[] is filtered to entries with matchRate >= 80.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="kyc",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "kyc"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/kyc' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"kyc": {
"isPEP": false,
"wasPreviouslySanctioned": true,
"isCurrentlySanctioned": false,
"history": [
{
"matchRate": 92,
"source": "ofac",
"standardizedSanctionType": "ECONOMIC SANCTIONS",
"type": "Financial",
"creationDate": "2019-08-15T00:00:00",
"endDate": "2023-11-30T00:00:00",
"charges": "money laundering",
"sanctionName": "MARIA E. S. OLIVEIRA"
}
]
}
}
Javascript
{
"cursor": null,
"kyc": {
"isPEP": false,
"wasPreviouslySanctioned": true,
"isCurrentlySanctioned": false,
"history": [
{
"matchRate": 92,
"source": "ofac",
"standardizedSanctionType": "ECONOMIC SANCTIONS",
"type": "Financial",
"creationDate": "2019-08-15T00:00:00",
"endDate": "2023-11-30T00:00:00",
"charges": "money laundering",
"sanctionName": "MARIA E. S. OLIVEIRA"
}
]
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"kyc": {
"isPEP": false,
"wasPreviouslySanctioned": true,
"isCurrentlySanctioned": false,
"history": [
{
"matchRate": 92,
"source": "ofac",
"standardizedSanctionType": "ECONOMIC SANCTIONS",
"type": "Financial",
"creationDate": "2019-08-15T00:00:00",
"endDate": "2023-11-30T00:00:00",
"charges": "money laundering",
"sanctionName": "MARIA E. S. OLIVEIRA"
}
]
}
}
International PEP
Queries Stark's BigQuery PEP table. Unlike every other bureau, the searchKey is a full name, not a CPF — Stark Infra normalises it (uppercase, accents removed) before matching.
The result is an array of raw BigQuery rows. The page size is fixed at 1000 — the limit query param is ignored. The envelope's cursor field is [] (sentinel value).
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="MARIA DA SILVA",
type="internationalPep",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "MARIA DA SILVA",
type: "internationalPep"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/MARIA%20DA%20SILVA/internationalPep' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": [],
"internationalPep": [
{
"name": "MARIA DA SILVA",
"country": "BRAZIL",
"position": "Federal Senator",
"startDate": "2023-02-01",
"endDate": null,
"source": "official-gazette"
}
]
}
Javascript
{
"cursor": [],
"internationalPep": [
{
"name": "MARIA DA SILVA",
"country": "BRAZIL",
"position": "Federal Senator",
"startDate": "2023-02-01",
"endDate": null,
"source": "official-gazette"
}
]
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": [],
"internationalPep": [
{
"name": "MARIA DA SILVA",
"country": "BRAZIL",
"position": "Federal Senator",
"startDate": "2023-02-01",
"endDate": null,
"source": "official-gazette"
}
]
}
Joint Resolution 6
Quod's RUFRA block, used to comply with Brazilian Joint Resolution 6 (BCB/CMN). Not paginated.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="jointResolution6",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "jointResolution6"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/jointResolution6' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"jointResolution6": {
"rufra": {
"isPresent": false,
"lastUpdate": "2026-06-10T00:00:00",
"occurrences": []
}
}
}
Javascript
{
"cursor": null,
"jointResolution6": {
"rufra": {
"isPresent": false,
"lastUpdate": "2026-06-10T00:00:00",
"occurrences": []
}
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"jointResolution6": {
"rufra": {
"isPresent": false,
"lastUpdate": "2026-06-10T00:00:00",
"occurrences": []
}
}
}
UN Security Council
Filters BigDataCorp's pessoas/kyc sanction history down to entries with Source == unsc — UN Security Council sanctions only. Not paginated. Empty result returns {}.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="csnu",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "csnu"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/csnu' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"csnu": {
"history": []
}
}
Javascript
{
"cursor": null,
"csnu": {
"history": []
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"csnu": {
"history": []
}
}
Federal Revenue Registry
BigDataCorp pessoas/basic_data dataset, used to confirm the CPF's status with the Receita Federal. Not paginated.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="federalRevenueRegistry",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "federalRevenueRegistry"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/federalRevenueRegistry' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"federalRevenueRegistry": {
"taxIdStatus": "REGULAR"
}
}
Javascript
{
"cursor": null,
"federalRevenueRegistry": {
"taxIdStatus": "REGULAR"
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"federalRevenueRegistry": {
"taxIdStatus": "REGULAR"
}
}
Deceased Check
BigDataCorp pessoas/basic_data dataset. Not paginated. Empty result returns {}.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="deceased",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "deceased"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/deceased' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"deceased": {
"hasObitIndication": false
}
}
Javascript
{
"cursor": null,
"deceased": {
"hasObitIndication": false
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"deceased": {
"hasObitIndication": false
}
}
Negative Media
BigDataCorp pessoas/media_profile_and_exposure dataset. Not paginated. Empty result returns {}.
Parameters
Python
import starkinfra
result = starkinfra.individualholmes.get(
search_key="01234567890",
type="negativeMedia",
)
print(result)
Javascript
const starkinfra = require('starkinfra')
const result = await starkinfra.individualHolmes.get({
searchKey: "01234567890",
type: "negativeMedia"
})
console.log(result)
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
curl --location --request GET '{{baseUrl}}/individual-holmes/01234567890/negativeMedia' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
Python
{
"cursor": null,
"negativeMedia": {
"mediaProfileAndExposure": {
"totalMatches": 0,
"lastUpdate": "2026-06-12T00:00:00",
"matches": []
}
}
}
Javascript
{
"cursor": null,
"negativeMedia": {
"mediaProfileAndExposure": {
"totalMatches": 0,
"lastUpdate": "2026-06-12T00:00:00",
"matches": []
}
}
}
PHP
Java
Ruby
Elixir
C#
Go
Clojure
Curl
{
"cursor": null,
"negativeMedia": {
"mediaProfileAndExposure": {
"totalMatches": 0,
"lastUpdate": "2026-06-12T00:00:00",
"matches": []
}
}
}