Skip to content
MyStocks Developers
API v1

API v1

Current stable contract

Versioning policyRelease changelog
Sandbox console
Operate

SLA & Health

Real-time platform health, active incidents, scheduled maintenance, and your partner SLA tier via GET /sla. Drive in-app status banners and alert users when market data or order execution is degraded. Incident severity P0–P3 explained.

Real-time platform health status, active incidents, scheduled maintenance windows, and your partner SLA tier. Use it to drive status banners in your app or alert users when market data or order execution is degraded.

Service health

Returns overall platform health, any active incidents with severity and affected services, upcoming maintenance windows, and your SLA tier entitlements. Incidents are also broadcast via the incident.declared and incident.resolved webhooks.

Public status-page consumers can call GET /api/v1/status without partner credentials. It returns service health, active incidents, recent resolved incidents, and maintenance windows with public cache headers, while authenticated partners continue to receive incident webhooks and SSE events.

GET

/sla

SLA status

Full endpoint documentation
Sandbox availablelistSla

Returns real-time service health, active incidents, upcoming maintenance windows, and your SLA tier commitments. | Tier | Uptime SLO | Rate Limit | |------|-----------|------------| | Standard (starter) | 99.5% | 100 req/min | | Professional (growth) | 99.9% | 500 req/min | | Enterprise | 99.95% | 2,000 req/min |

Parameters

This endpoint has no path or query parameters.

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

overallStatusoperational | partial_outage | major_outage

Platform-wide health summary.

checkedAtstring
servicesobject[]

Per-service health breakdown.

services[].idstring

Example: "trading-api"

services[].namestring

Example: "Trading API"

services[].descriptionstring
services[].statusoperational | degraded | outage
services[].uptime30dnumber | null
services[].uptime90dnumber | null
services[].currentMonthUptimenumber | null
activeIncidentsobject[]
activeIncidents[].idstring
activeIncidents[].titlestring
activeIncidents[].severityP0 | P1 | P2 | P3
activeIncidents[].statusstring
activeIncidents[].affectedServicesstring[]
activeIncidents[].startedAtstring | null
activeIncidents[].resolvedAtstring | null
pastIncidentsobject[]

Incidents resolved in the last 30 days.

maintenanceobject[]

Upcoming scheduled maintenance windows.

maintenance[].idstring
maintenance[].titlestring
maintenance[].scheduledStartstring | null
maintenance[].scheduledEndstring | null
maintenance[].statusstring
partnerobject

Your SLA tier and committed SLO targets.

partner.slaTierstring

Example: "Standard"

partner.sloobject
partner.executionSloobject

Response codes

200Service health, incidents, and partner SLA commitments.

Published service objectives

SLOs are measured per calendar month from MyStocks server-side request and service-health telemetry. A successful API request is one that reaches the service and returns a non-5xx response; partner authentication, validation, rate-limit, market-closed, and insufficient-funds responses are not service failures.

TierMonthly availability30-day error budgetP0 acknowledgement
Standard99.5%216 minutes30 minutes
Professional99.9%43.2 minutes15 minutes
Enterprise99.95%21.6 minutes5 minutes

For GA certification, authenticated non-streaming API traffic must sustain p95 response latency of at most 1 second and an error rate of at most 0.1% under the approved load profile. Regional failover recovery must complete within 60 seconds. Live market-order execution has a separate five-minute operational target while the relevant exchange is open; it is not an HTTP latency metric.

Planned maintenance announced at least 72 hours in advance, partner-side failures, exchange closures, and force-majeure upstream outages are reported separately. They are excluded from service-credit calculations only where the signed partner SLA explicitly permits it. Error-budget exhaustion freezes non-essential releases until reliability has recovered or an authorized exception is documented.

Order operations and execution expectations

An API acknowledgement is not an execution confirmation. A successfully accepted order enters PENDING and may remain there while the dealing team validates market status, buying power, restrictions, and the available execution venue. Build partner interfaces around the webhook-driven lifecycle rather than assuming an immediate fill.

EventPublished objectiveSource of truth
API acknowledgementWithin the API latency objective aboveHTTP response and request ID
Order review during an open supported sessionFive-minute operational targetOrder status and execution webhooks
Market closed or outside the supported dealing windowHeld, rejected, or expired under the documented order policyGET /market/status and order lifecycle
Material service degradationIncident acknowledgement by contracted tierPublic status and incident webhooks
Reconciliation exceptionInvestigated before the next controlled-production trading windowReconciliation report and support case

Exchange sessions, holidays, early closes, and settlement dates vary by market. Use GET /market/status, GET /market/holidays, and GET /market/settlement instead of hard-coding local hours. A signed enterprise SLA can add named dealing coverage and escalation contacts; it does not turn a pending acknowledgement into a guaranteed fill.

For an order that exceeds the published objective, open a support case with the order ID and X-Request-ID. Do not submit a duplicate order. The support severity depends on customer impact and whether the relevant exchange is open.

GET

/market/status

