# Today for you: your positions, events and research for the next hours

URL: https://docs.fxapis.com/api-reference/marketlabs/today-for-you-your-positions-events-and-research-for-the-next-hours

> Today for you: your positions, events and research for the next hours. Events in the next hours (default 48) for your held and watched currencies, your open…

`GET https://api.fxapis.com/v1/marketlabs/today`

Events in the next `hours` (default 48) for your held and watched currencies, your open positions and pending orders against them (needs `trading:read` as well), each pair's research lean, and what changed in the last 24 hours. Research, not trading advice.

Authentication: `Authorization: Bearer <API key>`.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `hours` | query | integer | no |  |
| `timeZone` | query | string | no | IANA time zone, e.g. Europe/London. Times stay in UTC. |

#### Responses

- `200`
- `400`
- `401`
- `402`
- `403`
- `404`
- `409`
- `503`

Failures return `{ "error": { "code", "message" } }`; every code is listed at https://docs.fxapis.com/errors.

#### 200 response fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | object | yes |  |
| `data.generatedAt` | string (date-time) | yes |  |
| `data.window` | object | yes |  |
| `data.window.from` | string (date-time) | yes |  |
| `data.window.to` | string (date-time) | yes |  |
| `data.window.hours` | integer | yes |  |
| `data.window.timeZone` | null \| string | yes |  |
| `data.exposure` | object | yes |  |
| `data.exposure.available` | boolean | yes |  |
| `data.exposure.reason` | string | no | Why the block is empty when available is false. |
| `data.exposure.accounts` | object[] | no |  |
| `data.exposure.accounts[].accountId` | string | yes |  |
| `data.exposure.accounts[].name` | string | yes |  |
| `data.exposure.accounts[].state` | string | yes |  |
| `data.exposure.accounts[].observedAt` | null \| string (date-time) | yes |  |
| `data.exposure.accounts[].stale` | boolean | yes | True when the account was last read more than 15 minutes ago. |
| `data.exposure.accounts[].items` | object[] | yes |  |
| `data.exposure.accounts[].items[].kind` | "position" \| "order" | yes |  |
| `data.exposure.accounts[].items[].id` | string | yes |  |
| `data.exposure.accounts[].items[].symbol` | string | yes | The broker's symbol. |
| `data.exposure.accounts[].items[].side` | "buy" \| "sell" | yes |  |
| `data.exposure.accounts[].items[].volume` | string | yes |  |
| `data.exposure.accounts[].items[].currencies` | string[] | yes |  |
| `data.exposure.accounts[].items[].unmapped` | boolean | yes | True when the symbol's currencies are not ones the calendar tracks. |
| `data.exposure.accounts[].items[].pair` | null \| string | yes | The research pair, when the instrument is a tracked currency pair. |
| `data.exposure.accounts[].items[].nextEvent` | null \| object | yes |  |
| `data.exposure.accounts[].items[].eventCount` | integer | yes | High and medium impact events for its currencies in the window. |
| `data.exposure.ordersNote` | string | no |  |
| `data.exposure.eventsAvailable` | boolean | no | False when the calendar could not be read, so an item showing no event may still have one. |
| `data.upcoming` | object | yes |  |
| `data.upcoming.available` | boolean | yes |  |
| `data.upcoming.reason` | string | no | Why the block is empty when available is false. |
| `data.upcoming.events` | object[] | no |  |
| `data.upcoming.events[].id` | string | yes | Stable per series and period, e.g. bls:cpi_mom:2026-10: a rescheduled release keeps its id. |
| `data.upcoming.events[].title` | string | yes |  |
| `data.upcoming.events[].occurredAt` | string (date-time) | yes | When the publisher releases it, in UTC. |
| `data.upcoming.events[].currency` | string | yes | Three-letter currency code. |
| `data.upcoming.events[].kind` | "release" \| "rate_decision" \| "survey" \| "earnings" | yes |  |
| `data.upcoming.events[].impact` | "high" \| "medium" \| "low" | yes | fxapis' own ranking by topic, not a market forecast. |
| `data.upcoming.events[].unit` | null \| string | no | Unit of actual and previous, e.g. %. |
| `data.upcoming.events[].period` | null \| string | no | The period the figure covers, e.g. Oct 2026 or Q3 2026. |
| `data.upcoming.events[].previous` | null \| string | no | The publisher's figure for the period before, as it stood before this release. |
| `data.upcoming.events[].actual` | null \| string | no | The publisher's figure, once released. Surveys never carry figures. |
| `data.upcoming.events[].revisedPrevious` | null \| string | no | The previous period's figure as revised in this release, when it changed. |
| `data.upcoming.events[].forecast` | null \| string | no | Consensus forecast. Empty until a licensed forecast source is added. |
| `data.upcoming.events[].forecastSource` | null \| string | no |  |
| `data.upcoming.events[].status` | "scheduled" \| "released" \| "delayed" \| "cancelled" | yes |  |
| `data.upcoming.events[].releasedAt` | null \| string (date-time) | no | When fxapis first had the figure. |
| `data.upcoming.events[].confirmed` | boolean | yes | False when the publisher's calendar could not be checked recently: the date may have moved. |
| `data.upcoming.events[].source` | string | yes |  |
| `data.upcoming.events[].figureSource` | null \| string | no |  |
| `data.upcoming.events[].attribution` | string | yes | The source credit to show with the event. |
| `data.upcoming.events[].held` | boolean | yes | True when you hold a position or order in this currency. |
| `data.leans` | object | yes |  |
| `data.leans.available` | boolean | yes |  |
| `data.leans.reason` | string | no | Why the block is empty when available is false. |
| `data.leans.pairs` | object[] | no |  |
| `data.leans.pairs[].symbol` | string | yes |  |
| `data.leans.pairs[].held` | boolean | yes |  |
| `data.leans.pairs[].watched` | boolean | yes |  |
| `data.leans.pairs[].latest` | null \| object | yes |  |
| `data.leans.pairs[].latest.id` | string | no |  |
| `data.leans.pairs[].latest.symbol` | string | no |  |
| `data.leans.pairs[].latest.ecbDate` | string | no | Date (UTC) of the reference rate the report used. |
| `data.leans.pairs[].latest.status` | string | no |  |
| `data.leans.pairs[].latest.createdAt` | null \| string (date-time) | no |  |
| `data.leans.pairs[].latest.referenceRate` | null \| string | no |  |
| `data.leans.pairs[].latest.views` | object[] | no |  |
| `data.leans.pairs[].previous` | null \| object | yes |  |
| `data.leans.pairs[].previous.id` | string | no |  |
| `data.leans.pairs[].previous.symbol` | string | no |  |
| `data.leans.pairs[].previous.ecbDate` | string | no | Date (UTC) of the reference rate the report used. |
| `data.leans.pairs[].previous.status` | string | no |  |
| `data.leans.pairs[].previous.createdAt` | null \| string (date-time) | no |  |
| `data.leans.pairs[].previous.referenceRate` | null \| string | no |  |
| `data.leans.pairs[].previous.views` | object[] | no |  |
| `data.sinceYesterday` | object | yes |  |
| `data.sinceYesterday.available` | boolean | yes |  |
| `data.sinceYesterday.reason` | string | no | Why the block is empty when available is false. |
| `data.sinceYesterday.released` | object[] | no |  |
| `data.sinceYesterday.released[].id` | string | yes | Stable per series and period, e.g. bls:cpi_mom:2026-10: a rescheduled release keeps its id. |
| `data.sinceYesterday.released[].title` | string | yes |  |
| `data.sinceYesterday.released[].occurredAt` | string (date-time) | yes | When the publisher releases it, in UTC. |
| `data.sinceYesterday.released[].currency` | string | yes | Three-letter currency code. |
| `data.sinceYesterday.released[].kind` | "release" \| "rate_decision" \| "survey" \| "earnings" | yes |  |
| `data.sinceYesterday.released[].impact` | "high" \| "medium" \| "low" | yes | fxapis' own ranking by topic, not a market forecast. |
| `data.sinceYesterday.released[].unit` | null \| string | no | Unit of actual and previous, e.g. %. |
| `data.sinceYesterday.released[].period` | null \| string | no | The period the figure covers, e.g. Oct 2026 or Q3 2026. |
| `data.sinceYesterday.released[].previous` | null \| string | no | The publisher's figure for the period before, as it stood before this release. |
| `data.sinceYesterday.released[].actual` | null \| string | no | The publisher's figure, once released. Surveys never carry figures. |
| `data.sinceYesterday.released[].revisedPrevious` | null \| string | no | The previous period's figure as revised in this release, when it changed. |
| `data.sinceYesterday.released[].forecast` | null \| string | no | Consensus forecast. Empty until a licensed forecast source is added. |
| `data.sinceYesterday.released[].forecastSource` | null \| string | no |  |
| `data.sinceYesterday.released[].status` | "scheduled" \| "released" \| "delayed" \| "cancelled" | yes |  |
| `data.sinceYesterday.released[].releasedAt` | null \| string (date-time) | no | When fxapis first had the figure. |
| `data.sinceYesterday.released[].confirmed` | boolean | yes | False when the publisher's calendar could not be checked recently: the date may have moved. |
| `data.sinceYesterday.released[].source` | string | yes |  |
| `data.sinceYesterday.released[].figureSource` | null \| string | no |  |
| `data.sinceYesterday.released[].attribution` | string | yes | The source credit to show with the event. |
| `data.sinceYesterday.leanChanges` | object[] | no |  |
| `data.sinceYesterday.leanChanges[].symbol` | string | yes |  |
| `data.sinceYesterday.leanChanges[].horizon` | string | yes |  |
| `data.sinceYesterday.leanChanges[].from` | null \| string | yes |  |
| `data.sinceYesterday.leanChanges[].to` | null \| string | yes |  |
| `data.sinceYesterday.leanChanges[].reportId` | string | yes |  |
| `data.sinceYesterday.headlines` | object[] | no |  |
| `data.sinceYesterday.headlines[].id` | string | yes |  |
| `data.sinceYesterday.headlines[].title` | string | yes |  |
| `data.sinceYesterday.headlines[].domain` | string | yes |  |
| `data.sinceYesterday.headlines[].seen` | string (date-time) | yes |  |
| `data.sinceYesterday.headlines[].source` | string | yes |  |
| `data.sinceYesterday.headlines[].currencies` | string[] | yes |  |
| `data.sinceYesterday.headlines[].sourceName` | null \| string | no | The outlet's name. |
| `data.sinceYesterday.headlines[].summary` | null \| string | no | When available, a short summary written by fxapis from the headline, not the article. |
| `data.sinceYesterday.headlines[].url` | null \| string (uri) | no |  |
| `data.sources` | object[] | yes |  |
| `data.sources[].id` | string | yes |  |
| `data.sources[].name` | string | yes |  |
| `data.sources[].attribution` | string | yes |  |
| `data.sources[].creditUrl` | null \| string | no |  |
| `data.sources[].lastSuccess` | null \| string (date-time) | no |  |
| `data.sources[].lastFailureAt` | null \| string (date-time) | no |  |
| `data.sources[].state` | "fresh" \| "aging" \| "stale" \| "never" | yes |  |
| `requestId` | string | yes |  |