FinancialReports
    FinancialReports
    • FinancialReports API Documentation
    • Changelog
    • Python SDK
    • Companies
      • List Companies
        GET
      • Retrieve Company Details
        GET
      • Predict Next Annual Report
        GET
    • Filings
      • List Filings
        GET
      • Retrieve Filing Details
        GET
      • Retrieve Filing Markdown
        GET
    • Filing Types
      • The Financial Reporting Classification Framework (FRCF)
      • List Filing Types
        GET
      • Retrieve Filing Type
        GET
    • Filing Categories
      • List Filing Categories
        GET
      • Retrieve Filing Category
        GET
    • Languages
      • Understanding Language Codes
      • List Languages
        GET
      • Retrieve Language
        GET
    • ISIC Classifications
      • Understanding ISIC Classification
      • List ISIC Classes
        GET
      • Retrieve ISIC Class
        GET
      • List ISIC Divisions
        GET
      • Retrieve ISIC Division
        GET
      • List ISIC Groups
        GET
      • Retrieve ISIC Group
        GET
      • List ISIC Sections
        GET
      • Retrieve ISIC Section
        GET
    • Countries
      • Understanding Country Codes
      • List Countries
      • Retrieve Country
    • Sources
      • Understanding Data Sources
      • List Data Sources
      • Retrieve Data Source
    • Watchlist
      • Get User's Watchlist
      • Add Company to Watchlist
      • Remove Company from Watchlist
    • Webhooks (Management)
      • List Webhooks
      • Create Webhook
      • Retrieve Webhook
      • Update Webhook
      • Partial Update Webhook
      • Delete Webhook
      • List Delivery Logs
      • Regenerate Secret Key
      • Test Webhook
    • ISINs
      • List ISINs
      • Retrieve ISIN
    • Schemas
      • Company
      • Language
      • Filing
      • Source
      • CompanyMinimal
      • Country
      • ErrorDetail
      • FilingType
      • DesignatedSponsor
      • FilingSummary
      • ISICClass
      • FilingProcessedPayload
      • FilingCategory
      • ISICDivision
      • ISICGroup
      • ISICSection
      • PaginatedFilingTypeList
      • PaginatedCompanyMinimalList
      • PaginatedFilingSummaryList
      • PaginatedISICClassList
      • PaginatedCountryList
      • PaginatedISICDivisionList
      • ISIN
      • PaginatedSourceList
      • ListedStockExchange
      • PaginatedISICGroupList
      • PaginatedISICSectionList
      • NextAnnualReport
      • PaginatedFilingCategoryList
      • PaginatedLanguageList
      • WatchlistAction
      • WatchlistCompany
      • WatchlistResponse
      • PaginatedWebhookList
      • PatchedWebhook
      • PaginatedISINList
      • StockIndex
      • PaginatedWebhookDeliveryList
      • ProcessingStatusEnum
      • Webhook
      • StatusEnum
      • WebhookCompanyPayload
      • WebhookFilingPayload
      • WebhookDelivery
      • WebhookSecret

    Changelog

    2026-02-16

    New

    • Annual Report Estimates: Introduced a dedicated GET /companies/{id}/next-annual-report/ endpoint.
      • Predictive Analytics: Utilizes a statistical Density Window Algorithm to forecast the expected release window for a company's next Annual Report based on historical filing density.
      • Actionable Metadata: The response includes the estimated start_date and end_date, a confidence score (0-100), and an is_overdue boolean to immediately flag companies that have missed their expected reporting cycle.
      • Availability: This endpoint is available immediately for all Standard Access (Level 1) plans and above.

    2026-02-13

    New

    • Security Master API (ISINs): Introduced a dedicated GET /isins/ endpoint to resolve International Securities Identification Numbers to legal entities.
      • Portfolio Mapping: The endpoint supports a codes parameter for comma-separated bulk resolution (e.g., ?codes=US0378331005,DE000A1EWWW0). This allows clients to resolve an entire portfolio to Company IDs in a single HTTP request.
      • Hybrid Granularity: Responses include a nested company object (containing id, name, ticker, and country_code). This "Hybrid" design prevents the "N+1 query" problem, giving users immediate context without requiring secondary API calls.
      • Search: Added a search parameter for fuzzy matching, enabling autocomplete experiences (e.g., searching "US03...").

    Improved

    • ISIN Integration: Extended ISIN-based filtering across the core domain endpoints.
      • Filings: The GET /filings/ endpoint now accepts a company_isin filter, allowing users to fetch regulatory documents directly using a security identifier.
      • Companies: The GET /companies/ endpoint now supports an isin filter for exact entity lookups (case-insensitive).

    2026-02-10

    New

    • Webhook Observability API: Introduced a new GET /webhooks/{id}/deliveries/ endpoint.
      • Audit Logs: Users can now programmatically retrieve the full history of delivery attempts for a specific webhook.
      • Detailed Metrics: The response includes the status (success/failed), response_status_code (e.g., 200, 404, 500), and duration_ms for every event, allowing for automated health monitoring of your integration.
    • Dashboard Enhancements: The Webhook Management UI has been upgraded with a dedicated "View Logs" interface.
      • Users can now visually inspect delivery payloads, headers, and error responses directly in the dashboard.
      • Added "Eye" toggle visibility for Secret Keys to prevent shoulder-surfing.

    Security

    • Secret Key Hygiene: The secret_key field has been removed from the standard GET /webhooks/ and GET /webhooks/{id}/ responses.
      • Display Once: To align with industry security standards (e.g., Stripe, GitHub), the signing secret is now only returned in the API response immediately following creation (POST /webhooks/) or regeneration (POST /webhooks/{id}/regenerate-secret/).
      • Action Required: Clients and developers must store the secret key securely immediately upon generation, as it can no longer be retrieved later via the API.

    Improved

    • Unified Test Logic: The POST /webhooks/{id}/test/ API endpoint now utilizes the exact same execution pipeline as the Dashboard's "Send Test Event" button.
      • Audit Trail: API-initiated tests now create a persistent WebhookDelivery record, ensuring that automated integration tests leave a visible trace in your delivery logs for debugging.

    2026-02-03

    New

    • Filing Category Filtering: The GET /filings/ endpoint now supports precise filtering by the standardized FRCF categories.
      • Single Filter: category (e.g., ?category=1) for targeted queries.
      • Batch Filter: categories (e.g., ?categories=1,3,9) for multi-category data ingestion workflows (e.g., fetching both "M&A" and "Financial Reporting" simultaneously).
      • These filters utilize the immutable IDs exposed via the GET /filing-categories/ endpoint.

    Improved

    • Direct Document Linking: Added a document_url field to both the filing list (GET /filings/) and detail (GET /filings/{id}/) responses.
      • Utility: Clients can now access the direct CDN link for the original source document (PDF/HTML/ZIP) immediately from the list view, eliminating the need to query detail endpoints for every item.
      • Zero-Latency Implementation: The URL generation logic uses a high-performance, non-blocking construction method. This ensures that adding this field incurs 0ms of additional latency, maintaining the API's <50ms response standard even on large result sets.

    2026-01-30

    Improved

    • Webhook Delivery Latency: Upgraded the webhook notification infrastructure to a dedicated, high-priority execution pipeline.
      • Impact: Webhook events (filing.received and filing.processed) are now strictly isolated from heavy data processing tasks. This ensures near-instant delivery times (<500ms), even when the system is processing large queues of complex Annual Reports.
    • Processing Stability: Implemented "Resource Isolation" for heavy document analysis (PDF/XBRL conversion).
      • Impact: Complex, memory-intensive files are now processed in a segregated environment. This guarantees that deep analysis tasks never degrade the performance of the core API or the timeliness of new data ingestion.

    2026-01-28

    New

    • Event-Driven Webhooks (Fast Lane): Transformed the webhook architecture into a fully event-driven system, offering two distinct subscription modes for high-frequency trading (HFT) and data ingestion use cases.
      • Filing Received (Fast Lane): Introduced a trigger_on_filing_received option. This event fires milliseconds after ingestion, providing immediate awareness of a filing's existence (e.g., for headline trading) before analysis is complete.
        • Note: In this mode, derived metadata (Filing Type, Language) and Markdown content will be null.
      • Filing Processed (Slow Lane): The standard behavior is now explicitly controlled via trigger_on_filing_processed. This event fires only after deep analysis, classification, and markdown conversion are complete, guaranteeing rich metadata.
      • Hybrid Subscription: Users can subscribe to both events to receive an immediate "heads-up" followed by the complete data payload later.

    Improved

    • Webhook API Schema: Updated the Webhook object and POST /webhooks/ endpoints to support the new event triggers.
      • Backwards Compatibility: The API defaults preserve existing behavior (trigger_on_filing_received=False, trigger_on_filing_processed=True), ensuring no disruption to current integrations.
      • Schema Accuracy: The API schema for the webhook payload has been updated to explicitly mark analysis fields (filing_type, language) and markdown_content as nullable, accurately reflecting the data contract for "Fast Lane" events.

    2026-01-22

    Fixed

    • Rate Limit Exception Handling: Resolved a critical configuration issue where exceeding the "Burst Limit" (e.g., >50 req/s) caused a 500 Internal Server Error instead of a graceful 429 Too Many Requests.
      • Context: A latent path reference error in the settings configuration prevented the new "Smart 429" JSON renderer from loading during high-concurrency spikes.
      • Impact: Automated scrapers and Enterprise clients will now correctly receive the JSON error body with the retry_after_seconds field, allowing for proper exponential backoff.
    • Header Injection Reliability: Fixed a regression where X-RateLimit tracking headers were occasionally omitted from responses (returning N/A) due to Nginx URL rewriting.
      • Resolution: The middleware logic now identifies API traffic using a robust "Triple Check" (Host Header, Path, or API Key presence), ensuring accurate quota visibility for every request, regardless of the internal routing path.

    2026-01-21

    Fixed

    • Pagination URL Normalization: Normalized the next and previous cursor URLs in all paginated API responses.
      • Context: Following the "Edge-to-Origin" migration, pagination cursors briefly included a redundant path segment (/api/api/...) due to upstream routing strictness. These URLs now correctly resolve to the root resource (https://api.financialreports.eu/filings/...).
      • Compatibility: This is a non-breaking change. The redundant URLs generated over the last 24 hours remain valid and will automatically redirect to the correct resource, ensuring no disruption to running ingestion pipelines.

    2026-01-20

    Improved

    • Infrastructure Latency Reduction: Successfully completed a major infrastructure migration, moving the API termination point directly to our primary European data center.
      • Architecture: Transitioned from a proxied API Gateway architecture to a direct "Edge-to-Origin" topology.
      • Performance Impact: This removes an entire network hop and a redundant SSL handshake for every request, resulting in an average latency reduction of ~150ms per call.
      • Reliability: Simplified the request routing path, reducing the potential points of failure between the client and the database.

    2026-01-19

    Improved

    • Developer Experience (DX) Overhaul: Major improvements to the Python SDK and API documentation to streamline integration and usability.
      • Zero-Config Python SDK: The generated Python client has been completely re-architected with a new "Facade" pattern.
        • Simplified Usage: Users no longer need to instantiate Configuration or ApiClient objects manually. A single FinancialReports(api_key="...") class now handles everything.
        • Smart Methods: Clean, Pythonic method names (e.g., client.filings.list()) are now standard, replacing the verbose generated names (e.g., filings_api.filings_list()).
        • Async Native: Full support for async/await syntax with proper context manager (async with ...) support for high-performance concurrent requests.
        • Cross-Platform SSL: Embedded certificate handling ensures robust connectivity on all platforms (macOS, Linux, Windows, Docker) without manual certificate configuration.
      • Documentation Clarity: The API documentation now explicitly defines the "Access Levels" (Level 1, 2, 3) directly in the introduction and endpoint descriptions, removing ambiguity about permission requirements.

    2026-01-18

    New

    • Rate Limiting Architecture: Implemented a new dual-layer throttling system to ensure high service availability and fair usage across all tiers.
      • Burst Protection: A high-speed "short circuit" throttle now protects the API against accidental script loops or concurrency spikes (e.g., 50 requests/second for Enterprise).
      • Transparent Headers: All API responses now include standard tracking headers (X-RateLimit-Monthly-Limit, X-RateLimit-Monthly-Remaining, X-RateLimit-Burst-Limit) to help clients monitor their consumption in real-time.
      • Smart 429 Errors: Rate limit exceptions now return a detailed JSON body distinguishing between "Speed Limit" (Burst) and "Budget Limit" (Quota) errors, with specific retry instructions.

    Improved

    • Middleware Optimization: The Rate Limiting logic utilizes Request-Local Memoization, ensuring that the injection of tracking headers adds zero database overhead to the request lifecycle.
      • This architecture allows even high-volume Enterprise users with massive usage histories to receive accurate "Remaining" counts with no latency penalty.

    2026-01-14

    Improved

    • Core Performance Overhaul: A comprehensive re-architecture of the database and caching layers has resulted in an ~80% reduction in average response times across all endpoints.
      • Redis Connection Pooling: Upgraded the caching infrastructure to use enterprise-grade persistent connection pooling. This eliminates the SSL handshake overhead for every request, significantly improving internal latency.
      • Database Optimization: Optimized query execution plans for the /filings/ and /companies/ endpoints, replacing expensive full-table scans with efficient index-only scans where possible.
    • High-Performance Pagination: Implemented a new "Fast Count" pagination strategy to prevent database timeouts on large datasets (10M+ records).
      • Note on Counts: To ensure consistent sub-second latency, the count field in paginated responses is now capped at 10,000 for broad, unfiltered queries.
      • Users can still navigate through all results via the next link, but total record counts for massive result sets are now instantaneous estimates rather than expensive precise counts.

    Fixed

    • Timeouts: Resolved an issue where the GET /filings/ endpoint would timeout (504 Gateway Timeout) when filtering by broad historical ranges or complex criteria. These queries now execute in under 500ms.

    2026-01-10

    Improved

    • Filing Metadata: The GET /filings/ and GET /filings/{id}/ endpoints now expose two new high-value fields:
      • file_extension (e.g., "PDF", "HTML")
      • file_size (in bytes)
      • These fields empower data pipelines to make intelligent ingestion decisions (e.g., routing based on file type or optimizing storage bandwidth) without downloading the full document.
    • Advanced Filtering: The GET /filings/ endpoint has been upgraded with precision filtering capabilities for institutional workflows:
      • Extension Filtering: A new extensions parameter accepts single or comma-separated values (e.g., ?extensions=PDF,XBRL) to filter results by file type (case-insensitive).
      • Size Filtering: New file_size_min and file_size_max parameters allow users to filter out empty placeholders or cap downloads based on file size (e.g., ?file_size_min=1024).
    • Documentation: The OpenAPI/Swagger examples have been strictly updated to reflect the new schema, ensuring 100% parity between the documentation and the production API.

    2026-01-07

    Improved

    • Filing Availability Visibility: The GET /filings/ endpoint now exposes a processing_status field for every item in the list.
      • This allows users to immediately identify which filings have processed markdown content available (COMPLETED) versus those that are still PENDING or FAILED, eliminating the need to query individual detail endpoints to check for availability.
      • Performance Optimization: The list endpoint's database query has been optimized to remove heavy text prefetching, significantly reducing memory overhead and response latency while providing this new status visibility.

    2025-12-18

    New

    • Global Webhook Firehose: Introduced a new track_all_companies configuration for webhook subscriptions.
      • Users can now configure webhooks to receive filing.processed events for every company in the database, bypassing the need to add companies to a personal watchlist.
      • This capability is designed for high-volume automated data ingestion and broad market monitoring.
      • The API endpoints POST /webhooks/ and PUT /webhooks/{id}/ now accept a track_all_companies boolean parameter to enable this mode.

    Improved

    • Webhook Management UI: The Webhook List interface (/webhooks/) now includes distinct visual badges to differentiate between standard "Watchlist" alerts and "Global Firehose" subscriptions, providing immediate clarity on the notification scope.
    • Documentation: The Webhook documentation has been updated to explicitly detail the two modes of operation (Watchlist vs. Global), including specific setup instructions and use-case recommendations for the new global tracking feature.

    2025-12-12

    Improved

    • Data Governance & Schema Strictness: Implemented stricter data integrity rules across the Company dataset to align with institutional standards.
      • Mandatory Country Codes: The country_code field is now strictly mandatory. The API schema has been updated from string | null to string, guaranteeing a valid ISO 3166-1 alpha-2 code for every active company profile.
      • LEI Uniqueness: Database-level constraints now enforce uniqueness on the Legal Entity Identifier (LEI). This ensures 1:1 entity mapping and eliminates the possibility of ambiguous duplicate profiles.

    2025-11-25

    New

    • Filing Categories (Disclosure Types): Introduced a new GET /filing-categories/ endpoint.
      • This endpoint exposes the 11 standardized Disclosure Types defined by the Financial Reporting Classification Framework (FRCF), such as "Financial Reporting & Information" and "ESG Information".
      • This completes the API's exposure of the three-tiered FRCF hierarchy, allowing users to programmatically access the top-level classification logic.

    Improved

    • Filing Types Taxonomy: The GET /filing-types/ endpoint has been significantly enhanced to support the new classification structure.
      • Nested Category Data: Each filing type object now includes a full category object (containing id, name, and sort_order). This is an additive, backwards-compatible change that provides immediate context without requiring additional API calls.
      • Category Filtering: Added a category query parameter (e.g., ?category=1) to filter publication types by their broader disclosure category.
      • Text Search: Added a search query parameter (e.g., ?search=Annual) to perform case-insensitive searches against filing type codes and names.

    2025-11-24

    Fixed

    • URL Generation: Fixed an issue where the markdown_url and document fields could generate incorrect paths when accessed via specific proxy configurations. These fields now strictly enforce absolute URLs (e.g., https://api.financialreports.eu/...), ensuring consistent reachability regardless of the client's network route.

    Improved

    • Raw Markdown Delivery: The markdown endpoints now return raw, unescaped Markdown text (text/markdown) instead of a JSON-wrapped string.
      • This change ensures that content is immediately renderable by client applications and correctly identified as a file download by browsers.
      • Added a Content-Disposition header to the response to support proper file naming (e.g., filing_12345.md) when saving the output.

    2025-11-21

    Improved

    • Multi-Type Filtering: The GET /filings/ endpoint now supports a new types query parameter.
      • Users can now filter by multiple filing type codes simultaneously using a comma-separated list (e.g., ?types=10-K,10-Q,10-Q).
      • The filter is case-insensitive and automatically sanitizes input, ensuring a robust developer experience even if codes are entered in lowercase.

    2025-11-15

    New

    • Webhook Management API: Introduced a full suite of endpoints for managing webhook subscriptions. Users can now programmatically create, list, update, and delete webhooks to receive real-time notifications for processed filings.
      • GET /webhooks/: List all configured webhooks.
      • POST /webhooks/: Create a new webhook subscription.
      • GET /webhooks/{id}/: Retrieve a specific webhook.
      • PUT /webhooks/{id}/: Update a specific webhook.
      • PATCH /webhooks/{id}/: Partially update a specific webhook.
      • DELETE /webhooks/{id}/: Delete a webhook.
    • Webhook Actions: Added two utility endpoints for security and testing:
      • POST /webhooks/{id}/regenerate-secret/: Invalidates the old secret and generates a new one for verifying payload signatures.
      • POST /webhooks/{id}/test/: Sends a sample filing.processed.test event to the configured URL to help debug and validate the client's endpoint.
    • Security & Validation: The POST /webhooks/ endpoint now enforces strict validation for the url field, including requiring HTTPS and performing DNS resolution to prevent SSRF (Server-Side Request Forgery) attacks against internal or reserved IP addresses.
    • Documentation: The API schema now includes a dedicated "Webhooks" section documenting the filing.processed event. This provides a clear data contract for the payload that will be sent to a user's endpoint, detailing the company and filing objects.

    2025-11-13

    Improved

    • OpenAPI 3.1 Support: The API schema has been upgraded to OpenAPI 3.1.0. This brings full alignment with the latest JSON Schema specifications, enabling seamless integration with modern tools (including OpenAI GPT Actions) and offering improved type strictness for client SDK generation.
    • Enhanced Type Definitions: Nullable fields are now explicitly typed using standard arrays (e.g., type: ["string", "null"]) rather than the legacy nullable: true flag. This provides a more precise contract for data consumers.
    • Schema Hygiene: Internal session-based utility endpoints (e.g., job status checks) have been removed from the public documentation to reduce noise and focus strictly on API-key authenticated resources.

    2025-11-11

    Improved

    • Enhanced Filtering: The GET /filings/ endpoint now supports a new sources query parameter.
    • This parameter accepts a comma-separated list of source IDs (e.g., ?sources=38,40,51), allowing clients to efficiently query for filings from multiple sources in a single API call.
    • Stable Pagination: Both the GET /filings/ and GET /companies/ endpoints now support sorting by id (e.g., ?ordering=id or ?ordering=-id). This provides a consistent, incrementing key for more reliable pagination.
    • Documentation: API documentation for the ordering and source parameters on these endpoints has been updated to be more explicit and descriptive.

    2025-11-08

    Improved

    • API Consistency: Nested objects within API responses now consistently include their primary id field.
    • The source, language, and filing_type objects returned by all endpoints (e.g., GET /filings/, GET /sources/) will now include their id.
    • Example: A source object in a filing response will now appear as {"id": 38, "name": "Unternehmensregister", ...}.
    • This is a backwards-compatible, additive change that improves the professional standard of the API and allows for simple cross-referencing with their dedicated metadata endpoints (e.g., GET /sources/{id}/).

    2025-11-05

    New

    • Watchlist Filtering: Added a new on_watchlist query parameter to both the GET /filings/ and GET /companies/ list endpoints.
    • This powerful boolean filter allows users to scope search results based on their personal watchlist:
      • ?on_watchlist=true: Returns only items from companies on the user's watchlist.
      • ?on_watchlist=false: Returns only items from companies not on the user's watchlist.
      • (Parameter omitted): Returns all items (current default behavior).

    2025-10-21

    Improved

    • The detailed Company object, returned by GET /companies/{id}/ and GET /companies/?view=full, has been updated to include additional data fields.
    • The new fields are:
      • Profile: description, description_last_updated, logo
      • Address: address, city, zip_code
      • Identifiers: local_company_id
      • Financials: shares_outstanding
      • Market Data: designated_sponsor, listed_stock_exchange, stock_index
    • Database queries for the full company view have been optimized to prefetch these new related fields.

    2025-09-15

    Improved

    • The tagline field has been added to the Company object. This short, one-liner description is now available in both the summary and full views for the GET /companies/ and GET /companies/{id}/ endpoints, as well as in the nested company data within filing responses.

    2025-08-19

    Improved

    • The GET /filings/ endpoint now supports a view=full query parameter. This allows clients to retrieve the complete filing object for each item in the list, providing more detail in a single request.

    Fixed

    • The updated_date_from and updated_date_to query parameters are now correctly implemented and documented for the GET /filings/ endpoint. This resolves a discrepancy from the 2025-08-12 changelog and enables proper data synchronization based on the last modified date.

    2025-08-16

    Documentation

    • Added new documentation pages explaining the standards for ISIC Classification, Language Codes, Country Codes, and Data Sources (OAMs).

    Improved

    • The GET /companies/ endpoint now supports a view=full query parameter. This allows users to retrieve the complete company object for each item in the list, restoring access to detailed fields in response to user feedback.

    Fixed

    • The isins field on the Company object was not appearing in the API documentation for the /companies list and detail endpoints. This has been corrected, and the schema now accurately reflects that isins is an array of strings.

    2025-08-12

    Improved

    • Performance: The list endpoints for /filings/ and /companies/ now return a simplified "summary" response. This significantly reduces payload size and improves response times for list-based queries. The full object details remain available via the detail endpoints (e.g., /filings/{id}/).
    • API Structure: Access to processed filing content is now more intuitive. The markdown_url field in the /filings/{id}/ response now links directly to a nested endpoint (/filings/{filing_id}/markdown/), logically connecting the content to its parent filing.
    • Documentation: The API documentation has been updated to reflect all recent changes and enhancements.

    New

    • New Endpoints: Added two foundational endpoints to provide metadata:
      • GET /countries/: Returns a list of all supported countries and their ISO codes.
      • GET /languages/: Returns a list of all supported filing languages.
    • New Filtering: Added two new query parameters to the GET /filings/ endpoint to allow filtering by modification date, useful for data synchronization:
      • updated_date_from
      • updated_date_to

    Removed

    • The standalone GET /processed-filings/{id}/ endpoint has been removed in favor of the new nested markdown content endpoint for better API design and performance.
    Modified at 2026-02-13 13:22:31
    Previous
    FinancialReports API Documentation
    Next
    Python SDK
    Built with