{
    "openapi": "3.1.0",
    "info": {
        "title": "rendafixa.api.br API",
        "version": "1.0.0",
        "summary": "Títulos de renda fixa do Brasil com retorno líquido após IR e ganho real acima do IPCA.",
        "description": "CDB, LCI, LCA, CRI, CRA, debêntures e Tesouro Direto de vários bancos e corretoras, atualizados diariamente, com retorno líquido após IR e ganho real acima do IPCA já calculados a partir das projeções do Boletim Focus.\n\n**Sem chave**, a resposta é uma prévia de até 5 títulos (`status: \"preview\"`). **Com uma chave de uma conta com assinatura ativa**, todos os títulos. Chaves em https://rendafixa.api.br/user/api-keys, planos em https://rendafixa.api.br/pricing.\n\nA API sempre responde HTTP 200; o resultado da autenticação vem em `response.status`.\n\nTambém disponível como servidor MCP remoto em https://rendafixa.api.br/mcp (Streamable HTTP), para assistentes como Claude, ChatGPT e Cursor.",
        "contact": {
            "name": "rendafixa.api.br",
            "url": "https://rendafixa.api.br/about"
        },
        "termsOfService": "https://rendafixa.api.br/pricing"
    },
    "externalDocs": {
        "description": "Documentação completa",
        "url": "https://rendafixa.api.br/docs/api"
    },
    "servers": [
        {
            "url": "https://rendafixa.api.br"
        }
    ],
    "security": [
        {},
        {
            "bearerAuth": []
        },
        {
            "keyQuery": []
        }
    ],
    "tags": [
        {
            "name": "Títulos",
            "description": "Ofertas de renda fixa ativas."
        }
    ],
    "paths": {
        "/api/": {
            "get": {
                "operationId": "listBonds",
                "tags": [
                    "Títulos"
                ],
                "summary": "Listar títulos de renda fixa",
                "description": "Títulos ativos, opcionalmente filtrados. Filtros de múltiplos valores aceitam lista separada por vírgula. Valores fora das listas aceitas são ignorados. Intervalo mínimo de 5 s entre chamadas com chave.",
                "parameters": [
                    {
                        "in": "query",
                        "required": false,
                        "description": "Tipos de produto.",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "cdb",
                                    "lci",
                                    "lca",
                                    "cri",
                                    "cra",
                                    "deb",
                                    "tpf",
                                    "td",
                                    "lf",
                                    "misc"
                                ]
                            }
                        },
                        "example": "cdb,lci",
                        "name": "product"
                    },
                    {
                        "in": "query",
                        "required": false,
                        "description": "Indexadores. Codifique o + como %2B na URL.",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "cdi*",
                                    "cdi+",
                                    "ipca*",
                                    "ipca+",
                                    "selic*",
                                    "selic+",
                                    "pre"
                                ]
                            }
                        },
                        "example": "ipca+,cdi+",
                        "name": "index"
                    },
                    {
                        "in": "query",
                        "required": false,
                        "description": "Códigos de banco/corretora (campo bank da resposta).",
                        "style": "form",
                        "explode": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        },
                        "example": "77,208",
                        "name": "bank"
                    },
                    {
                        "name": "tax_free",
                        "in": "query",
                        "required": false,
                        "description": "1: só isentos de IR. 0: só tributados.",
                        "schema": {
                            "type": "integer",
                            "enum": [
                                0,
                                1
                            ]
                        }
                    },
                    {
                        "name": "fgc",
                        "in": "query",
                        "required": false,
                        "description": "1: só com cobertura do FGC. 0: só sem.",
                        "schema": {
                            "type": "integer",
                            "enum": [
                                0,
                                1
                            ]
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "required": false,
                        "description": "json (padrão) ou csv, para planilhas: =IMPORTDATA(url) no Google Sheets, Dados > Da Web no Excel.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "json",
                                "csv"
                            ],
                            "default": "json"
                        }
                    },
                    {
                        "name": "locale",
                        "in": "query",
                        "required": false,
                        "description": "Só com format=csv. pt-BR: vírgula decimal e VERDADEIRO/FALSO, para planilhas em português.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "pt-BR"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Títulos (ou lista vazia) e o resultado da autenticação.",
                        "headers": {
                            "X-RF-Status": {
                                "description": "Só em format=csv: o mesmo valor de response.status.",
                                "schema": {
                                    "type": "string"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BondList"
                                }
                            },
                            "text/csv": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "name,bank,bank_name,product,index,rate,fgc_protection,tax_free,exclusive,min_investment,maturity_date,early_withdrawal,rating,payment_probability,net_annualized_return,real_annualized_return\nCDB 360 DIAS,77,Banco Inter,cdb,cdi*,1.05,TRUE,FALSE,FALSE,100,2027-05-08,TRUE,AA+,0.9823,0.1165,0.0676\n"
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "description": "Authorization: Bearer rf_SUA_CHAVE (recomendado)."
            },
            "keyQuery": {
                "type": "apiKey",
                "in": "query",
                "name": "key",
                "description": "?key=rf_SUA_CHAVE, para navegador e planilhas."
            }
        },
        "schemas": {
            "Bond": {
                "type": "object",
                "required": [
                    "name",
                    "bank",
                    "bank_name",
                    "product",
                    "index",
                    "rate",
                    "fgc_protection",
                    "tax_free",
                    "exclusive",
                    "min_investment",
                    "maturity_date",
                    "early_withdrawal",
                    "rating",
                    "payment_probability",
                    "net_annualized_return",
                    "real_annualized_return"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Nome do título.",
                        "example": "CDB 360 DIAS"
                    },
                    "bank": {
                        "type": "integer",
                        "description": "Código numérico do banco emissor ou da corretora.",
                        "example": 77
                    },
                    "bank_name": {
                        "type": "string",
                        "description": "Nome do banco emissor ou da corretora.",
                        "example": "Banco Inter"
                    },
                    "product": {
                        "type": "string",
                        "enum": [
                            "cdb",
                            "lci",
                            "lca",
                            "cri",
                            "cra",
                            "deb",
                            "tpf",
                            "td",
                            "lf",
                            "misc"
                        ],
                        "description": "Tipo de produto."
                    },
                    "index": {
                        "type": "string",
                        "enum": [
                            "cdi*",
                            "cdi+",
                            "ipca*",
                            "ipca+",
                            "selic*",
                            "selic+",
                            "pre"
                        ],
                        "description": "Indexador. cdi* = % do CDI, cdi+ = CDI + spread, ipca+ = IPCA + spread, pre = taxa fixa."
                    },
                    "rate": {
                        "type": "number",
                        "description": "Fator ou spread do indexador, em decimal: 1.05 com cdi* = 105% do CDI; 0.06 com ipca+ = IPCA + 6% a.a.",
                        "example": 1.05
                    },
                    "fgc_protection": {
                        "type": "boolean",
                        "description": "Coberto pelo FGC (até R$ 250.000 por CPF por instituição)."
                    },
                    "tax_free": {
                        "type": "boolean",
                        "description": "Isento de IR para pessoa física."
                    },
                    "exclusive": {
                        "type": "boolean",
                        "description": "Restrito a investidores qualificados."
                    },
                    "min_investment": {
                        "type": "number",
                        "description": "Aplicação mínima em reais.",
                        "example": 100
                    },
                    "maturity_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Vencimento (YYYY-MM-DD).",
                        "example": "2027-05-08"
                    },
                    "early_withdrawal": {
                        "type": "boolean",
                        "description": "Permite resgate antes do vencimento."
                    },
                    "rating": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Rating de crédito do emissor, \"-\" quando omitido para o banco, null quando indisponível.",
                        "example": "AA+"
                    },
                    "payment_probability": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Probabilidade de pagamento no vencimento, pelo rating e prazo. Decimal.",
                        "example": 0.9823
                    },
                    "net_annualized_return": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Retorno líquido anualizado após IR até o vencimento, com SELIC e IPCA projetados pelo Boletim Focus. Decimal: 0.1165 = 11,65% a.a.",
                        "example": 0.1165
                    },
                    "real_annualized_return": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Ganho real anualizado acima do IPCA (equação de Fisher). Decimal.",
                        "example": 0.0676
                    }
                }
            },
            "BondList": {
                "type": "object",
                "required": [
                    "response",
                    "bonds"
                ],
                "properties": {
                    "response": {
                        "type": "object",
                        "required": [
                            "status",
                            "description"
                        ],
                        "properties": {
                            "status": {
                                "type": "string",
                                "enum": [
                                    "ok",
                                    "preview",
                                    "unauthorized",
                                    "no_subscription",
                                    "payment_issue",
                                    "rate_limited"
                                ],
                                "description": "ok: todos os títulos. preview: sem chave, até 5 títulos. Os demais: nenhum título."
                            },
                            "description": {
                                "type": "string"
                            }
                        }
                    },
                    "bonds": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Bond"
                        }
                    }
                }
            }
        }
    }
}