markitel
Public REST endpoints with a teaser shape for anonymous callers — sign in on a Pro or Elite plan to unlock full signal payloads. Approved partners get keyed Bearer access with a full OpenAPI schema and a TypeScript SDK.
Public endpoints are callable without credentials and return a locked teaser shape. Requests made from a signed-in browser session return the full payload your subscription tier allows — Free accounts see full signals after a short delay window; Pro and Elite see them instantly. For server-side integrations, the Partner API uses scoped Bearer keys (mkpk_…) — see the Partner API section below.
GET /api/v1/signals HTTP/1.1
Host: markitel.com
# anonymous → 200, teaser shape (levels locked)
# signed-in Pro/Elite browser session → 200, full payload/api/v1/signalsThe live signal list. Anonymous calls return a teaser shape — asset, direction, status, headline, and closed-trade results — with trade levels, confidence, and analysis locked. Sign in with a Pro or Elite account to receive the full payload. Add ?include=closed to append recently-closed signals.
// anonymous (teaser shape)
{
"signals": [
{
"id": "…",
"asset": "EURUSD",
"direction": "LONG",
"status": "ACTIVE",
"headline": "EUR strength into the London open",
"published_at": "2026-06-11T10:30:00Z",
"entry_price_low": null,
"stop_loss": null,
"take_profit_1": null,
"confidence": null,
"analysis": null,
"locked": true
}
],
"total": 1,
"timestamp": 1780000000000
}/api/v1/signals/by-asset/:symbolSignal history for a single asset (e.g. EURUSD, XAUUSD, BTCUSD), newest first.
/api/v1/newsLatest market news with AI-generated summaries and sentiment scores.
/api/v1/calendarUpcoming and recent economic calendar events with impact ratings, forecasts, and actual values.
const r = await fetch(
"https://markitel.com/api/v1/signals?include=closed",
);
const { signals } = await r.json();
// anonymous callers receive the teaser shape
console.log(`${signals.length} signals`);import requests
r = requests.get(
"https://markitel.com/api/v1/signals",
)
signals = r.json()["signals"]
print(f"{len(signals)} signals (teaser shape)")Public endpoints are limited to 60 requests per minute per IP. Exceeding the window returns 429. Per-key tiered limits ship with API keys.
Approved partners (IBs, distribution channels) get scoped API keys for server-to-server access. Send your key as Authorization: Bearer mkpk_…. Keys are scoped least-privilege: read:stats for referral aggregates and read:signals for the full redistribution feed (a stats-only key cannot reach signals). The full contract is published as a machine-readable OpenAPI schema, and a zero-dependency TypeScript SDK wraps it.
/api/v1/partners/me/statsscope: read:statsAggregate 30-day referral stats for the authenticated partner — clicks, signups, converted referrals, accrued commission, and pending payout. Aggregates only; never user-level data.
/api/v1/partners/me/signalsscope: read:signalsThe full actionable signal feed for redistribution — entry/stop/take-profit levels, confidence, risk/reward. Page with ?cursor, poll deltas with ?since, size with ?limit (1–200). A read:stats-only key is rejected with 403.
# Machine-readable contract — codegen a client
GET https://markitel.com/api/v1/partners/openapi.jsonimport { MarkitelPartnerClient } from "@markitel/partner-sdk";
const client = new MarkitelPartnerClient({ apiKey });
for await (const s of client.iterateSignals()) {
console.log(s.asset, s.direction, s.entry_price_low);
}The OpenAPI schema is public; the SDK ships with the partner program (distributed directly to approved partners with their key). read:signals is granted to contract-approved partners. Become a partner to request access, or follow the step-by-step connect guide. Approved API access is governed by the Partner Program Terms, API and SDK Terms, and Data Processing Addendum where partner-directed personal-data processing applies.
Upgrade your plan to unlock entry zones, targets, confidence, and analysis across the platform.
View plans