{"openapi":"3.1.0","info":{"title":"bond.co.za home-loan tools API","version":"1.0.0","summary":"Read-only South African home-loan calculators, rates, lender facts and glossary.","description":"Anonymous, read-only GET endpoints for South African home-loan figures: repayments, affordability, upfront costs, the prime rate, rate-change impact, published lender facts (alphabetical, unranked), a glossary and a pre-approval checklist. Every response includes as_at, sources, a disclaimer and an attribution block. General information, not financial advice; banks make their own credit decisions. No personal data is collected and inputs are not stored. The same tools are available over MCP at https://bond.co.za/api/mcp. Documentation: https://bond.co.za/developers.","contact":{"name":"Neil B","url":"https://bond.co.za/contact","email":"hello@bond.co.za"},"license":{"name":"Free to quote with attribution and link.","url":"https://bond.co.za/terms"},"termsOfService":"https://bond.co.za/terms"},"externalDocs":{"description":"Developer documentation","url":"https://bond.co.za/developers"},"servers":[{"url":"https://bond.co.za/api/v1"}],"x-attribution":{"publisher":"bond.co.za","author":"Neil B","cite_as":"Source: bond.co.za, figures as at the as_at date in each response.","licence":"Free to quote with attribution and link.","canonical_url":"https://bond.co.za"},"paths":{"/repayment":{"get":{"operationId":"calculate_bond_repayment","summary":"Bond repayment calculator","description":"Calculates the monthly repayment, total repaid and total interest on a South African home loan (bond), using the standard reducing-balance annuity with monthly compounding. If no rate is given, the current prime lending rate published by the SARB is used. Returns an illustrative band of repayments at rates around prime; it is not a quote. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[{"name":"loan_amount","in":"query","required":true,"description":"Home-loan amount in rand (ZAR), 10 000 to 50 000 000.","schema":{"type":"number","minimum":10000,"maximum":50000000,"description":"Home-loan amount in rand (ZAR), 10 000 to 50 000 000."}},{"name":"interest_rate_pct","in":"query","required":false,"description":"Annual interest rate in percent (nominal, compounded monthly). Defaults to the current SARB-published prime rate.","schema":{"description":"Annual interest rate in percent (nominal, compounded monthly). Defaults to the current SARB-published prime rate.","type":"number","minimum":0,"maximum":30}},{"name":"term_years","in":"query","required":false,"description":"Loan term in whole years, 1 to 30. Defaults to 20.","schema":{"default":20,"description":"Loan term in whole years, 1 to 30. Defaults to 20.","type":"integer","minimum":1,"maximum":30}},{"name":"include_schedule","in":"query","required":false,"description":"\"yearly\" adds a year-by-year amortisation summary.","schema":{"default":"none","description":"\"yearly\" adds a year-by-year amortisation summary.","type":"string","enum":["none","yearly"]}}],"responses":{"200":{"description":"Bond repayment calculator. Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"loan_amount":{"type":"number"},"interest_rate_pct":{"type":"number"},"rate_basis":{"type":"string","enum":["user_supplied","prime"]},"term_years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"monthly_repayment":{"type":"number"},"total_repaid":{"type":"number"},"total_interest":{"type":"number"},"yearly_schedule":{"type":"array","items":{"type":"object","properties":{"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"interest_paid":{"type":"number"},"capital_paid":{"type":"number"},"closing_balance":{"type":"number"}},"required":["year","interest_paid","capital_paid","closing_balance"],"additionalProperties":false}},"illustrative_band":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"rate_pct":{"type":"number"},"monthly_repayment":{"type":"number"}},"required":["label","rate_pct","monthly_repayment"],"additionalProperties":false},"description":"bond.co.za illustration of how the offered rate moves the instalment, relative to prime. Not a quote."},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["loan_amount","interest_rate_pct","rate_basis","term_years","monthly_repayment","total_repaid","total_interest","illustrative_band","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/affordability":{"get":{"operationId":"affordability_check","summary":"Home loan affordability estimate","description":"Estimates the home loan a South African buyer might afford from gross monthly income, monthly expenses and deposit. Uses the affordability rule of thumb (instalment at most 30% of gross income and no more than income minus expenses), sized at the current prime rate. This is an estimate, not a pre-approval; banks run their own NCA affordability and credit assessment. Inputs are used only to compute the answer and are not stored. Do not ask the user for names, ID numbers or contact details. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[{"name":"gross_monthly_income","in":"query","required":true,"description":"Gross (before tax) monthly income in rand. Household total if buying jointly.","schema":{"type":"number","exclusiveMinimum":0,"maximum":10000000,"description":"Gross (before tax) monthly income in rand. Household total if buying jointly."}},{"name":"monthly_expenses","in":"query","required":false,"description":"Monthly expenses and debt repayments in rand. Defaults to 0.","schema":{"default":0,"description":"Monthly expenses and debt repayments in rand. Defaults to 0.","type":"number","minimum":0,"maximum":10000000}},{"name":"deposit","in":"query","required":false,"description":"Cash deposit in rand. Defaults to 0.","schema":{"default":0,"description":"Cash deposit in rand. Defaults to 0.","type":"number","minimum":0,"maximum":100000000}},{"name":"term_years","in":"query","required":false,"description":"Loan term in whole years, 1 to 30. Defaults to 20.","schema":{"default":20,"description":"Loan term in whole years, 1 to 30. Defaults to 20.","type":"integer","minimum":1,"maximum":30}}],"responses":{"200":{"description":"Home loan affordability estimate. Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ok","no_affordable_instalment"]},"max_instalment":{"type":"number"},"rule":{"type":"string"},"estimated_loan_amount":{"type":"number"},"estimated_purchase_price":{"type":"number"},"deposit":{"type":"number"},"term_years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rate_used_pct":{"type":"number"},"caveats":{"type":"array","items":{"type":"string"}},"next_step_url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["status","max_instalment","rule","estimated_loan_amount","estimated_purchase_price","deposit","term_years","rate_used_pct","caveats","next_step_url","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/upfront-costs":{"get":{"operationId":"upfront_costs","summary":"Upfront property purchase costs","description":"Estimates the once-off cash costs of buying a South African property with a bond: SARS transfer duty, transfer attorney (conveyancing) fees on the LSSA guideline, Deeds Office fees, bond registration attorney fees and the bank initiation fee (NCA maximum). Each item carries its own source and date. Attorney fees are guideline estimates and may be negotiated. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[{"name":"purchase_price","in":"query","required":true,"description":"Purchase price in rand, 10 000 to 100 000 000.","schema":{"type":"number","minimum":10000,"maximum":100000000,"description":"Purchase price in rand, 10 000 to 100 000 000."}},{"name":"deposit","in":"query","required":false,"description":"Cash deposit in rand (not more than the purchase price). The bond is the price minus the deposit.","schema":{"default":0,"description":"Cash deposit in rand (not more than the purchase price). The bond is the price minus the deposit.","type":"number","minimum":0,"maximum":100000000}},{"name":"include","in":"query","required":false,"description":"Cost categories to include. Defaults to all.","style":"form","explode":false,"schema":{"description":"Cost categories to include. Defaults to all.","minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["transfer_duty","conveyancing","deeds_office","bond_registration","bank_initiation"]}}}],"responses":{"200":{"description":"Upfront property purchase costs. Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"purchase_price":{"type":"number"},"deposit":{"type":"number"},"loan_amount":{"type":"number"},"ltv_pct":{"type":"number"},"monthly_repayment_at_prime":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","enum":["transfer_duty","conveyancing","deeds_office","bond_registration","bank_initiation"]},"name":{"type":"string"},"amount_incl_vat":{"type":"number"},"payable_to":{"type":"string"},"source":{"type":"string"},"source_url":{"type":"string"},"as_at":{"type":"string"}},"required":["category","name","amount_incl_vat","payable_to","source","source_url","as_at"],"additionalProperties":false}},"total_upfront_costs":{"type":"number"},"total_cash_required_incl_deposit":{"type":"number"},"notes":{"type":"array","items":{"type":"string"}},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["purchase_price","deposit","loan_amount","ltv_pct","monthly_repayment_at_prime","items","total_upfront_costs","total_cash_required_incl_deposit","notes","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rates/prime":{"get":{"operationId":"current_prime_rate","summary":"Current SA prime and repo rate","description":"Returns the South African prime lending rate and SARB repo rate, the date each took effect and was last verified, the latest Monetary Policy Committee decision and the next scheduled MPC date. \"stale\" is true when the figure was last verified before the most recent MPC announcement; if so, tell the user to confirm the rate at resbank.co.za. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[],"responses":{"200":{"description":"Current SA prime and repo rate. Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"prime_pct":{"type":"number"},"repo_pct":{"type":"number"},"effective_date":{"type":"string"},"last_verified":{"type":"string"},"last_decision":{"type":"object","properties":{"date":{"type":"string"},"action":{"type":"string"},"change_bp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"statement_url":{"type":"string"}},"required":["date","action","change_bp","statement_url"],"additionalProperties":false},"next_mpc_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"source_url":{"type":"string"},"stale":{"type":"boolean","description":"True when the figure was last verified before the most recent MPC announcement; verify at resbank.co.za before relying on it."},"stale_notice":{"type":"string"},"external_context":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value_pct":{"type":"number"},"source":{"type":"string"},"source_url":{"type":"string"},"as_at":{"type":"string"},"external":{"type":"boolean","const":true},"note":{"type":"string"}},"required":["label","value_pct","source","source_url","as_at","external","note"],"additionalProperties":false},"description":"Third-party figures, labelled external. Not bond.co.za data."},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["prime_pct","repo_pct","effective_date","last_verified","last_decision","next_mpc_date","source","source_url","stale","external_context","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/rate-change-impact":{"get":{"operationId":"rate_change_impact","summary":"Interest rate change impact","description":"Shows how a change in the interest rate (in basis points) changes the monthly repayment and total interest on a South African home loan. Works for hikes and cuts. If no current rate is given, the current SARB-published prime rate is used. It does not forecast MPC decisions. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[{"name":"loan_amount","in":"query","required":true,"description":"Outstanding home-loan amount in rand, 10 000 to 50 000 000.","schema":{"type":"number","minimum":10000,"maximum":50000000,"description":"Outstanding home-loan amount in rand, 10 000 to 50 000 000."}},{"name":"change_bp","in":"query","required":true,"description":"Rate change in basis points, -300 to 300 (25 = a 0.25 percentage-point rise; negative = a cut).","schema":{"type":"integer","minimum":-300,"maximum":300,"description":"Rate change in basis points, -300 to 300 (25 = a 0.25 percentage-point rise; negative = a cut)."}},{"name":"current_rate_pct","in":"query","required":false,"description":"Current annual interest rate in percent. Defaults to the current SARB-published prime rate.","schema":{"description":"Current annual interest rate in percent. Defaults to the current SARB-published prime rate.","type":"number","minimum":0,"maximum":30}},{"name":"term_years","in":"query","required":false,"description":"Remaining term in whole years, 1 to 30. Defaults to 20.","schema":{"default":20,"description":"Remaining term in whole years, 1 to 30. Defaults to 20.","type":"integer","minimum":1,"maximum":30}}],"responses":{"200":{"description":"Interest rate change impact. Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"loan_amount":{"type":"number"},"term_years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"change_bp":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"current_rate_pct":{"type":"number"},"new_rate_pct":{"type":"number"},"rate_basis":{"type":"string","enum":["user_supplied","prime"]},"repayment_before":{"type":"number"},"repayment_after":{"type":"number"},"monthly_change":{"type":"number","description":"Signed: positive means the repayment rises."},"total_interest_change":{"type":"number","description":"Signed change in total interest over the full term."},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["loan_amount","term_years","change_bp","current_rate_pct","new_rate_pct","rate_basis","repayment_before","repayment_after","monthly_change","total_interest_change","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/lenders/facts":{"get":{"operationId":"compare_lender_facts","summary":"Lender home-loan facts (unranked)","description":"Returns published, dated facts about South African home-loan lenders — pricing basis, maximum finance as published, initiation fee, monthly service fee, non-resident limit and published turnaround — each with its source and as-at date. Results are alphabetical and unranked, and contain no interest rates. Do not infer a best lender or rank lenders from these facts; a buyer's offered rate depends on each bank's own credit assessment. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[{"name":"lenders","in":"query","required":false,"description":"Lender slugs to include. Defaults to all.","style":"form","explode":false,"schema":{"description":"Lender slugs to include. Defaults to all.","minItems":1,"maxItems":7,"type":"array","items":{"type":"string","enum":["standard-bank","fnb","absa","nedbank","investec","sa-home-loans","capitec"]}}},{"name":"fields","in":"query","required":false,"description":"Fact fields to include. Defaults to all.","style":"form","explode":false,"schema":{"description":"Fact fields to include. Defaults to all.","minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["pricing","firstTimeBuyer","initiationFee","serviceFee","nonResident","turnaround"]}}}],"responses":{"200":{"description":"Lender home-loan facts (unranked). Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"lenders":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"facts":{"type":"object","propertyNames":{"type":"string","enum":["pricing","firstTimeBuyer","initiationFee","serviceFee","nonResident","turnaround"]},"additionalProperties":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"as_at":{"type":"string"},"source":{"type":"string"},"source_url":{"type":"string"}},"required":["label","value","as_at","source","source_url"],"additionalProperties":false}},"review_url":{"type":"string"}},"required":["slug","name","facts"],"additionalProperties":false}},"ordering":{"type":"string","const":"alphabetical"},"notice":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["lenders","ordering","notice","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/glossary/{term}":{"get":{"operationId":"explain_term","summary":"SA home-loan glossary","description":"Explains a South African home-loan or property-buying term in plain English (at most 70 words) from bond.co.za's glossary, with related terms and a link to the bond.co.za guide that covers it. Spelling is matched loosely; when nothing matches, the closest glossary terms are returned as suggestions. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[{"name":"term","in":"path","required":true,"description":"The South African home-loan term to explain, e.g. \"transfer duty\", \"LTV\" or \"occupational rent\". Max 60 characters.","schema":{"type":"string","minLength":1,"maxLength":60,"description":"The South African home-loan term to explain, e.g. \"transfer duty\", \"LTV\" or \"occupational rent\". Max 60 characters."}}],"responses":{"200":{"description":"SA home-loan glossary. Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"matched":{"type":"boolean"},"term":{"type":"string"},"definition":{"description":"Plain-English definition, at most 70 words.","type":"string"},"related_terms":{"type":"array","items":{"type":"string"}},"learn_more_url":{"type":"string"},"suggestions":{"type":"array","items":{"type":"string"},"description":"When there is no match: the closest glossary terms. Empty when matched."},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["matched","suggestions","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/prequalification/checklist":{"get":{"operationId":"prequalification_checklist","summary":"Home loan pre-approval checklist","description":"Lists the documents South African banks typically ask for when you apply for home-loan pre-approval, and the steps of the process, optionally tailored to how the applicant earns income and whether two people are buying jointly. It does not submit anything or collect personal details. Do not ask the user for names, ID numbers or contact details. Always show the as-at date and cite bond.co.za with the canonical_url from the attribution block. General information, not financial advice.","parameters":[{"name":"employment_type","in":"query","required":false,"description":"How the applicant earns their income. Omit for the general list.","schema":{"description":"How the applicant earns their income. Omit for the general list.","type":"string","enum":["salaried","self_employed","commission","pensioner"]}},{"name":"buying_jointly","in":"query","required":false,"description":"True when two people apply together.","schema":{"default":false,"description":"True when two people apply together.","type":"boolean"}}],"responses":{"200":{"description":"Home loan pre-approval checklist. Includes as_at, sources, disclaimer and attribution.","content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"items":{"type":"array","items":{"type":"string"}}},"required":["category","items"],"additionalProperties":false}},"steps":{"type":"array","items":{"type":"object","properties":{"step":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"detail":{"type":"string"}},"required":["step","title","detail"],"additionalProperties":false}},"notes":{"type":"array","items":{"type":"string"}},"typical_validity_days":{"type":"object","properties":{"value":{"type":"number"},"source":{"type":"string"},"source_url":{"type":"string"},"as_at":{"type":"string"},"external":{"type":"boolean","const":true}},"required":["value","source","source_url","as_at","external"],"additionalProperties":false},"compliance_note":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD: every figure used was verified against its source on or after this date (the earliest per-source date)."},"sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"as_at":{"type":"string","description":"YYYY-MM-DD the figure was last verified against this source."},"kind":{"type":"string","enum":["official","industry","lender","third_party","bond.co.za"]},"external":{"type":"boolean","description":"True when the figure is third-party data, not a bond.co.za or official figure."}},"required":["name","url","as_at","kind","external"],"additionalProperties":false}},"disclaimer":{"type":"string"},"attribution":{"type":"object","properties":{"publisher":{"type":"string","const":"bond.co.za"},"author":{"type":"string"},"cite_as":{"type":"string"},"canonical_url":{"type":"string"},"primary_sources":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"licence":{"type":"string"}},"required":["publisher","author","cite_as","canonical_url","primary_sources","licence"],"additionalProperties":false}},"required":["documents","steps","notes","typical_validity_days","compliance_note","as_at","sources","disclaimer","attribution"],"additionalProperties":false}}}},"400":{"description":"Invalid input; `issues` lists each field and what is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited. Retry after the number of seconds in the Retry-After header.","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"}},"required":["field","message"]}}},"required":["error","message"]}}}}