Mansa API API

African data infrastructure for developers and AI agents. Live market data, NGX equities, ETFs, indices, location data, and identity reference data built in Lagos.

Operations 61

GET /health Return platform and suite health, including market freshness metadata. #
POST /api/v1/keys Issue a free standard key instantly or submit a higher-tier request. #
GET /api/v1/markets/exchanges Return all tracked exchanges with latest snapshot metadata. #
GET /api/v1/markets/exchanges/{exchange_code} Return a single exchange and its latest index snapshot. #
GET /api/v1/markets/exchanges/{exchange_code}/stocks Return stocks for a single exchange. #
GET /api/v1/markets/exchanges/{exchange_code}/stocks/{ticker} Return a single stock with quote and reference fields. #
GET /api/v1/markets/exchanges/{exchange_code}/movers Return top gainers and losers for an exchange. #
GET /api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}/history 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 fro #
GET /api/v1/markets/exchanges/{exchange_code}/stocks/{ticker}/fundamentals Return fundamentals for a stock: market cap, sector, 52-week high/low, TTM dividend yield. #
GET /api/v1/markets/movers/pan-african Return top movers across all live African exchanges. #
GET /api/v1/markets/indices Return latest tracked African market indices. #
GET /api/v1/markets/indices/{index_code}/history 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, m #
GET /api/v1/markets/exchanges/{exchange_code}/indices Return available index snapshots for a tracked African exchange. DSE returns TSI, DSEI, BI, IA, and CS when the DSE feed has current data. #
GET /api/v1/markets/exchanges/{exchange_code}/indices/{code} Return a single benchmark or sector index by code or alias. For Tanzania, valid codes include TSI, DSEI, BI, IA, and CS. #
GET /api/v1/markets/exchanges/{exchange_code}/indices/{code}/history Return historical benchmark index points for a tracked exchange. Supports range=1D, 1W, 1M, 3M, 1Y, or ALL. #
GET /api/v1/markets/exchanges/NGX/indices Return the full NGX index universe snapshot. Database-backed, persisted in Supabase-backed snapshots, refreshed every 30 minutes, and consumed by Mansa Markets ingestion. #
GET /api/v1/markets/exchanges/NGX/indices/{code} Return a single NGX index by code or slug. Valid lookups include ASI and ngx-bnk. #
GET /api/v1/markets/exchanges/NGX/etfs Return the full NGX ETF universe snapshot. Database-backed, persisted in Supabase-backed snapshots, refreshed every 30 minutes, and consumed by Mansa Markets ingestion. #
GET /api/v1/markets/exchanges/NGX/etfs/{symbol} Return a single NGX ETF by canonical symbol. Example: NEWGOLD. #
GET /api/v1/markets/exchanges/NGX/etfs/resolve/{symbol} Resolve legacy, shorthand, or vendor ETF tickers into canonical NGX ETF symbols used by the API. #
GET /api/v1/markets/exchanges/{exchange_code}/dividends/{ticker} Return dividend history for a stock: ex-dividend dates, record dates, pay dates, and dividend-per-share amounts. NGX only. Premium tier. #
GET /api/v1/markets/exchanges/{exchange_code}/disclosures Return NGX regulatory filings and company announcements: financial reports, corporate actions, price-sensitive notices. NGX only. Premium tier. #
GET /api/v1/markets/exchanges/{exchange_code}/insider-trades Return director and insider dealings parsed from NGX PDF disclosures: transaction type, volume, price, and post-trade holdings. NGX only. Premium tier. #
GET /api/v1/markets/exchanges/{exchange_code}/recommendations Return weekly broker recommendations and per-ticker consensus (BUY/HOLD/SELL) compiled from Nigerian stockbroker research. NGX only. Premium tier. #
GET /api/ngxdata/indices Legacy compatibility route for /api/v1/markets/exchanges/NGX/indices. Prefer the Mansa Markets namespace for new integrations. #
GET /api/ngxdata/indices/{code} Legacy compatibility route for /api/v1/markets/exchanges/NGX/indices/{code}. Prefer the Mansa Markets namespace for new integrations. #
GET /api/ngxdata/etfs Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs. Prefer the Mansa Markets namespace for new integrations. #
GET /api/ngxdata/etfs/{symbol} Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs/{symbol}. Prefer the Mansa Markets namespace for new integrations. #
GET /api/ngxdata/etfs/resolve/{symbol} Legacy compatibility route for /api/v1/markets/exchanges/NGX/etfs/resolve/{symbol}. Prefer the Mansa Markets namespace for new integrations. #
GET /api/v1/markets/forex Return current forex rates available through Mansa Markets. #
GET /api/v1/markets/commodities Return commodity prices relevant to African producers and traders. #
GET /api/v1/markets/exchange-metadata Return exchange metadata such as market type, settlement cycle, and website. #
GET /api/v1/markets/calendar/{exchange_code}/is-open Return whether an exchange is open right now, with next open/close timestamps. Free tier. #
GET /api/v1/markets/calendar/{exchange_code} 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. #
GET /api/v1/markets/exchanges/{exchange_code}/dividends-calendar 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. #
GET /api/v1/markets/bonds/{country} Return listed bonds (government local, eurobond, sukuk, corporate) with latest price and yield to maturity. Pro plan and above. #
GET /api/v1/markets/yields/{country}/curve Return the current government yield curve: latest auction result per instrument and tenor. Pro plan and above. #
GET /api/v1/markets/yields/{country}/tbills Return treasury bill auction results (stop rates, average yields, subscription), newest first. Pro plan and above. #
GET /api/v1/markets/yields/{country}/auctions Return government debt auction history across instrument types. Pro plan and above. #
GET /api/v1/macro/policy-rates Flagship all-Africa table: current central bank policy rate and latest inflation for every covered economy, each with source institution and URL. #
GET /api/v1/macro/indicators 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 #
GET /api/v1/macro/{country}/{indicator}/history Monthly history for an indicator. Nigeria has full depth (policy rate and money market back to 2006, CPI splits). Starter tier and above. #
GET /api/v1/fundamentals/{exchange_code}/{ticker} 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 yi #
GET /api/v1/metrics/{exchange_code}/{ticker} 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-ver #
GET /api/v1/screener 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 #
GET /api/v1/identifiers/{exchange_code}/{ticker} Return the ISIN and FIGI for a single listing. Starter tier and above. #
GET /api/v1/identifiers List or search the security master. Filter by exchange, or resolve an ISIN or FIGI back to its ticker and exchange. Starter tier and above. #
GET /api/v1/location/countries Return African countries with optional region filter. #
GET /api/v1/location/countries/{country_code} Return a single country profile by ISO2 or ISO3 code. #
GET /api/v1/location/countries/{country_code}/states Return states, regions, counties, or provinces for supported countries with normalized admin_level_1 fields. #
GET /api/v1/location/countries/{country_code}/states/{state_code}/lgas Return LGAs, districts, or sub-county units with normalized admin_level_2 fields. #
GET /api/v1/location/countries/{country_code}/states/{state_code}/postal-codes Return Nigeria postal-code coverage for a state, with optional detailed LGA lookup. #
GET /api/v1/location/countries/{country_code}/holidays/{year} 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). #
GET /api/v1/identity/banks Return bank and mobile-money institutions with optional filters. #
GET /api/v1/identity/banks/{bank_code} Return a single bank or institution by bank code. #
GET /api/v1/identity/mobile-networks Return mobile network operators with optional country filter. #
GET /api/v1/identity/mobile-networks/lookup Return the mobile network that matches a phone number prefix. #
GET /api/v1/identity/currencies Return African currency metadata with issuing countries. #
GET /api/v1/identity/currencies/{currency_code} Return a single currency record by ISO code. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mansaapi-com:mansa-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mansaapi-com-api-openapi.json Raw ↑
{"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