These rules hold on every route, so you can learn them once.
Times are epoch seconds, not milliseconds, unless a field is explicitly date-time. If a
timestamp looks a thousand times too small, this is why.
Null means unknown, and it stays null. Money fields are number | null, and null means the
venue has not reported yet. The engine never coalesces an unknown value to 0, and your UI
should not either. A trader who sees a $0 balance during a venue hiccup will react to it.
Quantities are signed. A long position is positive, a short is negative. There is no separate
side field to cross-check against.
Timeframes are a grammar, not a menu. A timeframe token is <N><unit> with units
s m h d w mo t: 1m, 4h, 1d, 100t. Any count within the published ceilings is legal,
including values no preset lists, like 45s or 250t. Fetch /api/market/config once and you
have the exact grammar the engine validates against. A malformed token fails closed with 400.
Account targeting is uniform. Every account-scoped route takes optional broker and
account query parameters. Omitted means your priority default. Present-but-unknown is a 400,
validated against your own set, so a typo cannot silently trade the wrong account.