Retrieve product
Returns the sale envelope of a product enabled for your integration: the active coverages with their option spaces, the dependencies between coverages, your default values and your commission band. With this response you have everything needed to build a valid quote.
Request
ENDPOINT
/v1/product_catalog/products/{product_key}METHOD
GETPath params
| Parameter | Type | Required | Description |
|---|---|---|---|
product_key | string | required | Product key, obtained from the product listing. |
Response
STATUS
200Response Body
{
"product_key": "9d1f8c7a-3b21-4e60-8a2f-1c5d7e9b0a44",
"name": "Prestamista Master",
"product_category": "insurance",
"insurance_class": "credit_life",
"contract_instrument_type": "ticket",
"regulator_registration": "15414.900123/2025-77",
"provider_name": "QI Seguradora",
"commission_bounds": {
"minimum_rate": 0.05,
"maximum_rate": 0.20,
"default_rate": 0.15
},
"services": [
{
"service_key": "0a3c5e7f-2b4d-4a6c-8e0f-1a3b5c7d9e2f",
"service_type": "credit_life",
"service_category": "insurance",
"mandatory": true,
"maximum_insured_amount": 500000.00,
"deductible_options": {
"deductible_type": "monetary_amount",
"options_type": "list",
"options": [0.00, 1500.00, 3000.00]
},
"waiting_period_options": {
"waiting_period_type": "days",
"options_type": "range",
"options": {
"minimum": 0,
"maximum": 90,
"step": 30
}
},
"indemnity_unit_options": null,
"regulator_registration": null,
"dependencies": {
"include": [],
"exclude": []
},
"service_attributes": null,
"default_configuration": {
"insured_amount_basis": "percentage_of_risk_value",
"insured_amount": null,
"insured_amount_percentage": 0.8000,
"unit_amount": null,
"unit_count": null,
"deductible_data": {
"deductible_type": "monetary_amount",
"value": 1500.00
},
"waiting_period_days": 30
}
}
]
}
Response attributes
| Field | Type | Description |
|---|---|---|
product_key | string | Unique product key. |
name | string | Commercial name of the product. |
product_category | string | Product category: insurance, capitalization or benefit. |
insurance_class | string | SUSEP line of business of the product. null for non-insurance products. |
contract_instrument_type | string | The product's contract instrument: ticket or policy. It determines the contracting flow and which acceptance methods are legal — see Create order. null for non-insurance products. |
regulator_registration | string | SUSEP registration of the product (Código SUSEP). |
provider_name | string | Name of the partner insurer. |
commission_bounds | object | Your commission band for this product: minimum_rate, maximum_rate and default_rate (decimal rates with 4 places). The quote/order commission is validated against [minimum_rate, maximum_rate]; when omitted, default_rate applies. |
services | array | Active coverages of the product. |
Object in services
| Field | Type | Description |
|---|---|---|
service_key | string | Unique coverage key. Use it in the services list of the quote and the order. |
service_type | string | Coverage type (e.g. credit_life). |
service_category | string | Coverage category: insurance, capitalization or benefit. |
mandatory | boolean | Mandatory coverage in every sale of the product. A selection omitting it is rejected with MISSING_MANDATORY_SERVICE. |
maximum_insured_amount | number | Maximum accepted insured amount. null for coverages without an insured amount (benefits). |
deductible_options | object | Typed envelope of the accepted deductibles (see below). null means the coverage has no deductible — sending deductible_data for it is rejected. |
waiting_period_options | object | Typed envelope of the accepted waiting periods (see below). null means the coverage has no waiting period. |
indemnity_unit_options | object | Typed envelope of the accepted indemnity units, for unit-priced coverages (e.g. "BRL 100 per daily benefit, up to 60 dailies"). null means the coverage is not unit-priced — sending unit_amount/unit_count for it is refused with OUT_OF_OPTION_SPACE. |
regulator_registration | string | Coverage-specific SUSEP registration. null means the coverage inherits the product's registration. |
dependencies | object | Structural rules between coverages of this product: include (prerequisite coverage keys — every listed coverage must be in the selection) and exclude (mutually exclusive keys — they cannot coexist in the selection). |
service_attributes | object | Fixed coverage attributes defined by the insurer (e.g. quantities of a benefit). Echoed at quote time. |
default_configuration | object | Your configured default for this coverage — what the quote fills in automatically when the selection omits services. Every value field is emitted, null on the ones that do not apply; insured_amount_basis says which one is live. The values come in the same shape you would submit in the selection, ready to reuse. null when no default is configured. |
Option envelopes (deductible_options / waiting_period_options / indemnity_unit_options)
| Field | Type | Description |
|---|---|---|
deductible_type | string | Deductible type: monetary_amount, days or percentage_of_insured_amount. Present in deductible_options. |
waiting_period_type | string | Waiting period type: days. Present in waiting_period_options. |
indemnity_unit_type | string | Indemnity unit type (e.g. daily). Present in indemnity_unit_options. |
options_type | string | Shape of the option space: list (list of accepted values) or range (interval {minimum, maximum, step}; a null step means a continuous interval). |
options | array / object | The accepted values, in the shape indicated by options_type. |
default_configuration object
| Field | Type | Description |
|---|---|---|
insured_amount_basis | string | Insured amount basis: monetary_amount (absolute amount), percentage_of_risk_value (percentage of the risk object's value) or unit_amount_times_count (per-unit amount × unit count). It says which of the value fields below is live. |
insured_amount | number | Insured amount in BRL. Present when the basis is monetary_amount. |
insured_amount_percentage | number | Percentage of the risk object's value, in (0, 1] (1.0000 = 100%). Present when the basis is percentage_of_risk_value; null otherwise. |
unit_amount | number | Amount per indemnity unit. Present when the basis is unit_amount_times_count; null otherwise. |
unit_count | integer | Number of indemnity units. Present when the basis is unit_amount_times_count; null otherwise. |
deductible_data | object | Default deductible, in the same typed shape sent in the selection: { deductible_type, value }. |
waiting_period_days | integer | Default waiting period, in days. |
Possible errors
Every error (non-2xx) returns the standard body { "title", "description", "translation", "code" } — treat only the code field programmatically.
| Status | Code | Description |
|---|---|---|
401 / 403 | — | Authentication or authorization failure. |
404 | CAT000040 | The product does not exist, is inactive or is not enabled for your integration — the three cases are indistinguishable. |
429 | — | Request rate limit exceeded — retry with backoff. |
500 | QIT000500 | Internal error — safe to retry the call. |
503 | CAT000033 | Service unavailable — safe to retry the call. |