GET/v1/earnings
Get earnings calendar events
Returns scheduled earnings announcement dates and estimates. Default window is 30 days starting from current date in America/New_York (ET); maximum date range is 90 days. Default limit is 1000; when your plan's max_rows is below the default (or requested limit exceeds max_rows), limit is clamped and X-Limit-Clamped is set to true. X-Limit-Clamped is also set when the date range exceeds your plan's history window.
Endpoint Usage & Plan Rules
Plan Access
Included in Basic
Active subscription
Result Clamping
Clamped by Plan
Clamped to plan max_rows
Parameters
Optional Parameters
| Name | Type | Location | Description |
|---|---|---|---|
| from | string | query | Window start date in YYYY-MM-DD format. Clamped to account history_days. from > to returns 400 invalid_range. |
| to | string | query | Window end date in YYYY-MM-DD format. Range cannot exceed 90 days (400 invalid_range). |
| symbol | string | query | Filter by equity ticker symbol. Invalid symbol returns 400 invalid_parameter. |
| cursor | string | query | Opaque pagination cursor to fetch the next page of results. |
| limit | integer | query | Maximum events to return (1-1000, default 250). Clamped to plan max_rows. |
Request Examples
curl -s -H "Authorization: Bearer $WSO_API_KEY" \
"https://api.wheelstrategyoptions.com/v1/earnings?symbol=DAL"Try it
GET/v1/earnings
Included in BasicAdd your API key to send.
Response
Send a request to see the live response, its status, timing, and rate-limit headers.
Response Attributes (200 OK)
| Field | Type | Nullable | Description |
|---|---|---|---|
| from | string | No | Window start date in YYYY-MM-DD format. |
| to | string | No | Window end date in YYYY-MM-DD format. |
| truncated | boolean | No | Indicates whether returned results hit the query limit. |
| nextCursor | string | Yes | Opaque cursor to fetch the next page of results, or null when all results have been returned. |
| results | object[] | No | List of earnings announcement events. |
Response Example
json
{
"from": "2026-10-09",
"to": "2026-11-08",
"truncated": false,
"nextCursor": null,
"results": [
{
"symbol": "DAL",
"name": "Delta Air Lines, Inc.",
"earningsDate": "2026-10-09",
"timing": "bmo",
"fiscalQuarter": null,
"epsEstimated": 1.93,
"revenueEstimated": null
},
{
"symbol": "HIFS",
"name": "Hingham Institution for Savings",
"earningsDate": "2026-10-09",
"timing": "amc",
"fiscalQuarter": null,
"epsEstimated": null,
"revenueEstimated": null
},
{
"symbol": "HOVR",
"name": "New Horizon Aircraft Ltd.",
"earningsDate": "2026-10-09",
"timing": "bmo",
"fiscalQuarter": null,
"epsEstimated": -0.08,
"revenueEstimated": null
}
]
}Error Responses
| Status | Description |
|---|---|
| 400 | Bad Request. The request body, query parameters, or path values violated validation constraints. |
| 401 | Unauthorized. Missing, malformed, or invalid API key credential. |
| 403 | Forbidden. Rejection reasons: `subscription_required` (no subscription record), `subscription_inactive` (subscription not active), `trial_ended` (trial has expired), `wrong_credential_type`, `origin_forbidden` (origin authentication failed). |
| 404 | Not Found. Requested resource, ticker symbol, or option contract does not exist. |
| 405 | Method Not Allowed. Returned with an `Allow` header when an unsupported HTTP method is used. Error code: `method_not_allowed`. (HEAD is served on all GET routes and counts against the rate limit like GET.) |
| 429 | Too Many Requests. Rejection reasons: `rate_limited` (per-minute limit), `too_many_concurrent_requests` (in-flight cap), `too_many_auth_failures`. |
| 500 | Internal Server Error. Unhandled internal server or database error. |
| 503 | Service Unavailable. Backing database, cache, or external provider connection unavailable. |