Market status (NSE, NGX, JSE, GSE, etc.)

Full endpoint documentation
Sandbox availablegetMarketStatus

Returns the real-time open/closed status for each supported African stock exchange (NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM), next session boundaries, server time, and local trading hours. Pass ?exchange=NSE to get status for a single exchange. Without the filter the response includes all exchanges plus an anyOpen boolean.

Parameters

exchangestringquery

Filter to a single exchange code (NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM).

Example: NSE

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

anyOpenboolean

True if at least one exchange is currently open.

checkedAtstring
serverTimestring
exchangesobject

Keyed by exchange code (e.g. "NSE", "NGX"). Each value is an exchange status object.

Response codes

200Exchange status map.
404Unknown exchange code.
GET

/market/holidays

Market holiday calendar

Full endpoint documentation
Sandbox availablegetMarketHolidays

Returns exchange closure dates for a given date range. Use this to: - Show users when a specific exchange is closed before they try to trade. - Build "next trading day" schedulers (skip weekends and holidays). - Display an in-app holiday calendar alongside market status. Defaults: from = today, to = 12 months from today. Maximum range is 2 years. All African exchanges (UTC+0 to UTC+3) use ISO 8601 dates in UTC.

Parameters

exchangestringquery

Filter to a single exchange. One of: NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM. Omit to return holidays for all exchanges.

Example: NSE

fromstringquery

Start date (inclusive), YYYY-MM-DD. Defaults to today.

Example: 2026-06-06

tostringquery

End date (inclusive), YYYY-MM-DD. Defaults to 12 months from from. Maximum 2 years from from.

Example: 2026-12-31

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

dataobject[]
data[].exchangestringRequired

Exchange code.

Example: "NSE"

data[].datestringRequired

Closure date in YYYY-MM-DD format.

Example: "2026-12-25"

data[].reasonstringRequired

Human-readable reason for the closure.

Example: "Christmas Day"

countinteger

Example: 8

fromstring

Example: "2026-06-06"

tostring

Example: "2026-12-31"

metaobject

Standard response metadata included on every market-data envelope.

meta.request_idstring

Unique identifier for this request. Include in support tickets for tracing.

Example: "4f6e1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b"

meta.timestampstring

ISO 8601 UTC timestamp of when the response was generated.

Example: "2026-06-04T10:23:45.123Z"

meta.exchangestring | null

Exchange code the request was scoped to, when applicable.

Example: "NSE"

meta.symbolstring | null

Ticker symbol the request was scoped to, when applicable.

Example: "SCOM.KE"

Response codes

200Holiday calendar entries for the requested range.
400Invalid exchange code or date format.
401Unauthorized.
GET

/market/settlement

Settlement cycles and live fill target

Full endpoint documentation
Sandbox availablegetMarketSettlement

Returns the official T+N settlement cycle for each supported exchange (i.e. when title and beneficial ownership transfer after trade execution), plus the MyStocks live fill SLA for market orders submitted during exchange hours. Important distinction - MyStocks live fill SLA — the time before a PENDING live order moves to COMPLETED or REJECTED. Execution window: 1 to 5 minutes during market hours. - Exchange settlement cycle — the standard T+N cycle mandated by the exchange and its CSD. This governs when the underlying shares clear through the depository (T+2 for EGX, T+3 for all other supported exchanges). Use ?exchange=NSE to filter to a single exchange.

Parameters

exchangestringquery

Filter to a single exchange code (NSE, NGX, JSE, GSE, BRVM, ZSE, BSE, LUSE, EGX, DSE, USE, MSE, CSE, SEM).

Example: NSE

Headers

AuthorizationstringRequired

Bearer sk_sandbox_<your_key> for sandbox requests.

Response fields

processingWindowobject
processingWindow.targetTurnaroundHoursnumber

Legacy hour equivalent of the live 5-minute fill target.

Example: 0.083

processingWindow.minTurnaroundMinutesinteger

Earliest expected live execution window, in minutes.

Example: 1

processingWindow.maxTurnaroundMinutesinteger

Maximum live execution window, in minutes.

Example: 5

processingWindow.targetTurnaroundMinutesinteger

Monitoring deadline between live market order submission and fill/rejection during market hours.

Example: 5

processingWindow.descriptionstring
processingWindow.outsideHoursNotestring
processingWindow.processingDaysstring

Example: "Monday – Friday (excluding public holidays)"

processingWindow.webhookNotestring
processingWindow.pollEndpointstring

Example: "GET /api/v1/partner/orders/{orderId}"

exchangesobject

Response codes

200Settlement cycles and live fill target.
401Unauthorized.
404Unknown exchange code.

Incident severity levels

LevelNameImpact
P0CriticalFull platform outage — all trading and market data unavailable.
P1MajorCore service degraded — order execution or market data impaired.
P2MinorPartial degradation — some exchanges or endpoints affected.
P3InformationalMaintenance or cosmetic issue with no user impact.

Was this page useful?

Your signal helps us tighten partner onboarding docs.

Send note

Last updated on

On this page