Every API here is available over the APIs.io API and to AI agents over MCP.
{"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":"hello@mansaapi.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."},{"name":"Macro","description":"Policy rates and macroeconomic indicators."},{"name":"Fundamentals","description":"Company financials and derived ratios for listed African companies."},{"name":"Identifiers","description":"ISIN and FIGI security master for listed African securities."}],"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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 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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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 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, 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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-API-Key' header, or '?api_key=<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"}}}}},{"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."}}}}}]}}}},"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":"Missing or invalid API key. error.code is MISSING_API_KEY when no key was sent, INVALID_API_KEY when the key is not recognised.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string","example":"No API key was provided. Send it as 'Authorization: Bearer <key>', an 'X-
# --- truncated at 32 KB (114 KB total) ---
# Full source: https://artifacts.apis.io/mansaapi-com/openapi/_original/mansaapi-com-api-openapi.json