{"openapi":"3.1.0","info":{"title":"ECONALK Public API","version":"1.0.0","description":"Human-owned public API. Responses are immutable snapshots with request IDs; dataset rights remain governed by ECONALK API Terms.","license":{"name":"ECONALK API Terms","url":"https://api.econalk.com/docs/terms"}},"servers":[{"url":"https://api.econalk.com"}],"tags":[{"name":"Articles","description":"Licensed ECONALK editorial content."},{"name":"Economic Calendar","description":"Curated macroeconomic events."},{"name":"Smart Money","description":"SEC filing facts and ECONALK-derived snapshot metrics."}],"paths":{"/v1/articles":{"get":{"operationId":"listArticles","summary":"List articles","description":"Returns licensed ECONALK editorial fields. Rights metadata controls attribution and reuse; provider market snapshots are excluded. Snapshot generation and latest published article are each no more than 7 days old.","tags":["Articles"],"security":[{"bearerAuth":[]}],"x-required-scopes":["articles:read"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Page size. Defaults to 20; maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor bound to one immutable response snapshot.","schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["en-US","ko-KR","ja-JP","zh-CN"]}},{"name":"category","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}}],"responses":{"200":{"description":"List articles response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleListEnvelope"}}}},"400":{"description":"400 Request parameters or cursor are invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_request":{"summary":"Request parameters are invalid.","value":{"error":{"code":"invalid_request","message":"Request parameters are invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"invalid_cursor":{"summary":"Cursor is malformed or belongs to another snapshot.","value":{"error":{"code":"invalid_cursor","message":"Cursor is malformed or belongs to another snapshot.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_cursor"}}}}}}},"401":{"description":"401 API key is missing or invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_api_key":{"summary":"API key is missing or invalid.","value":{"error":{"code":"invalid_api_key","message":"API key is missing or invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_api_key"}}}}}}},"403":{"description":"403 API key lacks required scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"insufficient_scope":{"summary":"API key lacks required scope.","value":{"error":{"code":"insufficient_scope","message":"API key lacks required scope.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#insufficient_scope"}}}}}}},"404":{"description":"404 Requested resource was not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"summary":"Requested resource was not found.","value":{"error":{"code":"not_found","message":"Requested resource was not found.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#not_found"}}}}}}},"429":{"description":"429 Rate or monthly quota limit was exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limited":{"summary":"Request rate limit reached.","value":{"error":{"code":"rate_limited","message":"Request rate limit reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#rate_limited"}}},"quota_exceeded":{"summary":"Monthly request quota reached.","value":{"error":{"code":"quota_exceeded","message":"Monthly request quota reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/extra-usage/contact"}}}}}}},"500":{"description":"500 Unexpected server error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"internal_error":{"summary":"Unexpected server error.","value":{"error":{"code":"internal_error","message":"Unexpected server error.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#internal_error"}}}}}}},"503":{"description":"503 Required data snapshot is unavailable or stale.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"snapshot_unavailable":{"summary":"Required data snapshot is unavailable or stale.","value":{"error":{"code":"snapshot_unavailable","message":"Required data snapshot is unavailable or stale.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#snapshot_unavailable"}}}}}}}}}},"/v1/articles/{slug}":{"get":{"operationId":"getArticle","summary":"Get article","description":"Returns one licensed ECONALK article with explicit rights and source attribution metadata. Snapshot generation and latest published article are each no more than 7 days old.","tags":["Articles"],"security":[{"bearerAuth":[]}],"x-required-scopes":["articles:read"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Canonical URL-safe resource slug.","schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"Get article response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleEnvelope"}}}},"400":{"description":"400 Request parameters or cursor are invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_request":{"summary":"Request parameters are invalid.","value":{"error":{"code":"invalid_request","message":"Request parameters are invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"invalid_cursor":{"summary":"Cursor is malformed or belongs to another snapshot.","value":{"error":{"code":"invalid_cursor","message":"Cursor is malformed or belongs to another snapshot.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_cursor"}}}}}}},"401":{"description":"401 API key is missing or invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_api_key":{"summary":"API key is missing or invalid.","value":{"error":{"code":"invalid_api_key","message":"API key is missing or invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_api_key"}}}}}}},"403":{"description":"403 API key lacks required scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"insufficient_scope":{"summary":"API key lacks required scope.","value":{"error":{"code":"insufficient_scope","message":"API key lacks required scope.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#insufficient_scope"}}}}}}},"404":{"description":"404 Requested resource was not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"summary":"Requested resource was not found.","value":{"error":{"code":"not_found","message":"Requested resource was not found.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#not_found"}}}}}}},"429":{"description":"429 Rate or monthly quota limit was exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limited":{"summary":"Request rate limit reached.","value":{"error":{"code":"rate_limited","message":"Request rate limit reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#rate_limited"}}},"quota_exceeded":{"summary":"Monthly request quota reached.","value":{"error":{"code":"quota_exceeded","message":"Monthly request quota reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/extra-usage/contact"}}}}}}},"500":{"description":"500 Unexpected server error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"internal_error":{"summary":"Unexpected server error.","value":{"error":{"code":"internal_error","message":"Unexpected server error.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#internal_error"}}}}}}},"503":{"description":"503 Required data snapshot is unavailable or stale.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"snapshot_unavailable":{"summary":"Required data snapshot is unavailable or stale.","value":{"error":{"code":"snapshot_unavailable","message":"Required data snapshot is unavailable or stale.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#snapshot_unavailable"}}}}}}}}}},"/v1/economic-calendar":{"get":{"operationId":"listEconomicCalendar","summary":"List economic calendar events","description":"Returns ECONALK-curated events only. License and attribution are explicit; raw upstream payloads and provider identifiers are excluded. verifiedAt is no more than 100 days old, and coverageThrough extends at least 30 days beyond snapshot generation.","tags":["Economic Calendar"],"security":[{"bearerAuth":[]}],"x-required-scopes":["calendar:read"],"parameters":[{"name":"from","in":"query","required":true,"description":"Inclusive start date. Combined range may not exceed 93 days.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"to","in":"query","required":true,"description":"Inclusive end date. Combined range may not exceed 93 days.","schema":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"importance","in":"query","required":false,"schema":{"type":"string","enum":["low","medium","high"]}},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Z]{2}$"}},{"name":"limit","in":"query","required":false,"description":"Page size. Defaults to 20; maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor bound to one immutable response snapshot.","schema":{"type":"string","minLength":1,"maxLength":2048}}],"responses":{"200":{"description":"List economic calendar events response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EconomicCalendarListEnvelope"}}}},"400":{"description":"400 Request parameters or cursor are invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_request":{"summary":"Request parameters are invalid.","value":{"error":{"code":"invalid_request","message":"Request parameters are invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"invalid_cursor":{"summary":"Cursor is malformed or belongs to another snapshot.","value":{"error":{"code":"invalid_cursor","message":"Cursor is malformed or belongs to another snapshot.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_cursor"}}}}}}},"401":{"description":"401 API key is missing or invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_api_key":{"summary":"API key is missing or invalid.","value":{"error":{"code":"invalid_api_key","message":"API key is missing or invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_api_key"}}}}}}},"403":{"description":"403 API key lacks required scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"insufficient_scope":{"summary":"API key lacks required scope.","value":{"error":{"code":"insufficient_scope","message":"API key lacks required scope.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#insufficient_scope"}}}}}}},"404":{"description":"404 Requested resource was not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"summary":"Requested resource was not found.","value":{"error":{"code":"not_found","message":"Requested resource was not found.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#not_found"}}}}}}},"429":{"description":"429 Rate or monthly quota limit was exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limited":{"summary":"Request rate limit reached.","value":{"error":{"code":"rate_limited","message":"Request rate limit reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#rate_limited"}}},"quota_exceeded":{"summary":"Monthly request quota reached.","value":{"error":{"code":"quota_exceeded","message":"Monthly request quota reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/extra-usage/contact"}}}}}}},"500":{"description":"500 Unexpected server error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"internal_error":{"summary":"Unexpected server error.","value":{"error":{"code":"internal_error","message":"Unexpected server error.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#internal_error"}}}}}}},"503":{"description":"503 Required data snapshot is unavailable or stale.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"snapshot_unavailable":{"summary":"Required data snapshot is unavailable or stale.","value":{"error":{"code":"snapshot_unavailable","message":"Required data snapshot is unavailable or stale.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#snapshot_unavailable"}}}}}}}}}},"/v1/smart-money/investors":{"get":{"operationId":"listSmartMoneyInvestors","summary":"List Smart Money investors","description":"Returns SEC filing facts plus ECONALK snapshot metrics. Snapshot generation is no more than 14 days old; each filing-quarter end is no more than 180 days old. Each upstream snapshot is capped to the largest 250 filing rows. Reported values are not AUM and do not represent full-portfolio value. No live quotes, security identifiers, or licensed market-vendor fields are exposed.","tags":["Smart Money"],"security":[{"bearerAuth":[]}],"x-required-scopes":["smart-money:read"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Page size. Defaults to 20; maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor bound to one immutable response snapshot.","schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"category","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":80}}],"responses":{"200":{"description":"List Smart Money investors response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartMoneyInvestorListEnvelope"}}}},"400":{"description":"400 Request parameters or cursor are invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_request":{"summary":"Request parameters are invalid.","value":{"error":{"code":"invalid_request","message":"Request parameters are invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"invalid_cursor":{"summary":"Cursor is malformed or belongs to another snapshot.","value":{"error":{"code":"invalid_cursor","message":"Cursor is malformed or belongs to another snapshot.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_cursor"}}}}}}},"401":{"description":"401 API key is missing or invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_api_key":{"summary":"API key is missing or invalid.","value":{"error":{"code":"invalid_api_key","message":"API key is missing or invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_api_key"}}}}}}},"403":{"description":"403 API key lacks required scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"insufficient_scope":{"summary":"API key lacks required scope.","value":{"error":{"code":"insufficient_scope","message":"API key lacks required scope.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#insufficient_scope"}}}}}}},"404":{"description":"404 Requested resource was not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"summary":"Requested resource was not found.","value":{"error":{"code":"not_found","message":"Requested resource was not found.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#not_found"}}}}}}},"429":{"description":"429 Rate or monthly quota limit was exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limited":{"summary":"Request rate limit reached.","value":{"error":{"code":"rate_limited","message":"Request rate limit reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#rate_limited"}}},"quota_exceeded":{"summary":"Monthly request quota reached.","value":{"error":{"code":"quota_exceeded","message":"Monthly request quota reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/extra-usage/contact"}}}}}}},"500":{"description":"500 Unexpected server error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"internal_error":{"summary":"Unexpected server error.","value":{"error":{"code":"internal_error","message":"Unexpected server error.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#internal_error"}}}}}}},"503":{"description":"503 Required data snapshot is unavailable or stale.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"snapshot_unavailable":{"summary":"Required data snapshot is unavailable or stale.","value":{"error":{"code":"snapshot_unavailable","message":"Required data snapshot is unavailable or stale.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#snapshot_unavailable"}}}}}}}}}},"/v1/smart-money/investors/{slug}":{"get":{"operationId":"getSmartMoneyInvestor","summary":"Get Smart Money investor","description":"Returns one SEC filing snapshot and issuer-name positions derived by ECONALK. Snapshot generation is no more than 14 days old; the filing-quarter end is no more than 180 days old. Each upstream snapshot is capped to the largest 250 filing rows. Reported values are not AUM and do not represent full-portfolio value.","tags":["Smart Money"],"security":[{"bearerAuth":[]}],"x-required-scopes":["smart-money:read"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Canonical URL-safe resource slug.","schema":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"Get Smart Money investor response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartMoneyInvestorDetailEnvelope"}}}},"400":{"description":"400 Request parameters or cursor are invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_request":{"summary":"Request parameters are invalid.","value":{"error":{"code":"invalid_request","message":"Request parameters are invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"invalid_cursor":{"summary":"Cursor is malformed or belongs to another snapshot.","value":{"error":{"code":"invalid_cursor","message":"Cursor is malformed or belongs to another snapshot.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_cursor"}}}}}}},"401":{"description":"401 API key is missing or invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_api_key":{"summary":"API key is missing or invalid.","value":{"error":{"code":"invalid_api_key","message":"API key is missing or invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_api_key"}}}}}}},"403":{"description":"403 API key lacks required scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"insufficient_scope":{"summary":"API key lacks required scope.","value":{"error":{"code":"insufficient_scope","message":"API key lacks required scope.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#insufficient_scope"}}}}}}},"404":{"description":"404 Requested resource was not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"summary":"Requested resource was not found.","value":{"error":{"code":"not_found","message":"Requested resource was not found.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#not_found"}}}}}}},"429":{"description":"429 Rate or monthly quota limit was exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limited":{"summary":"Request rate limit reached.","value":{"error":{"code":"rate_limited","message":"Request rate limit reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#rate_limited"}}},"quota_exceeded":{"summary":"Monthly request quota reached.","value":{"error":{"code":"quota_exceeded","message":"Monthly request quota reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/extra-usage/contact"}}}}}}},"500":{"description":"500 Unexpected server error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"internal_error":{"summary":"Unexpected server error.","value":{"error":{"code":"internal_error","message":"Unexpected server error.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#internal_error"}}}}}}},"503":{"description":"503 Required data snapshot is unavailable or stale.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"snapshot_unavailable":{"summary":"Required data snapshot is unavailable or stale.","value":{"error":{"code":"snapshot_unavailable","message":"Required data snapshot is unavailable or stale.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#snapshot_unavailable"}}}}}}}}}},"/v1/smart-money/consensus":{"get":{"operationId":"listSmartMoneyConsensus","summary":"List Smart Money consensus","description":"Returns issuer-name consensus aggregated from SEC filing snapshots by ECONALK. Snapshot generation is no more than 14 days old; filing-quarter ends are no more than 180 days old. Inputs are capped to the largest 250 filing rows per investor. Reported values are not AUM and do not represent full-portfolio value.","tags":["Smart Money"],"security":[{"bearerAuth":[]}],"x-required-scopes":["smart-money:read"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Page size. Defaults to 10; maximum 10. Every encoded response is independently capped at 512 KiB.","schema":{"type":"integer","minimum":1,"maximum":10,"default":10}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor bound to one immutable response snapshot.","schema":{"type":"string","minLength":1,"maxLength":2048}}],"responses":{"200":{"description":"List Smart Money consensus response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartMoneyConsensusListEnvelope"}}}},"400":{"description":"400 Request parameters or cursor are invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_request":{"summary":"Request parameters are invalid.","value":{"error":{"code":"invalid_request","message":"Request parameters are invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"invalid_cursor":{"summary":"Cursor is malformed or belongs to another snapshot.","value":{"error":{"code":"invalid_cursor","message":"Cursor is malformed or belongs to another snapshot.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_cursor"}}}}}}},"401":{"description":"401 API key is missing or invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_api_key":{"summary":"API key is missing or invalid.","value":{"error":{"code":"invalid_api_key","message":"API key is missing or invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_api_key"}}}}}}},"403":{"description":"403 API key lacks required scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"insufficient_scope":{"summary":"API key lacks required scope.","value":{"error":{"code":"insufficient_scope","message":"API key lacks required scope.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#insufficient_scope"}}}}}}},"404":{"description":"404 Requested resource was not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"summary":"Requested resource was not found.","value":{"error":{"code":"not_found","message":"Requested resource was not found.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#not_found"}}}}}}},"429":{"description":"429 Rate or monthly quota limit was exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limited":{"summary":"Request rate limit reached.","value":{"error":{"code":"rate_limited","message":"Request rate limit reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#rate_limited"}}},"quota_exceeded":{"summary":"Monthly request quota reached.","value":{"error":{"code":"quota_exceeded","message":"Monthly request quota reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/extra-usage/contact"}}}}}}},"500":{"description":"500 Unexpected server error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"internal_error":{"summary":"Unexpected server error.","value":{"error":{"code":"internal_error","message":"Unexpected server error.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#internal_error"}}}}}}},"503":{"description":"503 Required data snapshot is unavailable or stale.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"snapshot_unavailable":{"summary":"Required data snapshot is unavailable or stale.","value":{"error":{"code":"snapshot_unavailable","message":"Required data snapshot is unavailable or stale.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#snapshot_unavailable"}}}}}}}}}},"/v1/smart-money/trades":{"get":{"operationId":"listSmartMoneyTrades","summary":"List Smart Money trades","description":"Returns query-complete quarter-over-quarter SEC filing changes using issuer names. Snapshot generation is no more than 14 days old; filing-quarter ends are no more than 180 days old. Current positions are limited to the largest 250 filing rows per investor; historical sold rows are retained separately, so change-row counts can exceed 250. Reported-value changes are not transaction cash flow. Exchange symbols, CUSIPs, and sector-vendor fields are excluded.","tags":["Smart Money"],"security":[{"bearerAuth":[]}],"x-required-scopes":["smart-money:read"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Page size. Defaults to 20; maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor bound to one immutable response snapshot.","schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"action","in":"query","required":false,"schema":{"type":"string","enum":["new","added","trimmed","sold"]}},{"name":"investorSlug","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":160}}],"responses":{"200":{"description":"List Smart Money trades response.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartMoneyTradeListEnvelope"}}}},"400":{"description":"400 Request parameters or cursor are invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_request":{"summary":"Request parameters are invalid.","value":{"error":{"code":"invalid_request","message":"Request parameters are invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"invalid_cursor":{"summary":"Cursor is malformed or belongs to another snapshot.","value":{"error":{"code":"invalid_cursor","message":"Cursor is malformed or belongs to another snapshot.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_cursor"}}}}}}},"401":{"description":"401 API key is missing or invalid.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_api_key":{"summary":"API key is missing or invalid.","value":{"error":{"code":"invalid_api_key","message":"API key is missing or invalid.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_api_key"}}}}}}},"403":{"description":"403 API key lacks required scope.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"insufficient_scope":{"summary":"API key lacks required scope.","value":{"error":{"code":"insufficient_scope","message":"API key lacks required scope.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#insufficient_scope"}}}}}}},"404":{"description":"404 Requested resource was not found.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"summary":"Requested resource was not found.","value":{"error":{"code":"not_found","message":"Requested resource was not found.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#not_found"}}}}}}},"429":{"description":"429 Rate or monthly quota limit was exceeded.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limited":{"summary":"Request rate limit reached.","value":{"error":{"code":"rate_limited","message":"Request rate limit reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#rate_limited"}}},"quota_exceeded":{"summary":"Monthly request quota reached.","value":{"error":{"code":"quota_exceeded","message":"Monthly request quota reached.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/extra-usage/contact"}}}}}}},"500":{"description":"500 Unexpected server error.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"internal_error":{"summary":"Unexpected server error.","value":{"error":{"code":"internal_error","message":"Unexpected server error.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#internal_error"}}}}}}},"503":{"description":"503 Required data snapshot is unavailable or stale.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/XRateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/XRateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/XRateLimitReset"},"X-Quota-Limit":{"$ref":"#/components/headers/XQuotaLimit"},"X-Quota-Remaining":{"$ref":"#/components/headers/XQuotaRemaining"},"X-Quota-Reset":{"$ref":"#/components/headers/XQuotaReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"snapshot_unavailable":{"summary":"Required data snapshot is unavailable or stale.","value":{"error":{"code":"snapshot_unavailable","message":"Required data snapshot is unavailable or stale.","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#snapshot_unavailable"}}}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"ECONALK API key","description":"Send API key as a Bearer token."}},"headers":{"XRateLimitLimit":{"description":"Request limit for current rolling window.","schema":{"type":"integer"}},"XRateLimitRemaining":{"description":"Requests remaining in current rolling window.","schema":{"type":"integer"}},"XRateLimitReset":{"description":"UTC Unix timestamp when rolling rate window resets.","schema":{"type":"integer","format":"int64"}},"XQuotaLimit":{"description":"Requests allowed in current monthly quota period.","schema":{"type":"integer"}},"XQuotaRemaining":{"description":"Requests remaining in current monthly quota period.","schema":{"type":"integer"}},"XQuotaReset":{"description":"UTC Unix timestamp when monthly quota resets.","schema":{"type":"integer","format":"int64"}},"XRequestId":{"description":"Stable request identifier echoed in response body metadata or errors.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}},"schemas":{"Snapshot":{"type":"object","additionalProperties":false,"required":["id","generatedAt","schemaVersion"],"properties":{"id":{"type":"string","minLength":1,"maxLength":256},"generatedAt":{"type":"string","format":"date-time"},"schemaVersion":{"type":"string","pattern":"^\\d+\\.\\d+(?:\\.\\d+)?$"}},"example":{"id":"2026-08-04-a1b2c3","generatedAt":"2026-08-04T00:00:00Z","schemaVersion":"1.0"}},"Pagination":{"type":"object","additionalProperties":false,"required":["limit","nextCursor","hasMore"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"nextCursor":{"type":["string","null"],"minLength":1,"maxLength":2048},"hasMore":{"type":"boolean"}}},"Rights":{"description":"Reuse terms for licensed ECONALK content. Clients must preserve attribution and follow linked API Terms.","type":"object","additionalProperties":false,"required":["license","attribution"],"properties":{"license":{"type":"string","minLength":1,"maxLength":120},"attribution":{"type":"string","minLength":1,"maxLength":200},"canonicalUrl":{"type":"string","format":"uri","maxLength":2048}}},"ResponseMeta":{"type":"object","additionalProperties":false,"required":["requestId","snapshot"],"properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"snapshot":{"$ref":"#/components/schemas/Snapshot"}}},"ListResponseMeta":{"type":"object","additionalProperties":false,"required":["requestId","snapshot","pagination"],"properties":{"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"snapshot":{"$ref":"#/components/schemas/Snapshot"},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"ErrorEnvelope":{"description":"Stable error envelope. requestId identifies the failed request for support and audit correlation.","type":"object","additionalProperties":false,"required":["error"],"properties":{"error":{"type":"object","additionalProperties":false,"required":["code","message","requestId","docsUrl"],"properties":{"code":{"type":"string","enum":["invalid_request","invalid_cursor","invalid_api_key","insufficient_scope","not_found","rate_limited","quota_exceeded","snapshot_unavailable","internal_error"]},"message":{"type":"string","minLength":1,"maxLength":500},"requestId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"docsUrl":{"type":"string","format":"uri"}}}},"example":{"error":{"code":"invalid_request","message":"limit must be between 1 and 100","requestId":"req_01J9Z6R7N9F4H5Q6S7T8V9W0XY","docsUrl":"https://api.econalk.com/docs/errors#invalid_request"}}},"Article":{"type":"object","additionalProperties":false,"required":["slug","title","summary","locale","category","publishedAt","author","rights"],"properties":{"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"title":{"type":"string","minLength":1,"maxLength":300},"summary":{"type":"string","minLength":1,"maxLength":1000},"locale":{"type":"string","enum":["en-US","ko-KR","ja-JP","zh-CN"]},"category":{"type":"string","minLength":1,"maxLength":80},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"author":{"type":"string","minLength":1,"maxLength":120},"body":{"type":"string","minLength":1,"maxLength":262144,"description":"Safe CommonMark text. ECONALK MDX components are converted to inert Markdown and must never be executed as HTML or JSX. UTF-8 payload is capped at 262144 bytes."},"imageUrl":{"type":"string","format":"uri","maxLength":2048},"tags":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":80}},"sources":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/ArticleSource"}},"rights":{"$ref":"#/components/schemas/Rights"}}},"ArticleSource":{"type":"object","additionalProperties":false,"required":["title","publisher","url"],"properties":{"title":{"type":"string","minLength":1,"maxLength":300},"publisher":{"type":"string","minLength":1,"maxLength":160},"url":{"type":"string","format":"uri","maxLength":2048},"publishedAt":{"type":"string","format":"date-time"}}},"CalendarRights":{"description":"Attribution and reuse terms for ECONALK-curated calendar records.","type":"object","additionalProperties":false,"required":["license","attribution"],"properties":{"license":{"type":"string","minLength":1,"maxLength":120},"attribution":{"type":"string","minLength":1,"maxLength":200}}},"EconomicCalendarEvent":{"description":"Curated ECONALK calendar record. verifiedAt must be no more than 100 days old and coverageThrough must extend at least 30 days beyond snapshot generation. Raw provider fields and identifiers are intentionally absent.","type":"object","additionalProperties":false,"required":["id","name","country","scheduledAt","verifiedAt","coverageThrough","importance","status","rights"],"properties":{"id":{"type":"string","minLength":1,"maxLength":160},"name":{"type":"string","minLength":1,"maxLength":300},"country":{"type":"string","pattern":"^[A-Z]{2}$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"scheduledAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":"string","format":"date-time"},"coverageThrough":{"type":"string","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"importance":{"type":"string","enum":["low","medium","high"]},"period":{"type":"string","minLength":1,"maxLength":80},"actual":{"type":["number","null"]},"forecast":{"type":["number","null"]},"previous":{"type":["number","null"]},"unit":{"type":"string","minLength":1,"maxLength":40},"status":{"type":"string","enum":["scheduled","released","revised"]},"rights":{"$ref":"#/components/schemas/CalendarRights"}}},"SmartMoneyActivity":{"type":"object","additionalProperties":false,"required":["new","added","trimmed","sold"],"properties":{"new":{"type":"integer","minimum":0},"added":{"type":"integer","minimum":0},"trimmed":{"type":"integer","minimum":0},"sold":{"type":"integer","minimum":0}}},"SmartMoneyInvestor":{"description":"SEC filer identity and ECONALK-computed metrics from the retained largest 250 filing rows.","type":"object","additionalProperties":false,"required":["cik","slug","name","firm","filingQuarter","reportedSnapshotValueUsd","positionCount","top10Weight","activity","marketValuePercentile","generatedAt"],"properties":{"cik":{"type":"string","pattern":"^\\d{10}$"},"slug":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"firm":{"type":"string","minLength":1,"maxLength":300},"category":{"type":"string","minLength":1,"maxLength":80},"filingQuarter":{"type":"string","pattern":"^\\d{4}-Q[1-4]$"},"reportedSnapshotValueUsd":{"type":"number","minimum":0,"description":"Sum across retained largest 250 filing rows; not AUM or full-portfolio value."},"positionCount":{"type":"integer","minimum":0,"maximum":250,"description":"Count of retained positions, capped at 250; not full filing position count."},"top10Weight":{"type":"number","minimum":0,"maximum":1,"description":"Combined weight of ten largest positions within retained capped snapshot."},"activity":{"$ref":"#/components/schemas/SmartMoneyActivity"},"marketValuePercentile":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Percentile of reportedSnapshotValueUsd across ECONALK tracked snapshots; not AUM percentile."},"generatedAt":{"type":"string","format":"date-time"}}},"SmartMoneyPosition":{"description":"Issuer-name SEC position from retained largest 250 filing rows. Exchange symbol, CUSIP, sector, quote, and return fields are absent.","type":"object","additionalProperties":false,"required":["issuerName","shares","reportedValueUsd","weightWithinSnapshot","putCall","previousShares","previousReportedValueUsd","previousWeightWithinSnapshot","sharesChange","reportedValueChangeUsd","weightChange","action"],"properties":{"issuerName":{"type":"string","minLength":1,"maxLength":300},"shares":{"type":"number","minimum":0},"reportedValueUsd":{"type":"number","minimum":0,"description":"Reported value within the retained filing snapshot; not transaction cash flow."},"weightWithinSnapshot":{"type":"number","minimum":0,"maximum":1,"description":"Weight within retained largest 250 filing rows; not full-portfolio weight."},"putCall":{"type":["string","null"],"enum":["Put","Call",null]},"previousShares":{"type":["number","null"],"minimum":0},"previousReportedValueUsd":{"type":["number","null"],"minimum":0},"previousWeightWithinSnapshot":{"type":["number","null"],"minimum":0,"maximum":1},"sharesChange":{"type":"number"},"reportedValueChangeUsd":{"type":"number","description":"Quarter-over-quarter reported-value change; includes market-price movement and is not transaction cash flow."},"weightChange":{"type":"number","minimum":-1,"maximum":1},"action":{"type":"string","enum":["new","added","trimmed","hold"]}}},"SmartMoneyInvestorDetail":{"type":"object","additionalProperties":false,"required":["cik","slug","name","firm","filingQuarter","reportedSnapshotValueUsd","positionCount","top10Weight","activity","marketValuePercentile","generatedAt","positions"],"properties":{"cik":{"type":"string","pattern":"^\\d{10}$"},"slug":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1,"maxLength":200},"firm":{"type":"string","minLength":1,"maxLength":300},"category":{"type":"string","minLength":1,"maxLength":80},"filingQuarter":{"type":"string","pattern":"^\\d{4}-Q[1-4]$"},"reportedSnapshotValueUsd":{"type":"number","minimum":0,"description":"Sum across retained largest 250 filing rows; not AUM or full-portfolio value."},"positionCount":{"type":"integer","minimum":0,"maximum":250,"description":"Count of retained positions, capped at 250; not full filing position count."},"top10Weight":{"type":"number","minimum":0,"maximum":1,"description":"Combined weight of ten largest positions within retained capped snapshot."},"activity":{"$ref":"#/components/schemas/SmartMoneyActivity"},"marketValuePercentile":{"type":["number","null"],"minimum":0,"maximum":100,"description":"Percentile of reportedSnapshotValueUsd across ECONALK tracked snapshots; not AUM percentile."},"generatedAt":{"type":"string","format":"date-time"},"positions":{"type":"array","maxItems":250,"items":{"$ref":"#/components/schemas/SmartMoneyPosition"}}}},"SmartMoneyConsensus":{"description":"Consensus keyed by issuer name across retained largest 250 filing rows per investor, without exchange symbols or vendor taxonomy.","type":"object","additionalProperties":false,"required":["issuerName","holderCount","holders","totalReportedValueUsd","averageWeightWithinSnapshot"],"properties":{"issuerName":{"type":"string","minLength":1,"maxLength":300},"holderCount":{"type":"integer","minimum":1,"maximum":50},"holders":{"type":"array","minItems":1,"maxItems":50,"items":{"$ref":"#/components/schemas/SmartMoneyConsensusHolder"}},"totalReportedValueUsd":{"type":"number","minimum":0,"description":"Aggregate reported value across retained snapshots; not AUM or full-portfolio value."},"averageWeightWithinSnapshot":{"type":"number","minimum":0,"maximum":1,"description":"Average weight within each retained largest-250-row snapshot."}}},"SmartMoneyConsensusHolder":{"type":"object","additionalProperties":false,"required":["investorSlug","investorName","weightWithinSnapshot","reportedValueUsd"],"properties":{"investorSlug":{"type":"string","minLength":1,"maxLength":160},"investorName":{"type":"string","minLength":1,"maxLength":200},"weightWithinSnapshot":{"type":"number","minimum":0,"maximum":1,"description":"Weight within retained largest 250 filing rows; not full-portfolio weight."},"reportedValueUsd":{"type":"number","minimum":0}}},"SmartMoneyTrade":{"description":"Issuer-name filing change without exchange symbol, CUSIP, or sector fields. Reported-value changes include market-price movement and are not transaction cash flow.","type":"object","additionalProperties":false,"required":["investorSlug","investorName","filingQuarter","issuerName","putCall","action","sharesChange","reportedValueChangeUsd","weightChange"],"properties":{"investorSlug":{"type":"string","minLength":1,"maxLength":160},"investorName":{"type":"string","minLength":1,"maxLength":200},"filingQuarter":{"type":"string","pattern":"^\\d{4}-Q[1-4]$"},"issuerName":{"type":"string","minLength":1,"maxLength":300},"putCall":{"type":["string","null"],"enum":["Put","Call",null],"description":"Option side when filing row is an option; null for equity."},"action":{"type":"string","enum":["new","added","trimmed","sold"]},"sharesChange":{"type":"number"},"reportedValueChangeUsd":{"type":"number","description":"Quarter-over-quarter reported-value change; includes market-price movement and is not transaction cash flow."},"weightChange":{"type":"number","minimum":-1,"maximum":1}}},"ArticleEnvelope":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Article"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}}},"ArticleListEnvelope":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Article"}},"meta":{"$ref":"#/components/schemas/ListResponseMeta"}}},"EconomicCalendarListEnvelope":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EconomicCalendarEvent"}},"meta":{"$ref":"#/components/schemas/ListResponseMeta"}}},"SmartMoneyInvestorListEnvelope":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SmartMoneyInvestor"}},"meta":{"$ref":"#/components/schemas/ListResponseMeta"}}},"SmartMoneyInvestorDetailEnvelope":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/SmartMoneyInvestorDetail"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}}},"SmartMoneyConsensusListEnvelope":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SmartMoneyConsensus"}},"meta":{"$ref":"#/components/schemas/ListResponseMeta"}}},"SmartMoneyTradeListEnvelope":{"type":"object","additionalProperties":false,"required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SmartMoneyTrade"}},"meta":{"$ref":"#/components/schemas/ListResponseMeta"}}}}}}