Sahmino API · 1.0.0
The API reference
Base address
https://sahmino.com/api/v1OpenAPI documentAuthentication header
Authorization: Bearer <token>A token minted for the MCP server is not an API token and will be refused.
Limits
240 requests per minute
100 rows per page
A daily request budget set by the account tier. Each endpoint declares its cost below.
A sample request
curl -H "Authorization: Bearer $SAHMINO_TOKEN" \ "https://sahmino.com/api/v1/instruments"
Replace the token placeholder with your own API key. This example reads the first available catalog endpoint.
The shape of an answer
- One record
- One record answers
{"data": {...}}. - One page of records
- A list answers
{"data": [...], "meta": {"page", "perPage", "total", "lastPage"}}. Page size is fixed; callers cannot changeperPage. - A refused request
- A refusal answers
{"error": {"code", "message", "detail?"}}. Branch oncode;messageis prose and can change between releases.
Endpoints
17 of 17 endpoints
/api/v1/instrumentsThe instrument catalog, paginated.
Identity, venue and latest available price. Every record includes its names in both languages.
Scopeapi:instruments
/api/v1/instruments/{instrument}One instrument and its exchange profile.
The catalog record plus the nightly exchange profile: free float, market capitalisation and registered industry.
Scopeapi:instruments
/api/v1/boardToday's market board, paginated.
Symbol, ticker and nullable fullName identify the instrument. Its registered company name follows the request locale, using source text when untranslated. Each row includes last price, close, change, volume, value and the retail share of buying and selling. Read yesterday’s close from the instrument price endpoint.
Scopeapi:instruments
/api/v1/instruments/{instrument}/pricesDaily price history and statistics for its window.
Points run from oldest to newest, including halted sessions marked as such. Read unit; one toman is 10 rials.
Scopeapi:prices
/api/v1/instruments/{instrument}/indicatorsStored technical indicators for one instrument.
Values are read from storage without recalculation. seriesHash identifies the sessions used. An indicator with no reading is omitted rather than returned as null.
Scopeapi:indicators
/api/v1/screener/fieldsAvailable screener fields, with their groups, formats and labels.
Use this catalog to build a condition. It comes from the same field registry as the screener page.
Scopeapi:screener
/api/v1/screensYour saved screens.
The complete saved list is returned together because the account limits how many screens can be saved. Compare meta.kept with meta.limit before offering another save.
Scopeapi:screener
/api/v1/screener/runRun a saved screen or the conditions in your request.
An instrument without a reading cannot pass a condition on that field. Missing is not zero. matched counts all passing rows; shown counts returned rows; rowCap is the plan’s limit for this call, or null when no cap is applied.
Scopeapi:screener
/api/v1/filingsCodal filings, newest first.
periodMonths is the reporting span. Comparing figures from unequal periods can give misleading results.
Scopeapi:filings
/api/v1/instruments/{instrument}/statementsFinancial statements from one instrument’s filings.
The plan’s statement_periods allowance limits returned periods. The accompanying quota reports total periods filed by the company and shown periods returned under the plan.
Scopeapi:filings
/api/v1/valuationsYour saved valuation runs.
gapAtSave records the difference at the time of saving. gapNow shows the effect of market price changes since then.
Scopeapi:valuations
/api/v1/instruments/{instrument}/valuationsYour saved valuation runs for one instrument.
Scopeapi:valuations
/api/v1/macroAvailable macroeconomic series and their freshness.
freshAt is the last ingestion time. stale compares that time with the series’ own update cadence; a monthly series is not late merely because it has no observation this week.
Scopeapi:macro
/api/v1/macro/seriesObservations for up to 5 series.
Points run from oldest to newest. Days without observations are omitted, not recorded as zero. An unknown key returns 404 with not_found, rather than an empty series.
Scopeapi:macro
/api/v1/instruments/{instrument}/ownershipShareholders, board composition and derived ownership information.
Personal national identity numbers are removed by the query before response data is built.
Scopeapi:ownership
/api/v1/alertsYour alert rules, newest first.
Read only. Create and re-arm rules on the alerts page, where plan limits apply. Results are paginated because the API-enabled plan can hold a large rule list.
Scopeapi:alerts
/api/v1/alerts/deliveriesSent alert deliveries, newest first.
Use the delivery history to connect alerts that fired to your own system.
Scopeapi:alerts
