/api/v1/instrumentsone pagecost 1api:instrumentsThe instrument catalog, paged.
Identity, venue and the last price we hold. Both language names travel, always.
Query parameters
SahminoUnderstand Iran’s markets: a neutral and transparent reference.Everything a program can ask «رصد» for: the address, the scope, the cost and the shape of the answer.
This page is generated from the same list the API routes are registered from, so it cannot describe an endpoint that does not exist: 17 endpoints across 9 scopes. Field names and error codes are English and are not translated; a half-translated machine interface is worse than an honest monolingual one.
https://sahmino.com/api/v1
Authorization: Bearer <token>
A token minted for the MCP server is not an API token and will be refused.
A sample request
curl -H "Authorization: Bearer $SAHMINO_TOKEN" \ https://sahmino.com/api/v1/instruments
A scope is fixed when the key is minted and never changes afterwards. Each endpoint declares exactly one and the comparison is literal, which is why an MCP key opens nothing here.
Branch on code, never on message: the prose may be reworded in any release, the code stays.
17 of 17 endpoints
Read the instrument catalog, board rows and one instrument’s profile.
/api/v1/instrumentsone pagecost 1api:instrumentsThe instrument catalog, paged.
Identity, venue and the last price we hold. Both language names travel, always.
Query parameters
/api/v1/instruments/{instrument}one recordcost 2api:instrumentsOne instrument, with its exchange profile.
The catalog row plus the nightly profile reading: free float, market capitalisation, the sector it is filed under.
/api/v1/boardone pagecost 1api:instrumentsThe day’s board — one page of it.
Last, close, previous close, change, volume, value and the retail share of each side.
Query parameters
Read price history and derived series for one instrument.
/api/v1/instruments/{instrument}/pricesone recordcost 2api:pricesDaily history and the window statistics struck from it.
Points are oldest first; a halted session is a row like any other and says so. `unit` is load-bearing — rial and toman differ by a factor of ten.
Query parameters
Read computed technical indicators for one instrument.
/api/v1/instruments/{instrument}/indicatorsone recordcost 2api:indicatorsThe stored technical readings for one instrument.
Read back, never recomputed: `seriesHash` says which sessions they were struck from. An indicator with no reading is absent rather than null.
Run a saved screen or an ad-hoc condition set over the universe.
/api/v1/screener/fieldsone recordcost 1api:screenerEvery screenable field, with its group, format and label.
The catalog a client needs before it can write a condition. Generated from the field registry the screener itself draws.
/api/v1/screensone recordcost 1api:screenerThe caller’s own saved screens.
/api/v1/screener/runone recordcost 10api:screenerRun a saved screen, or a set of conditions posted with the request.
A نماد with no reading on a field never passes a condition on it: an absent figure is not a zero. `matched` is how many passed; `data` is how many the plan let travel.
Request body
Read codal filings and the financial statements parsed from them.
/api/v1/filingsone pagecost 1api:filingscodal letters as filed, newest first.
`periodMonths` is the span the letter reports; comparing a three-month figure with a twelve-month one is the commonest way to publish a wrong number.
Query parameters
/api/v1/instruments/{instrument}/statementsone recordcost 2api:filingsThe financial statements parsed out of one instrument’s filings.
How many periods travel is the tier’s `statement_periods` cell, and `quota` reports it beside the rows: `total` is how many the company filed, `shown` is how many the plan allows.
Query parameters
Read saved valuation runs and their inputs.
/api/v1/valuationsone recordcost 1api:valuationsThe caller’s saved valuation runs.
`gapAtSave` is the argument the reader was making; `gapNow` is what the market has done to it since.
/api/v1/instruments/{instrument}/valuationsone recordcost 2api:valuationsThe caller’s saved runs for one instrument.
Read macroeconomic series.
/api/v1/macroone recordcost 1api:macroEvery macro series we declare, with its freshness.
`freshAt` is the last write of the ingest behind the series and `stale` is that clock against the series’ own cadence — a monthly series with no observation this week is not late.
/api/v1/macro/seriesone recordcost 1api:macroThe observations of up to 5 series.
Points are oldest first and a day with no observation is absent, never zero. An unknown key is a 404 rather than an empty series.
Query parameters
Read the shareholder register and board composition graph.
/api/v1/instruments/{instrument}/ownershipone recordcost 2api:ownershipThe shareholder register, the board and everything derived from them.
An individual’s کد ملی is never present: the query nulls it before the DTO is built.
Read alert rules and their delivery history.
/api/v1/alertsone recordcost 1api:alertsThe caller’s alert rules.
Read only. A rule is written through the terminal, where the plan cap and the re-arm rule live.
/api/v1/alerts/deliveriesone pagecost 1api:alertsWhat has already been sent, newest first.
The feed an integration wants: an alert that fired, so it can reach a system rather than only a person.
Query parameters