{"openapi":"3.0.3","info":{"title":"Mansa API","version":"0.1.0","description":"African data infrastructure for developers and AI agents. Live market data, NGX equities, ETFs, indices, location data, and identity reference data built in Lagos.","termsOfService":"https://mansaapi.com/terms","contact":{"name":"Mansa API support","url":"https://mansaapi.com/docs","email":"api@mansamarkets.com"}},"servers":[{"url":"https://mansaapi.com","description":"Primary domain"}],"tags":[{"name":"Platform","description":"Health and operational metadata."},{"name":"Auth","description":"Issue and manage API access."},{"name":"Markets","description":"African exchange, quote, ETF, index, forex, and commodity data."},{"name":"Location","description":"African country, state, and holiday reference data."},{"name":"Identity","description":"Bank and financial identity reference data."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Use Authorization: Bearer mansa_live_sk_..."}}},"paths":{"/health":{"get":{"tags":["Platform"],"summary":"Return platform and suite health, including market freshness metadata.","operationId":"get__health","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/keys":{"post":{"tags":["Auth"],"summary":"Issue a free standard key instantly or submit a higher-tier request.","operationId":"post__api_v1_keys","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string","example":"Ada Lovelace"},"email":{"type":"string","example":"ada@example.com"},"tier":{"type":"string","example":"standard"},"project_description":{"type":"string"},"project_type":{"type":"string"},"requested_suites":{"type":"array","items":{"type":"string","enum":["markets","bank_codes","location","mobile_networks","currencies","holidays","not_sure"]},"example":["markets","bank_codes"]},"primary_use_case":{"type":"string","example":"Fintech app"},"target_countries":{"type":"array","items":{"type":"string"},"example":["NG","GH"]},"expected_volume":{"type":"string","enum":["testing","small","production","enterprise","not_sure"],"example":"testing"},"company_website":{"type":"string","example":"https://example.com"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges":{"get":{"tags":["Markets"],"summary":"Return all tracked exchanges with latest snapshot metadata.","operationId":"get__api_v1_markets_exchanges","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}":{"get":{"tags":["Markets"],"summary":"Return a single exchange and its latest index snapshot.","operationId":"get__api_v1_markets_exchanges_exchange_code_","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/stocks":{"get":{"tags":["Markets"],"summary":"Return stocks for a single exchange.","operationId":"get__api_v1_markets_exchanges_exchange_code_stocks","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum rows to return, capped at 200."},{"name":"offset","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination offset."},{"name":"sector","in":"query","required":false,"schema":{"type":"string"},"description":"Optional sector filter."},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string"},"description":"ticker, price, change_pct, or volume."},{"name":"order","in":"query","required":false,"schema":{"type":"string"},"description":"asc or desc."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}":{"get":{"tags":["Markets"],"summary":"Return a single stock with quote and reference fields.","operationId":"get__api_v1_markets_exchanges_exchange_code_stocks_ticker_","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange ticker symbol."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/movers":{"get":{"tags":["Markets"],"summary":"Return top gainers and losers for an exchange.","operationId":"get__api_v1_markets_exchanges_exchange_code_movers","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum movers to return, capped at 20."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"gainers, losers, or both."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}/history":{"get":{"tags":["Markets"],"summary":"Return daily OHLCV price history for a stock from the deep archive. Depth varies by market: South Africa (JSE) from 1980, Kenya from 1992, Morocco and Tunisia from 1994, Egypt and Botswana from 1995, Ghana/Zambia/Mauritius/Namibia from 1996, Zimbabwe (ZSE) from 2011. VFEX coverage begins July 2026 and builds forward daily. 17 African exchanges, ~1,400 stocks, ~5M daily records. Pro plan and above. Every response carries a price_unit field: it is \"major\" on all markets except South Africa (JSE), where the archive is denominated in cents — ZAR/100 — for the full history back to 1980, while live quotes on the stocks endpoints are in rand. Divide JSE history by 100 to combine the two in one series.","operationId":"get__api_v1_markets_exchanges_exchange_code_stocks_ticker_history","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange ticker symbol."},{"name":"range","in":"query","required":false,"schema":{"type":"string"},"description":"Time window: 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y, ALL. Defaults to 1Y. Ignored if from/to are set."},{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"Earliest trade date to include, YYYY-MM-DD."},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"Latest trade date to include, YYYY-MM-DD."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum rows to return, capped at 20000."},{"name":"order","in":"query","required":false,"schema":{"type":"string"},"description":"asc (oldest first, default) or desc (newest first)."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}/fundamentals":{"get":{"tags":["Markets"],"summary":"Return fundamentals for a stock: market cap, sector, 52-week high/low, TTM dividend yield.","operationId":"get__api_v1_markets_exchanges_exchange_code_stocks_ticker_fundamentals","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange ticker symbol."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/search":{"get":{"tags":["Markets"],"summary":"Search stocks by ticker or name across one or all African exchanges.","operationId":"get__api_v1_markets_search","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Search query, minimum 1 character."},{"name":"exchange","in":"query","required":false,"schema":{"type":"string"},"description":"Optional exchange code filter (e.g. NIGERIA, NGX)."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum results, capped at 50. Defaults to 20."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/trending":{"get":{"tags":["Markets"],"summary":"Return trending stocks by volume across all live African exchanges.","operationId":"get__api_v1_markets_trending","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum results, capped at 50. Defaults to 10."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/movers/pan-african":{"get":{"tags":["Markets"],"summary":"Return top movers across all live African exchanges.","operationId":"get__api_v1_markets_movers_pan_african","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum movers to return, capped at 20."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/indices":{"get":{"tags":["Markets"],"summary":"Return latest tracked African market indices.","operationId":"get__api_v1_markets_indices","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/indices/{index_code}/history":{"get":{"tags":["Markets"],"summary":"Return daily historical values for a tracked African index. Depth varies by index: NGX ASI from 1996, JSE All Share from 1995, SEMDEX from 1990, EGX 30 and TUNINDEX from 1998, MASI from 2002, most frontier indices from 2015. Index codes are slug-insensitive (e.g. ngx-asi, jse-asi, egx-30, gse-ci, brvm-ci, masi, tunindex, nsx-oi).","operationId":"get__api_v1_markets_indices_index_code_history","parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"Earliest trade date to include, YYYY-MM-DD."},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"Latest trade date to include, YYYY-MM-DD."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/indices":{"get":{"tags":["Markets"],"summary":"Return available index snapshots for a tracked African exchange. DSE returns TSI, DSEI, BI, IA, and CS when the DSE feed has current data.","operationId":"get__api_v1_markets_exchanges_exchange_code_indices","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/indices/{code}":{"get":{"tags":["Markets"],"summary":"Return a single benchmark or sector index by code or alias. For Tanzania, valid codes include TSI, DSEI, BI, IA, and CS.","operationId":"get__api_v1_markets_exchanges_exchange_code_indices_code_","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"code","in":"path","required":true,"schema":{"type":"string"},"description":"NGX index code or slug, for example ASI or ngx-bnk."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/indices/{code}/history":{"get":{"tags":["Markets"],"summary":"Return historical benchmark index points for a tracked exchange. Supports range=1D, 1W, 1M, 3M, 1Y, or ALL.","operationId":"get__api_v1_markets_exchanges_exchange_code_indices_code_history","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"code","in":"path","required":true,"schema":{"type":"string"},"description":"NGX index code or slug, for example ASI or ngx-bnk."},{"name":"range","in":"query","required":false,"schema":{"type":"string"},"description":"History window. One of 1D, 1W, 1M, 3M, 1Y, ALL. Defaults to 1M."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/NGX/indices":{"get":{"tags":["Markets"],"summary":"Return the full NGX index universe snapshot. Database-backed, persisted in Supabase-backed snapshots, refreshed every 30 minutes, and consumed by Mansa Markets ingestion.","operationId":"get__api_v1_markets_exchanges_NGX_indices","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/NGX/indices/{code}":{"get":{"tags":["Markets"],"summary":"Return a single NGX index by code or slug. Valid lookups include ASI and ngx-bnk.","operationId":"get__api_v1_markets_exchanges_NGX_indices_code_","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"},"description":"NGX index code or slug, for example ASI or ngx-bnk."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/NGX/etfs":{"get":{"tags":["Markets"],"summary":"Return the full NGX ETF universe snapshot. Database-backed, persisted in Supabase-backed snapshots, refreshed every 30 minutes, and consumed by Mansa Markets ingestion.","operationId":"get__api_v1_markets_exchanges_NGX_etfs","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/NGX/etfs/{symbol}":{"get":{"tags":["Markets"],"summary":"Return a single NGX ETF by canonical symbol. Example: NEWGOLD.","operationId":"get__api_v1_markets_exchanges_NGX_etfs_symbol_","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"},"description":"NGX ETF canonical, shorthand, legacy, or vendor symbol, for example NEWGOLD or LOTUSHAL."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/NGX/etfs/resolve/{symbol}":{"get":{"tags":["Markets"],"summary":"Resolve legacy, shorthand, or vendor ETF tickers into canonical NGX ETF symbols used by the API.","operationId":"get__api_v1_markets_exchanges_NGX_etfs_resolve_symbol_","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"},"description":"NGX ETF canonical, shorthand, legacy, or vendor symbol, for example NEWGOLD or LOTUSHAL."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/dividends/{ticker}":{"get":{"tags":["Markets"],"summary":"Return dividend history for a stock: ex-dividend dates, record dates, pay dates, and dividend-per-share amounts. NGX only. Premium tier.","operationId":"get__api_v1_markets_exchanges_exchange_code_dividends_ticker_","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange ticker symbol."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum records to return. Omit for full history."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/disclosures":{"get":{"tags":["Markets"],"summary":"Return NGX regulatory filings and company announcements: financial reports, corporate actions, price-sensitive notices. NGX only. Premium tier.","operationId":"get__api_v1_markets_exchanges_exchange_code_disclosures","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"symbol","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by stock ticker, e.g. GTCO."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by disclosure type, e.g. FinancialStatement."},{"name":"company","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by company name substring."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum records to return."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/insider-trades":{"get":{"tags":["Markets"],"summary":"Return director and insider dealings parsed from NGX PDF disclosures: transaction type, volume, price, and post-trade holdings. NGX only. Premium tier.","operationId":"get__api_v1_markets_exchanges_exchange_code_insider_trades","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"symbol","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by stock ticker."},{"name":"side","in":"query","required":false,"schema":{"type":"string"},"description":"buy or sell."},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"description":"Lookback window in days."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum records to return, capped at 500."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/recommendations":{"get":{"tags":["Markets"],"summary":"Return weekly broker recommendations and per-ticker consensus (BUY/HOLD/SELL) compiled from Nigerian stockbroker research. NGX only. Premium tier.","operationId":"get__api_v1_markets_exchanges_exchange_code_recommendations","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"week","in":"query","required":false,"schema":{"type":"string"},"description":"Specific week key, e.g. 2026-W21. Defaults to latest."},{"name":"weeks","in":"query","required":false,"schema":{"type":"string"},"description":"Pass 'list' to return available week keys instead of recommendations."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/ngxdata/indices":{"get":{"tags":["Markets"],"summary":"Legacy compatibility route for /api/v1/markets/exchanges/NGX/indices. Prefer the Mansa Markets namespace for new integrations.","operationId":"get__api_ngxdata_indices","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/ngxdata/indices/{code}":{"get":{"tags":["Markets"],"summary":"Legacy compatibility route for /api/v1/markets/exchanges/NGX/indices/{code}. Prefer the Mansa Markets namespace for new integrations.","operationId":"get__api_ngxdata_indices_code_","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"},"description":"NGX index code or slug, for example ASI or ngx-bnk."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/ngxdata/etfs":{"get":{"tags":["Markets"],"summary":"Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs. Prefer the Mansa Markets namespace for new integrations.","operationId":"get__api_ngxdata_etfs","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/ngxdata/etfs/{symbol}":{"get":{"tags":["Markets"],"summary":"Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs/{symbol}. Prefer the Mansa Markets namespace for new integrations.","operationId":"get__api_ngxdata_etfs_symbol_","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"},"description":"NGX ETF canonical, shorthand, legacy, or vendor symbol, for example NEWGOLD or LOTUSHAL."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/ngxdata/etfs/resolve/{symbol}":{"get":{"tags":["Markets"],"summary":"Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs/resolve/{symbol}. Prefer the Mansa Markets namespace for new integrations.","operationId":"get__api_ngxdata_etfs_resolve_symbol_","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"},"description":"NGX ETF canonical, shorthand, legacy, or vendor symbol, for example NEWGOLD or LOTUSHAL."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/forex":{"get":{"tags":["Markets"],"summary":"Return current forex rates available through Mansa Markets.","operationId":"get__api_v1_markets_forex","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/commodities":{"get":{"tags":["Markets"],"summary":"Return commodity prices relevant to African producers and traders.","operationId":"get__api_v1_markets_commodities","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchange-metadata":{"get":{"tags":["Markets"],"summary":"Return exchange metadata such as market type, settlement cycle, and website.","operationId":"get__api_v1_markets_exchange_metadata","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/calendar/{exchange_code}/is-open":{"get":{"tags":["Markets"],"summary":"Return whether an exchange is open right now, with next open/close timestamps. Free tier.","operationId":"get__api_v1_markets_calendar_exchange_code_is_open","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/calendar/{exchange_code}":{"get":{"tags":["Markets"],"summary":"Return the full trading calendar for an exchange: session times, timezone, trading days, settlement cycle, and public holidays for a year. Starter tier and above.","operationId":"get__api_v1_markets_calendar_exchange_code_","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"year","in":"query","required":false,"schema":{"type":"string"},"description":"Calendar year for the holiday list (default: current year)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/exchanges/{exchange_code}/dividends-calendar":{"get":{"tags":["Markets"],"summary":"Calendar-style dividends across all listed companies: ex-dividend, record, and pay dates with amounts. Filter by date range, symbol, or upcoming=true. NGX. Starter tier and above.","operationId":"get__api_v1_markets_exchanges_exchange_code_dividends_calendar","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"upcoming","in":"query","required":false,"schema":{"type":"string"},"description":"true = only ex-dividend dates from today forward"},{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"Start date YYYY-MM-DD (default 90 days back)"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"End date YYYY-MM-DD"},{"name":"symbol","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to one ticker"},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Rows to return (default 200, max 500)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/bonds/{country}":{"get":{"tags":["Markets"],"summary":"Return listed bonds (government local, eurobond, sukuk, corporate) with latest price and yield to maturity. Pro plan and above.","operationId":"get__api_v1_markets_bonds_country_","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter: govt_local | eurobond | sukuk | corporate"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/yields/{country}/curve":{"get":{"tags":["Markets"],"summary":"Return the current government yield curve: latest auction result per instrument and tenor. Pro plan and above.","operationId":"get__api_v1_markets_yields_country_curve","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/yields/{country}/tbills":{"get":{"tags":["Markets"],"summary":"Return treasury bill auction results (stop rates, average yields, subscription), newest first. Pro plan and above.","operationId":"get__api_v1_markets_yields_country_tbills","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Rows to return (default 50, max 500)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/markets/yields/{country}/auctions":{"get":{"tags":["Markets"],"summary":"Return government debt auction history across instrument types. Pro plan and above.","operationId":"get__api_v1_markets_yields_country_auctions","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter: tbill | bond | sukuk | cp"},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Rows to return (default 100, max 600)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/macro/policy-rates":{"get":{"tags":["Macro"],"summary":"Flagship all-Africa table: current central bank policy rate and latest inflation for every covered economy, each with source institution and URL.","operationId":"get__api_v1_macro_policy_rates","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/macro/indicators":{"get":{"tags":["Macro"],"summary":"All indicators for one country (?country=NG returns the live CBN set: policy rate, T-bill, interbank, lending rates, headline/food/core inflation), or a continent summary without a filter.","operationId":"get__api_v1_macro_indicators","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string"},"description":"ISO-3166 alpha-2 code (e.g. NG, KE, ZA)"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/macro/{country}/{indicator}/history":{"get":{"tags":["Macro"],"summary":"Monthly history for an indicator. Nigeria has full depth (policy rate and money market back to 2006, CPI splits). Starter tier and above.","operationId":"get__api_v1_macro_country_indicator_history","parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"Start period, YYYY-MM"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"End period, YYYY-MM"}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/fundamentals/{exchange_code}/{ticker}":{"get":{"tags":["Fundamentals"],"summary":"Return verified fundamentals for one listing: revenue, profits, balance sheet, EPS and DPS per fiscal period, plus derived ratios (net margin, ROE, ROA, payout, P/E and dividend yield vs the live price). Starter tier and above.","operationId":"get__api_v1_fundamentals_exchange_code_ticker_","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange ticker symbol."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/metrics/{exchange_code}/{ticker}":{"get":{"tags":["Fundamentals"],"summary":"Return the full metric sheet for any of ~1,170 African listings: valuation, dividends, profitability, balance-sheet health, quality scores and analyst signals — plus the filing-verified block on covered NGX names. Starter tier and above.","operationId":"get__api_v1_metrics_exchange_code_ticker_","parameters":[{"name":"exchange_code","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange code such as NGX, GSE, NSE, JSE, BRVM, DSE, or LUSE."},{"name":"ticker","in":"path","required":true,"schema":{"type":"string"},"description":"Exchange ticker symbol."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/screener":{"get":{"tags":["Fundamentals"],"summary":"Screen 16 African exchanges — or the whole continent at once — by valuation, yield, profitability, balance-sheet health and analyst consensus. Verified NGX figures override market data where available. Starter tier and above.","operationId":"get__api_v1_screener","parameters":[{"name":"exchange","in":"query","required":false,"schema":{"type":"string"},"description":"Exchange code (NGX, JSE, EGX, NSE, GSE, ...) or ALL for the whole continent. Defaults to NGX."},{"name":"pe_max","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum trailing P/E, e.g. 5."},{"name":"dividend_yield_min","in":"query","required":false,"schema":{"type":"string"},"description":"Minimum dividend yield in percent, e.g. 8."},{"name":"roe_min","in":"query","required":false,"schema":{"type":"string"},"description":"Minimum return on equity in percent, e.g. 20."},{"name":"pb_max","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum price-to-book ratio."},{"name":"z_min","in":"query","required":false,"schema":{"type":"string"},"description":"Minimum Altman Z-score (financial health)."},{"name":"market_cap_usd_min","in":"query","required":false,"schema":{"type":"string"},"description":"Minimum market cap in USD, e.g. 100000000."},{"name":"consensus","in":"query","required":false,"schema":{"type":"string"},"description":"Analyst consensus filter: buy, hold, sell, strong buy, strong sell."},{"name":"verified_only","in":"query","required":false,"schema":{"type":"string"},"description":"true to return only rows with filing-verified fundamentals."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Maximum results, capped at 500."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/location/countries":{"get":{"tags":["Location"],"summary":"Return African countries with optional region filter.","operationId":"get__api_v1_location_countries","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"},"description":"Filter countries by region text match."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/location/countries/{country_code}":{"get":{"tags":["Location"],"summary":"Return a single country profile by ISO2 or ISO3 code.","operationId":"get__api_v1_location_countries_country_code_","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string"},"description":"ISO2 or ISO3 country code."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/location/countries/{country_code}/states":{"get":{"tags":["Location"],"summary":"Return states, regions, counties, or provinces for supported countries with normalized admin_level_1 fields.","operationId":"get__api_v1_location_countries_country_code_states","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string"},"description":"ISO2 or ISO3 country code."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/location/countries/{country_code}/states/{state_code}/lgas":{"get":{"tags":["Location"],"summary":"Return LGAs, districts, or sub-county units with normalized admin_level_2 fields.","operationId":"get__api_v1_location_countries_country_code_states_state_code_lgas","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string"},"description":"ISO2 or ISO3 country code."},{"name":"state_code","in":"path","required":true,"schema":{"type":"string"},"description":"State, region, county, or province code."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/location/countries/{country_code}/states/{state_code}/postal-codes":{"get":{"tags":["Location"],"summary":"Return Nigeria postal-code coverage for a state, with optional detailed LGA lookup.","operationId":"get__api_v1_location_countries_country_code_states_state_code_postal_codes","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string"},"description":"ISO2 or ISO3 country code."},{"name":"state_code","in":"path","required":true,"schema":{"type":"string"},"description":"State, region, county, or province code."},{"name":"lga","in":"query","required":false,"schema":{"type":"string"},"description":"Optional LGA name or code for a detailed locality-level postcode response."},{"name":"limit","in":"query","required":false,"schema":{"type":"string"},"description":"Rows per page when lga is provided, capped at 250."},{"name":"offset","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination offset when lga is provided."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/location/countries/{country_code}/holidays/{year}":{"get":{"tags":["Location"],"summary":"Return public holidays for a country and year. Names are returned in English wherever the country publishes it; pass ?lang= for another (Kenya also publishes sw).","operationId":"get__api_v1_location_countries_country_code_holidays_year_","parameters":[{"name":"country_code","in":"path","required":true,"schema":{"type":"string"},"description":"ISO2 or ISO3 country code."},{"name":"year","in":"path","required":true,"schema":{"type":"string"},"description":"Calendar year, for example 2026."},{"name":"lang","in":"query","required":false,"schema":{"type":"string"},"description":"Language for holiday names, e.g. 'sw' for Swahili. Must be one of the country's available languages, listed in meta.languages_available. Defaults to English where available, otherwise the country's primary language."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/identity/banks":{"get":{"tags":["Identity"],"summary":"Return bank and mobile-money institutions with optional filters.","operationId":"get__api_v1_identity_banks","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by country code, for example NG or GH."},{"name":"type","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by institution type."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/identity/banks/{bank_code}":{"get":{"tags":["Identity"],"summary":"Return a single bank or institution by bank code.","operationId":"get__api_v1_identity_banks_bank_code_","parameters":[{"name":"bank_code","in":"path","required":true,"schema":{"type":"string"},"description":"Institution code, for example 058 or GCB."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/identity/mobile-networks":{"get":{"tags":["Identity"],"summary":"Return mobile network operators with optional country filter.","operationId":"get__api_v1_identity_mobile_networks","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string"},"description":"Filter by country code, for example NG or GH."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/identity/mobile-networks/lookup":{"get":{"tags":["Identity"],"summary":"Return the mobile network that matches a phone number prefix.","operationId":"get__api_v1_identity_mobile_networks_lookup","parameters":[{"name":"phone","in":"query","required":false,"schema":{"type":"string"},"description":"Phone number in local or international format."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/identity/currencies":{"get":{"tags":["Identity"],"summary":"Return African currency metadata with issuing countries.","operationId":"get__api_v1_identity_currencies","parameters":[],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}},"/api/v1/identity/currencies/{currency_code}":{"get":{"tags":["Identity"],"summary":"Return a single currency record by ISO code.","operationId":"get__api_v1_identity_currencies_currency_code_","parameters":[{"name":"currency_code","in":"path","required":true,"schema":{"type":"string"},"description":"Currency code, for example NGN, KES, or XOF."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":true},"meta":{"type":"object","additionalProperties":true},"pagination":{"type":"object","additionalProperties":true}}}}}},"401":{"description":"Invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"INVALID_API_KEY"},"message":{"type":"string","example":"API key not recognised. Check your key or get a new one."}}}}}}}},"402":{"description":"Unauthenticated agent or developer request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"PAYMENT_REQUIRED"},"message":{"type":"string","example":"This endpoint requires an API key."},"free_tier":{"type":"string","example":"100 requests/day - no credit card required"},"get_key_url":{"type":"string","example":"https://mansaapi.com/docs#get-api-key"},"price_per_call":{"type":"number","example":0.001},"currency":{"type":"string","example":"USD"}}}}}}}},"429":{"description":"Daily rate limit exceeded"}}}}}}