curl --request GET \
--url https://api.qbank.cl/platform/v1/aml/catalogs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qbank.cl/platform/v1/aml/catalogs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qbank.cl/platform/v1/aml/catalogs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.qbank.cl/platform/v1/aml/catalogs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.qbank.cl/platform/v1/aml/catalogs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.qbank.cl/platform/v1/aml/catalogs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qbank.cl/platform/v1/aml/catalogs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"genders": [
{
"value": "male",
"label": "Male"
},
{
"value": "female",
"label": "Female"
}
],
"company_status": [
{
"value": "active",
"label": "Active"
}
],
"address_types": [
{
"value": "residential",
"label": "Residential"
}
],
"company_types": [
{
"value": "Sociedad Anónima",
"label": "Sociedad Anónima"
}
],
"source_of_income": [
{
"value": "salary",
"label": "Salary"
}
],
"source_of_wealth": [
{
"value": "business_ownership",
"label": "Business ownership"
}
],
"industries": [
{
"value": "financial_services",
"label": "Financial services"
}
],
"industry_code_types": [
{
"value": "ISIC",
"label": "ISIC Rev.4"
}
],
"company_types_by_country": {
"CL": [
{
"value": "Sociedad por Acciones",
"label": "Sociedad por Acciones"
}
]
},
"industries_by_code_type": {
"ISIC": [
{
"value": "6419",
"label": "Other monetary intermediation"
}
]
},
"industry_code_type_by_country": {
"CL": "ISIC"
},
"countries": [
{
"value": "CL",
"label": "Chile"
}
],
"country_subdivisions": {
"CL": [
{
"value": "CL-RM",
"label": "Región Metropolitana de Santiago"
}
]
},
"meta": {
"country_count": 249,
"note": "value = send to the API; label = display in the UI."
}
}{
"error": "unauthorized",
"message": "invalid or missing credentials"
}{
"error": "account_required",
"message": "this endpoint requires an account credential"
}Compliance form catalogs
Returns every catalog (list of value/label pairs) the front should use to build consistent compliance and verification forms: genders, company status, address types, company legal forms (global list plus per-country cascade), income/wealth sources, industry standards with their per-country default, and the full ISO-3166 country and subdivision lists. Static data — safe to cache for hours. value is what you send to the API; label is what you display.
curl --request GET \
--url https://api.qbank.cl/platform/v1/aml/catalogs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qbank.cl/platform/v1/aml/catalogs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qbank.cl/platform/v1/aml/catalogs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.qbank.cl/platform/v1/aml/catalogs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.qbank.cl/platform/v1/aml/catalogs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.qbank.cl/platform/v1/aml/catalogs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qbank.cl/platform/v1/aml/catalogs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"genders": [
{
"value": "male",
"label": "Male"
},
{
"value": "female",
"label": "Female"
}
],
"company_status": [
{
"value": "active",
"label": "Active"
}
],
"address_types": [
{
"value": "residential",
"label": "Residential"
}
],
"company_types": [
{
"value": "Sociedad Anónima",
"label": "Sociedad Anónima"
}
],
"source_of_income": [
{
"value": "salary",
"label": "Salary"
}
],
"source_of_wealth": [
{
"value": "business_ownership",
"label": "Business ownership"
}
],
"industries": [
{
"value": "financial_services",
"label": "Financial services"
}
],
"industry_code_types": [
{
"value": "ISIC",
"label": "ISIC Rev.4"
}
],
"company_types_by_country": {
"CL": [
{
"value": "Sociedad por Acciones",
"label": "Sociedad por Acciones"
}
]
},
"industries_by_code_type": {
"ISIC": [
{
"value": "6419",
"label": "Other monetary intermediation"
}
]
},
"industry_code_type_by_country": {
"CL": "ISIC"
},
"countries": [
{
"value": "CL",
"label": "Chile"
}
],
"country_subdivisions": {
"CL": [
{
"value": "CL-RM",
"label": "Región Metropolitana de Santiago"
}
]
},
"meta": {
"country_count": 249,
"note": "value = send to the API; label = display in the UI."
}
}{
"error": "unauthorized",
"message": "invalid or missing credentials"
}{
"error": "account_required",
"message": "this endpoint requires an account credential"
}Authorizations
Session JWT (from register/login) or API key (pk_...).
X-API-Key: <token> is accepted as an alternative header.
Response
All catalogs plus a meta block describing the cascades.
Exact enum values required when screening persons.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Flat fallback list of legal entity forms (official local language).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Legal entity forms per ISO country (GLEIF ELF); fall back to company_types when the country is missing.
Industry codes per standard (value = code, label = description).
Industry standard fixed per country (default ISIC).
ISO-3166-1 countries.
Show child attributes
Show child attributes
ISO-3166-2 subdivisions per country.
Counts plus a note describing how the cascades chain together.