{"openapi":"3.1.0","info":{"title":"BDT Rates public API","version":"1","summary":"Read-only remittance exchange rates to Bangladeshi taka (BDT).","description":"JSON responses read from the database through a 60-second cache. Rates are collected about every 12 hours, independently of website deployments. No API key is needed. Poll at most once an hour and reuse responses; send a descriptive User-Agent. Rates are collected from publicly accessible provider pages and may not reflect the actual transfer rate. Fees, payment and delivery method can change the amount received. nsave rates require a paid Pro subscription. Confirm the final BDT amount with the provider before sending money.","termsOfService":"https://bdt-rates.com/terms","contact":{"email":"hello@bdt-rates.com"}},"externalDocs":{"url":"https://bdt-rates.com/api-docs"},"servers":[{"url":"https://bdt-rates.com"}],"paths":{"/api/v1/index.json":{"get":{"operationId":"getIndex","summary":"Supported currencies, the best rate for each and links to every file","responses":{"200":{"description":"Snapshot index","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Index"}}}},"429":{"description":"Too many requests from this address. Wait at least 10 seconds before retrying."},"503":{"description":"Rates temporarily unavailable; retry later","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/rates/{currency}.json":{"get":{"operationId":"getRates","summary":"Every provider for one sending currency, ranked","parameters":[{"name":"currency","in":"path","required":true,"description":"Sending currency code in lowercase.","schema":{"type":"string","enum":["usd","gbp","eur","cad","aud","nzd","aed","myr","sar","omr","bhd","thb","mvr"]}}],"responses":{"200":{"description":"Provider rates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Rates"}}}},"404":{"description":"Unknown file. Start from /api/v1/index.json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests from this address. Wait at least 10 seconds before retrying."},"503":{"description":"Rates temporarily unavailable; retry later","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/history/{currency}.json":{"get":{"operationId":"getHistory","summary":"14-day rate history for every provider of one sending currency","parameters":[{"name":"currency","in":"path","required":true,"description":"Sending currency code in lowercase.","schema":{"type":"string","enum":["usd","gbp","eur","cad","aud","nzd","aed","myr","sar","omr","bhd","thb","mvr"]}}],"responses":{"200":{"description":"Provider history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/History"}}}},"404":{"description":"Unknown file. Start from /api/v1/index.json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests from this address. Wait at least 10 seconds before retrying."},"503":{"description":"Rates temporarily unavailable; retry later","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","enum":["not_found","rates_unavailable","method_not_allowed"]},"index_url":{"type":"string"}}},"BestRate":{"type":"object","required":["provider_id","provider","rate","status","last_updated"],"properties":{"provider_id":{"type":"string"},"provider":{"type":"string"},"rate":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."},"status":{"$ref":"#/components/schemas/RateStatus"},"last_updated":{"type":["string","null"],"format":"date-time"}}},"CurrencySummary":{"type":"object","required":["currency","unit","page_url","rates_url","history_url","last_updated","providers","best_rate"],"properties":{"currency":{"type":"string","enum":["USD","GBP","EUR","CAD","AUD","NZD","AED","MYR","SAR","OMR","BHD","THB","MVR"]},"unit":{"type":"string","examples":["BDT per 1 USD"]},"page_url":{"type":"string"},"rates_url":{"type":"string"},"history_url":{"type":"string"},"last_updated":{"type":["string","null"],"format":"date-time"},"providers":{"type":"integer","minimum":0},"best_rate":{"oneOf":[{"$ref":"#/components/schemas/BestRate"},{"type":"null"}]}}},"Index":{"type":"object","required":["schema_version","generated_at","data_as_of","currencies","disclaimer"],"properties":{"schema_version":{"type":"integer","const":3},"generated_at":{"type":"string","format":"date-time"},"data_as_of":{"type":["string","null"],"format":"date-time","description":"Time of the newest quote in this snapshot."},"update_policy":{"type":"string"},"usage_policy":{"type":"string"},"openapi_url":{"type":"string"},"terms_url":{"type":"string"},"currencies":{"type":"array","items":{"$ref":"#/components/schemas/CurrencySummary"}},"disclaimer":{"type":"string"}}},"RateStatus":{"type":"string","enum":["current","stale","last_known","unavailable"],"description":"Freshness when the file was generated. A current quote becomes stale after stale_after."},"ProviderRate":{"type":"object","required":["rank","provider_id","provider","rate","status","best_rate","possible_promotional","last_updated","stale_after","payout_methods","history_14d"],"properties":{"rank":{"type":"integer","minimum":1},"provider_id":{"type":"string"},"provider":{"type":"string"},"rate":{"oneOf":[{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."},{"type":"null"}]},"status":{"$ref":"#/components/schemas/RateStatus"},"best_rate":{"type":"boolean"},"possible_promotional":{"type":"boolean","deprecated":true,"description":"Deprecated; always false. Providers are read for their regular rate, not first-transfer offers."},"last_updated":{"type":["string","null"],"format":"date-time"},"stale_after":{"type":["string","null"],"format":"date-time"},"payout_methods":{"type":"array","items":{"type":"string","enum":["Bank","Mobile Wallet","Cash Pickup"]}},"history_14d":{"oneOf":[{"type":"object","required":["change_pct","low","high"],"properties":{"change_pct":{"type":"number"},"low":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."},"high":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."}}},{"type":"null"}]}}},"Rates":{"type":"object","required":["schema_version","generated_at","currency","unit","page_url","history_url","last_updated","rates","disclaimer"],"properties":{"schema_version":{"type":"integer","const":3},"generated_at":{"type":"string","format":"date-time"},"currency":{"type":"string","enum":["USD","GBP","EUR","CAD","AUD","NZD","AED","MYR","SAR","OMR","BHD","THB","MVR"]},"unit":{"type":"string"},"page_url":{"type":"string"},"history_url":{"type":"string"},"last_updated":{"type":["string","null"],"format":"date-time"},"rates":{"type":"array","description":"Providers ranked as the page shows them.","items":{"$ref":"#/components/schemas/ProviderRate"}},"other_currency_pages":{"type":"array","description":"Every other sending currency and its page on the site.","items":{"type":"object","required":["currency","url"],"properties":{"currency":{"type":"string","enum":["USD","GBP","EUR","CAD","AUD","NZD","AED","MYR","SAR","OMR","BHD","THB","MVR"]},"url":{"type":"string"}}}},"disclaimer":{"type":"string"}}},"ProviderHistory":{"type":"object","required":["provider_id","provider","summary","snapshots_oldest_first"],"properties":{"provider_id":{"type":"string"},"provider":{"type":"string"},"summary":{"oneOf":[{"type":"object","properties":{"latest":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."},"high":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."},"low":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."},"average":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."},"change":{"type":"number"},"change_pct":{"type":"number"}}},{"type":"null"}]},"snapshots_oldest_first":{"type":"array","items":{"type":"object","required":["time","rate"],"properties":{"time":{"type":["string","null"],"format":"date-time"},"rate":{"type":"number","description":"BDT received per 1 unit of the sending currency, as displayed."}}}}}},"History":{"type":"object","required":["schema_version","generated_at","currency","unit","retention_days","providers","disclaimer"],"properties":{"schema_version":{"type":"integer","const":3},"generated_at":{"type":"string","format":"date-time"},"currency":{"type":"string","enum":["USD","GBP","EUR","CAD","AUD","NZD","AED","MYR","SAR","OMR","BHD","THB","MVR"]},"unit":{"type":"string"},"retention_days":{"type":"integer","const":14},"page_url":{"type":"string"},"providers":{"type":"array","items":{"$ref":"#/components/schemas/ProviderHistory"}},"disclaimer":{"type":"string"}}}}}}