...
API Documentation
    Add a header to begin generating the table of contents
    Scroll to Top

    API Documentation

    DataDock provides developers with real-time access to Global Sanctions Lists and SEC Filing Data. Our APIs are designed to be secure, scalable, and high-performance.
    1. Introduction

    Dashboard URL

      https://app.datadock.ai
      

    API Base URL

       https://api.datadock.ai
      

    2. Getting Started

    2.1 Registration
    Users can register in two ways:
    Recommended Method — Dashboard Registration
    It is strongly recommended that users register through the dashboard at https://app.datadock.ai
    From the dashboard, users can:

    Create an account easily

    Register with your email address. Upon successful registration, you will receive a confirmation email.

    Verify their email

    Click on the verification link in your email to activate your account.

    Log in

    After verification, log in to your dashboard.

    Retrieve their API token

    Your API token will be displayed on the dashboard and sent to your email.

    View and manage their subscription plan

    See your current plan details and usage limits.

    Upgrade or downgrade plans

    Change your subscription based on your needs.

    Monitor real-time API usage

    Track your API calls and data consumption.

    View billing history

    Access invoices and payment records.

    Alternative Method — Register via API Endpoint

    Developers may also register directly through the API:
    POST
    https://api.datadock.ai/auth/register
    FieldTypeRequiredDescription
    usernamestringYesUnique username
    emailstringYesValid email address
    passwordstringYesAccount password (hashed server-side)

    Request Body (application/json)

      {
      "username": "your_username",
      "email": "your_email@example.com",
      "password": "your_secure_password"
    }  

    Sample Response

      {
      "message": "User registered. Please check your email to verify your account and get your API token."
    }  
    2.2 Email Verification
    After registration (either via dashboard or API), users receive an email containing:

    Subject: Welcome to Datadock!

    Once the email is verified, the token becomes active and can be used immediately to access the APIs.

    2.3 Authentication
    All protected endpoints (e.g., /api/v1/filingflow, /api/v1/globalcomply require the API token to be included in the request header.
    MethodHeaderFormat
    API Key (direct)X-API-Key778ce6d012f4a21d...
    API Key (Bearer)AuthorizationBearer 778ce6d012f4a21d...
    JWT TokenAuthorizationBearer eyJhbGciOiJIUzI1NiIs...
    JWT tokens are obtained from POST /auth/signin and expire after 2 hours. Use POST /auth/refresh-token with your refresh token (valid 30 days) to get a new access token.
    Header Format

    Authorization Header

      Authorization: Bearer your_api_token  
    Example Request

    cURL

      GET /api/v1/filingflow?form_type=form_8k
    Authorization: Bearer c49ca84bcc452f873********b280776d  

    If the token is missing or invalid, the API will return an authentication error.

    2.4 Rate Limiting
    To ensure reliable performance for all users, rate limits apply:
    Endpoint Type Limit
    Default 100 requests per hour
    High-load endpoints 5 requests per minute
    2.5 Plans & Quota
    PlanDaily CallsMonthly Bulk QuotaBulk ExportPrice
    Explorer50NoneNoFree
    Growth1,00020 GBYes$35/mo - $370/yr
    Scale10,000250 GBYes$149/mo - $1,520/yr
    EnterpriseUnlimitedCustomYesCustom (contact sales)
    Extra+100/unit+5 GB/unitYes$4/unit (add-on)
    Extra quota units can be purchased on top of Growth or Scale plans. Units allowed: up to 15GB for Growth, up to 150GB for Scale.

    3. FilingFlow Query API – SEC Filings

    The FilingFlow API enables querying metadata from U.S. Securities and Exchange Commission (SEC) filings across various form types. The data is pulled from the EDGAR index and made available for structured search and export.

    Each filing is returned in JSON format, containing metadata such as company name, form type, filing and event dates, geographic info, reporting persons, and filing sources.

    3.1 Use Cases
    3.2 Global Filterable Fields
    Filter keys available globally:
    form_type
    company_name
    cik
    accession
    filing_date
    city
    state
    zipcode
    former_name
    event_date
    name_address
    names_of_reporting_persons
    owner_cik
    issuer_name
    owner_name
    report_period
    address
    report_type
    filer_cik
    issuer_cik
    issuer_city
    issuer_state
    issuer_zip
    owner_zip
    issuer_symbol
    cusip
    Range Filters
    filing_date_min / filing_date_max
    report_period_min / report_period_max
    Key Features
    3.2.1 Field Availability Exceptions
    While the above fields are globally supported, not all forms contain all fields. Users should be aware of the following limitations when constructing queries.
    Forms Without Date Fields
    The following forms do not include a filing_date or report_period field. Date-based filters will not apply directly to these forms.
    These forms typically inherit their reporting period from a parent filing and must be queried using joins or indirect filters.
    • Affected Forms:
    form_10k_balance_sheet
    form_10k_balance_sheet_parenthetical
    form_10k_cash_flow
    form_10k_comprehensive_income
    form_10k_comprehensive_loss
    form_10k_comprehensive_loss_parenthetical
    form_10k_consolidated_statements_of_equity
    form_10k_consolidated_statements_of_shareholders_equity
    form_10k_consolidated_stmts_shareholders_equity_parenthetical
    form_10k_operation
    form_10kt_balance_sheet
    form_10kt_cashflow_statement
    form_10kt_equity_statement
    form_10kt_operations_statement
    form_10q_balance_sheet
    form_10q_cashflow_statement
    form_10q_equity_statement
    form_10q_income_statement
    form_10q_operations_statement
    form_10qt_balance_sheet
    form_10qt_cashflow_statement
    form_10qt_equity_statement
    form_10qt_income_statement
    form_10qt_operations_statement
    form_11k_changes_in_net_assets_available_for_benefits
    form_11k_net_assets_available_for_benefits
    form_11k_schedule_h_4i_assets_held_at_end_of_year
    form_11k_schedule_h_4j_reportable_transactions
    form_11kt_changes_in_net_assets_available_for_benefits
    form_11kt_net_assets_available_for_benefits
    form_11kt_schedule_h_4i_assets_held_at_end_of_year
    form_144
    form_1a
    form_1a_pos
    form_d
    form_f1mef
    form_f3
    form_f3asr
    form_f3dpos
    form_f3mef
    form_ma
    form_n18f1
    form_n2
    form_n23c3c
    Forms Without CIK Fields
    The following forms do not include a cik, owner_cik, filer_cik, or issuer_cik field. Entity-based filtering will not apply directly to these forms.
    These forms require joins with related filings or metadata tables to resolve the associated entity.
    • Affected Forms:
    form_1012b
    form_1012g
    form_10k_consolidated_statements_of_equity
    form_10k_consolidated_statements_of_shareholders_equity
    form_10k_consolidated_stmts_shareholders_equity_parenthetical
    form_10q
    form_10qt
    form_11k
    form_11k_changes_in_net_assets_available_for_benefits
    form_11k_net_assets_available_for_benefits
    form_11k_schedule_h_4i_assets_held_at_end_of_year
    form_11k_schedule_h_4j_reportable_transactions
    form_11kt
    form_11kt_changes_in_net_assets_available_for_benefits
    form_11kt_net_assets_available_for_benefits
    form_11kt_schedule_h_4i_assets_held_at_end_of_year
    form_1512b
    form_1512g
    form_1515d
    form_1aw
    form_f1mef
    form_f3
    form_f3asr
    form_irannotice
    form_ma
    form_n14mef
    form_n18f1
    form_n2
    form_n23c3c
    form_n2asr
    form_sc_13d
    form_sc_13g
    3.3 Endpoints
    MethodEndpointDescription
    GET/api/v1/filingflow/formsList all available form types
    GET/api/v1/filingflow/columns?form_type=<type>List filterable columns for a given form type
    POST/api/v1/filingflowQuery filing records (paginated, 20 per page)
    POST/api/v1/filingflow/fortune500Bulk export Fortune 500 company filings (async job)
    GET/api/v1/filingflow/fortune500/jobs/<job_id>Poll Fortune 500 job status
    GET/api/v1/filingflow/fortune500/download/<job_id>Download completed Fortune 500 export (one-time)
    3.4 Example Queries
    GET
    /api/v1/filingflow
    Example Request

    cURL

      https://api.datadock.ai/api/v1/filingflow?form_type=form_8k&cik=0000104169&api_key=xxx
    Authorization: Beareryour_api_token  
    JSON Response

    Response

      {
      "count": 1,
      "results": [
        {
          "schema_location": "example_value",
          "schema_version": "example_value",
          "document_type": "example_value",
          "livetest_flag": "example_value",
          "confirming_copy_flag": "example_value",
          "return_copy_flag": "example_value",
          "filing_website_notice_flag": "example_value",
          "filer_cik": "0000123456"
        }
      ]
    }  
    3.5 Step-by-Step Guide
    Step 1: Install and Set Up Postman (or your preferred API testing tool)
    Parameters:
    3.6 Query Parameters — POST /api/v1/filingflow

    This endpoint accepts a JSON body. Use GET /api/v1/filingflow/columns?form_type= first to discover valid filter fields for each form.

    Filter KeyDescription
    dateExact date match — YYYY-MM-DD
    date_minDate range start — YYYY-MM-DD
    date_maxDate range end — YYYY-MM-DD
    Flexible date input is supported: 2024-10-11 · 2024-Oct-11 · Oct 11 2024 · October 11 2024 · 11 Oct 2024 · 10/11/2024. The API normalises all formats server-side.

    Example request body:

      {
      "form_type": "form_8k",
      "filters": { 
       "owner_cik": "789019”
        "date_min": "2024-01-01",
        "date_max": "2024-12-31"
      },
      "format": "json"
    }
      

    Example response:

      {'next': None, 
    'previous': None, 
      'results': [{'amendment_flag': 'false', 'city_area_code': '425',
      'commission_file_number': '001-37845', 'document_type': '8-K',     
      'emerging_growth_company': 'false', 'entity_ex_transition_period': 'N/A',     'exchange_name': 'NASDAQ; NASDAQ; NASDAQ', 'file_name': 'form_8k_0000789019_0000950170-24-008809', 'former_name': 'N/A', 'incorporation_jurisdiction': 'Washington', 'irs_employer_id': '91-1144442', 'issuer_symbol': 'MSFT; MSFT; MSFT', 'item_1': 'N/A', 'item_2': '# Item 2.02. Results of Operations and Financial Condition \n\nOn January 30, 2024, Microsoft Corporation issued a press release announcing its financial results for the fiscal quarter ended December 31, 2023. A copy of the press release is furnished as Exhibit 99.1 to this report.\n\nIn accordance with General Instruction B. 2 of Form 8-K, the information in this Current Report on Form 8-K, including Exhibit 99.1, shall not be deemed to be "filed" for purposes of Section 18 of the Securities Exchange Act of 1934, as amended (the "Exchange Act"), or otherwise subject to the liability of that section, and shall not be incorporated by reference into any registration statement or other document filed under the Securities Act of 1933, as amended, or the Exchange Act, except as shall be expressly set forth by specific reference in such filing.', ..., 'written_communications': 'false'}]}
      
    3.7 Supported Form Types
    Use GET /api/v1/filingflow/forms to retrieve the live list. Selected common form types are shown below.
    Form Type KeyDescriptionAvailable Filters/Column Names (besides date/date_min/date_max)
    form_13fhrInstitutional investment manager quarterly holdingsschema_location, schema_version, document_type, livetest_flag, confirming_copy_flag, return_copy_flag, filing_website_notice_flag, filer_cik, filer_ccc, report_period, report_calendar_or_quarter_ended, is_amendment, amendment_number, amendment_type_restatement, amendment_type_new_holdings, filing_manager_name, filing_manager_address_street1, filing_manager_address_street2, filing_manager_address_city, filing_manager_address_state_or_country, filing_manager_address_zip_code, report_type, form_13f_file_number, crd_number, sec_file_number, instruction_5_info_provided, additional_information, signatory_name, signatory_title, signatory_phone, signatory_signature, signatory_city, signatory_state_or_country, signature_date, other_included_managers_count, table_entry_total, table_value_total, is_confidential_info_omitted, other_manager2_sequence_number, other_manager2_cik, other_manager2_form_13f_file_number, other_manager2_crd_number, other_manager2_sec_file_number, other_manager2_name
    form_13fnt13F notice filings (no holdings table)form_13fnt 13F notice filings (no holdings table) schema_location, schema_version, document_type, livetest_flag, flags, confirming_copy_flag, return_copy_flag, filing_website_notice_flag, filer_cik, filer_ccc, report_period, report_calendar_or_quarter_ended, is_amendment, amendment_number, amendment_type_restatement, amendment_type_new_holdings, confidentiality_denied_or_expired, filing_manager_name, filing_manager_address_street1, filing_manager_address_street2, filing_manager_address_city, filing_manager_address_state_or_country, filing_manager_address_zip_code, report_type, form_13f_file_number, crd_number, sec_file_number, instruction_5_info_provided, additional_information, other_manager_form_13f_file_number, other_manager_crd_number, other_manager_sec_file_number, other_manager_name, other_manager_cik, signatory_name, signatory_title, signatory_phone, signatory_signature, signatory_city, signatory_state_or_country, signature_date
    form_3Initial statement of beneficial ownershipschema_version, document_type, report_period, no_securities_owned, issuer_cik, issuer_name, issuer_symbol, owner_cik, owner_name, owner_street1, owner_street2, owner_city, owner_state, owner_zip, owner_state_description, is_director, is_officer, is_ten_percent_owner, is_other_relationship, nonderivative_holding_security_title, nonderivative_holding_shares_owned_after, nonderivative_holding_shares_owned_after_footnote_id, nonderivative_holding_ownership_nature, derivativetable, footnote_id, footnote_text, remarks, signature_name, signature_date, nonderivativetable, footnotes, officer_title, other_relationship_text, derivative_holding_expiration_date_footnote_id, nonderivative_holding_price_per_share, nonderivative_holding_transaction_code, nonderivative_holding_transaction_date, derivative_holding_underlying_security_shares_footnote_id, nonderivative_holding_price_footnote_id, derivative_holding_exercise_date, derivative_holding_shares_footnote_id, nonderivative_holding_equity_swap_involved, derivative_holding_date, derivative_holding_underlying_security_title, nonderivative_holding_timeliness, derivative_holding_conversion_exercise_price_footnote_id, derivative_holding_security_title_footnote_id, derivative_holding_underlying_security_title_footnote_id, derivative_holding_security_title, derivative_holding_transaction_form_type, derivative_holding_shares_owned_after, derivative_holding_deemed_execution_date_footnote_id, derivative_holding_exercise_date_footnote_id, derivative_holding_ownership_nature_footnote_id, derivative_holding_equity_swap_involved, derivative_holding_conversion_exercise_price, nonderivative_holding_security_title_footnote_id, nonderivative_holding_acquired_disposed_code, derivative_holding_underlying_security_shares, derivative_holding_timeliness, nonderivative_holding_ownership_nature_details, derivative_holding_acquired_disposed_code, derivative_holding_shares_owned_after_footnote_id, nonderivative_holding_transaction_code_footnote_id, derivative_holding_deemed_execution_date, derivative_holding_code_footnote_id, derivative_holding_ownership_nature, rule_10b5_1_c_conditions, derivative_holding_price_per_share, derivative_holding_price_footnote_id, derivative_holding_ownership_nature_details_footnote_id, derivative_holding_shares, nonderivative_holding_transaction_form_type, derivative_holding_ownership_nature_details, derivative_holding_expiration_date, nonderivative_holding_shares_footnote_id, nonderivative_holding_ownership_nature_details_footnote_id, nonderivative_holding_shares, derivative_holding_code, nonderivative_holding_deemed_execution_date_footnote_id, nonderivative_holding_deemed_execution_date
    form_4Statement of changes in beneficial ownership (insider trades)schema_version, document_type, report_period, not_subject_to_section16, issuer_cik, issuer_name, issuer_symbol, owner_cik, owner_name, owner_street1, owner_street2, owner_city, owner_state, owner_zip, owner_state_description, is_director, is_officer, is_ten_percent_owner, is_other_relationship, other_relationship_text, officer_title, rule_10b5_1_c_conditions, nonderivative_transaction_security_title, nonderivative_transaction_date, nonderivative_transaction_date_footnote_id, nonderivative_transaction_deemed_exec_date, nonderivative_transaction_deemed_exec_date_footnote_id, nonderivative_transaction_transaction_form_type, nonderivative_transaction_transaction_code, nonderivative_transaction_equity_swap_involved, nonderivative_transaction_transaction_timeliness, nonderivative_transaction_transaction_shares, nonderivative_transaction_transaction_shares_footnote_id, nonderivative_transaction_price_per_share, nonderivative_transaction_price_per_share_footnote_id, nonderivative_transaction_acquired_disposed_code, nonderivative_transaction_shares_owned_after, nonderivative_transaction_ownership_type, nonderivative_transaction_ownership_nature, nonderivative_holding_security_title, nonderivative_holding_shares_owned_after, nonderivative_holding_ownership_type, nonderivative_holding_ownership_nature, nonderivative_holding_ownership_nature_footnote_id, nonderivative_transaction_shares_owned_after_footnote_id, nonderivative_table, derivative_table, derivative_security_title, derivative_transaction_date, derivative_transaction_date_footnote_id, conversion_or_exercise_price, derivative_conversion_or_exercise_price_footnote_id, derivative_transaction_form_type, derivative_transaction_code, derivative_equity_swap_involved, derivative_transaction_shares, derivative_transaction_shares_footnote_id, derivative_transaction_price_per_share, derivative_transaction_price_per_share_footnote_id, derivative_transaction_acquired_disposed_code, derivative_exercise_date, derivative_exercise_date_footnote_id, derivative_expiration_date, derivative_expiration_date_footnote_id, underlying_security_title, underlying_security_title_footnote_id, underlying_security_shares, underlying_security_shares_footnote_id, derivative_shares_owned_after, derivative_shares_owned_after_footnote_id, derivative_ownership_type, derivative_ownership_type_footnote_id, footnote_id, footnote_text, signature_name, signature_date, remarks
    form_5Annual statement of changes in beneficial ownershipschema_version, document_type, report_period, not_subject_to_section16, form3_holdings_reported, form4_transactions_reported, issuer_cik, issuer_name, issuer_symbol, owner_cik, owner_name, owner_street1, owner_street2, owner_city, owner_state, owner_zip, owner_state_description, is_director, is_officer, is_ten_percent_owner, is_other_relationship, officer_title, nonderivative_transaction_security_title, nonderivative_transaction_date, nonderivative_transaction_date_footnote_id, nonderivative_transaction_deemed_execution_date, nonderivative_transaction_form_type, nonderivative_transaction_code, nonderivative_transaction_equity_swap_involved, nonderivative_transaction_timeliness, nonderivative_transaction_shares, nonderivative_transaction_price_per_share, nonderivative_transaction_acquired_disposed_code, nonderivative_transaction_shares_owned_after, nonderivative_transaction_ownership_nature, derivative_holding_security_title, derivative_holding_conversion_exercise_price_footnote_id, derivative_holding_transaction_form_type, derivative_holding_exercise_date_footnote_id, derivative_holding_expiration_date_footnote_id, derivative_holding_underlying_security_title, derivative_holding_underlying_security_title_footnote_id, derivative_holding_underlying_security_shares_footnote_id, derivative_holding_shares_owned_after, derivative_holding_ownership_nature, footnote_id, footnote_text, remarks, signature_name, signature_date, nonderivative_transaction_code_footnote_id, nonderivative_transaction_ownership_nature_details, other_relationship_text, nonderivative_holding_security_title, nonderivative_holding_shares_owned_after, nonderivative_holding_ownership_nature, nonderivative_holding_ownership_nature_details_footnote_id, nonderivative_holding_ownership_nature_details, derivativetable, derivative_holding_date, nonderivative_holding_price_per_share, derivative_transaction_shares_owned_after_footnote_id, nonderivative_holding_equity_swap_involved, derivative_holding_conversion_exercise_price, derivative_transaction_acquired_disposed_code, derivative_transaction_code_footnote_id, derivative_holding_shares_footnote_id, derivative_transaction_shares_footnote_id, nonderivative_holding_acquired_disposed_code, nonderivative_transaction_deemed_execution_date_footnote_id, derivative_transaction_security_title_footnote_id, derivative_transaction_ownership_nature_details_footnote_id, derivative_transaction_shares_owned_after, nonderivative_holding_transaction_date_footnote_id, derivative_transaction_ownership_nature_details, derivative_holding_deemed_execution_date, nonderivative_holding_shares_footnote_id, derivative_holding_timeliness, nonderivative_transaction_shares_footnote_id, nonderivative_transaction_shares_owned_after_footnote_id, nonderivative_holding_deemed_execution_date, derivative_holding_price_per_share, rule_10b5_1_c_conditions, nonderivative_holding_code_footnote_id, derivative_holding_ownership_nature_details_footnote_id, derivative_holding_expiration_date, derivative_transaction_exercise_date, derivative_holding_equity_swap_involved, derivative_holding_code_footnote_id, nonderivative_transaction_price_footnote_id, derivative_transaction_security_title, derivative_transaction_date, derivative_holding_ownership_nature_details, derivative_transaction_underlying_security_shares, nonderivative_holding_transaction_form_type, derivative_holding_price_footnote_id, derivative_transaction_ownership_nature, derivative_transaction_exercise_date_footnote_id, derivative_holding_acquired_disposed_code, derivative_transaction_expiration_date_footnote_id, derivative_holding_shares_owned_after_footnote_id, derivative_transaction_form_type, derivative_holding_ownership_nature_footnote_id, derivative_transaction_price_per_share, nonderivative_transaction_ownership_nature_footnote_id, derivative_holding_exercise_date, nonderivative_holding_deemed_execution_date_footnote_id, derivative_holding_security_title_footnote_id, derivative_transaction_conversion_exercise_price_footnote_id, derivative_transaction_underlying_security_title, derivative_holding_code, derivative_holding_shares, nonderivative_holding_security_title_footnote_id, nonderivative_holding_transaction_code, derivative_transaction_ownership_nature_footnote_id, derivative_transaction_conversion_exercise_price, derivative_transaction_shares, derivative_transaction_code, derivative_transaction_price_footnote_id, nonderivative_holding_shares_owned_after_footnote_id, derivative_holding_deemed_execution_date_footnote_id, nonderivative_holding_timeliness, nonderivative_transaction_ownership_nature_details_footnote_, derivative_transaction_deemed_execution_date, derivative_transaction_expiration_date, nonderivative_holding_transaction_date, nonderivative_transaction_security_title_footnote_id, derivative_holding_underlying_security_shares, derivative_transaction_deemed_execution_date_footnote_id, derivative_transaction_equity_swap_involved, nonderivative_holding_ownership_nature_footnote_id, nonderivative_holding_shares, nonderivative_holding_price_footnote_id, derivative_transaction_underlying_security_title_footnote_id, derivative_transaction_timeliness, derivative_transaction_underlying_security_shares_footnote_i
    form_8kCurrent report — major corporate eventsfile_name, amendment_flag, owner_cik, document_type, report_period, owner_name, incorporation_jurisdiction, commission_file_number, irs_employer_id, owner_street1, owner_street2, owner_city, owner_state, owner_zip, city_area_code, registrant_phone_number, former_name, written_communications, soliciting_material, pre_commencement_tender, pre_commencement_issuer, security_title, issuer_symbol, exchange_name, emerging_growth_company, entity_ex_transition_period, item_1, item_2, item_3, item_4, item_5, item_6, item_7, item_8, item_9, signatures, signatory_date, signatory_name, signatory_title
    form_10kAnnual reportamendment_flag, document_type, is_annual_report, report_period, is_transition_report, owner_name, incorporation_jurisdiction, owner_cik, commission_file_number, owner_street1, owner_street2, owner_city, owner_state, owner_zip, city_area_code, irs_employer_id, registrant_phone_number, security_title, issuer_symbol, exchange_name, is_well_known_seasoned_issuer, is_voluntary_filer, current_reporting_status, interactive_data_current, filer_category, small_business, emerging_growth_company, is_icfr_auditor_attestation, is_finstmt_error_correction, is_shell_company, public_float_decimals, public_float_unit, public_float_value, common_stock_context, common_stock_decimals, common_stock_id, common_stock_unit, common_stock_value, item_1_business, item_1_business_summarized, item_1a_risk_factors, item_1a_risk_factors_summarized, item_1b_unresolved_staff_comments, item_1b_unresolved_staff_comments_summarized, item_1c_cybersecurity, item_1c_cybersecurity_summarized, item_2_properties, item_2_properties_summarized, item_3_legal_proceedings, item_3_legal_proceedings_summarized, item_4_mine_safety, item_4_mine_safety_summarized, item_5_market_common_equity, item_5_market_common_equity_summarized, item_6_reserved, item_6_reserved_summarized, item_7_management_discussion_analysis, item_7_management_discussion_analysis_summarized, item_7a_quantitative_qualitative_disclosures, item_7a_quantitative_qualitative_disclosures_summarized, item_8_financial_statements, item_8_financial_statements_summarized, item_9_changes_disagreements_accountants, item_9_changes_disagreements_accountants_summarized, item_9a_controls_procedures, item_9a_controls_procedures_summarized, item_9b_other_information, item_9b_other_information_summarized, item_9c_foreign_jurisdictions_disclosure, item_9c_foreign_jurisdictions_disclosure_summarized, item_10_directors_executive_officers, item_10_directors_executive_officers_summarized, item_11_executive_compensation, item_11_executive_compensation_summarized, item_12_security_ownership, item_12_security_ownership_summarized, item_13_certain_relationships, item_13_certain_relationships_summarized, item_14_principal_accountant_fees, item_14_principal_accountant_fees_summarized, item_15_exhibits_schedules, item_15_exhibits_schedules_summarized, item_16_form_10k_summary, item_16_form_10k_summary_summarized, signature, signature_name, signature_title, signature_date
    form_10qQuarterly reportamendment_flag, transition_period, document_type, report_period_start_date, report_period_end_date, fiscal_year_focus, commission_file_number, owner_name, incorporation_jurisdiction, irs_employer_id, owner_street1, owner_street2, owner_city, owner_state, owner_zip, city_area_code, registrant_phone_number, former_name, current_reporting_status, interactive_data_current, filer_category, small_business, emerging_growth_company, entity_shell_company, common_stock_shares_outstanding_time_period, common_stock_shares_outstanding, listing_par_value_per_share, security_title, issuer_symbol, exchange_name, part_1_item_1, part_1_item_2, part_1_item_3, part_1_item_4, part_2_item_1, part_2_item_1a, part_2_item_2, part_2_item_3, part_2_item_4, part_2_item_5, part_2_item_6, signatures, signatory_date, signatory_name, signatory_title, file_name, part_1_item_1_summarized, part_1_item_2_summarized, part_1_item_3_summarized, part_1_item_4_summarized, part_2_item_1_summarized, part_2_item_1a_summarized, part_2_item_2_summarized, part_2_item_3_summarized, part_2_item_4_summarized, part_2_item_5_summarized, part_2_item_6_summarized
    form_dRegulation D private placement offering noticeschema_version, document_type, test_or_live, issuer_cik, issuer_name, issuer_street1, issuer_street2, issuer_city, issuer_state, issuer_state_description, issuer_zip, issuer_phone_number, incorporation_jurisdiction, issuer_previous_names, edgar_previous_names, entity_type, year_of_incorporation_over_5_years, year_of_incorporation_within_5_years, year_of_incorporation_yet_to_be_formed, related_person_first_name, related_person_last_name, related_person_middle_name, related_person_street1, related_person_street2, related_person_city, related_person_state, related_person_state_description, related_person_zip, related_person_relationships, related_person_relationship_clarification, industry_group_type, investment_fund_type, is_1940_act, issuer_size_revenue_range, issuer_size_aggregate_net_asset_value_range, federal_exemptions_exclusions, type_of_filing_is_amendment, type_of_filing_is_new_notice, type_of_filing_first_sale_yet_to_occur, type_of_filing_previous_accession_number, type_of_filing_date_of_first_sale, duration_of_offering_more_than_one_year, types_of_securities_offered_is_equity_type, types_of_securities_offered_is_pooled_investment_fund_type, types_of_securities_offered_is_debt_type, types_of_securities_offered_is_options_warrants, types_of_securities_offered_is_tenant_in_common, types_of_securities_offered_is_mineral_property, types_of_securities_offered_is_security_to_be_acquired, types_of_securities_offered_is_other, business_combination_transaction, business_combination_transaction_clarification, minimum_investment_accepted, sales_compensation_list, sales_compensation_recipient_name, sales_compensation_recipient_crd_number, sales_compensation_associated_bd_name, sales_compensation_associated_bd_crd_number, sales_compensation_recipient_street1, sales_compensation_recipient_street2, sales_compensation_recipient_city, sales_compensation_recipient_state, sales_compensation_recipient_state_description, sales_compensation_recipient_zip, sales_compensation_states_of_solicitation, sales_compensation_states_of_solicitation_description, sales_compensation_foreign_solicitation, sales_compensation_foreign_solicitation_description, offering_sales_total_offering_amount, offering_sales_total_amount_sold, offering_sales_total_remaining, offering_sales_clarification, investors_has_non_accredited_investors, investors_number_non_accredited_investors, investors_total_number_already_invested, sales_commissions_dollar_amount, sales_finders_fees_dollar_amount, sales_commissions_clarification, use_of_proceeds_gross_proceeds_used, use_of_proceeds_gross_proceeds_used_is_estimate, use_of_proceeds_clarification, signature_authorized_representative, signature_name_of_issuer, signature_name, name_of_signer, signature_title, signature_date
    form_sc_13dSchedule 13D — activist investor beneficial ownership >5%filename, explanatory_note, item_1_security_issuer, item_2_identity_background, item_3_source_funds, item_4_purpose_transaction, item_5_interest_securities, item_6_contracts_arrangements, item_7_exhibits, signature_date, signatories, signatory_titles, document_type, cusip, filing_date, issuer_name, security_type, authorized_person_name, authorized_person_address, authorized_person_phone, total_reporting_persons, reporting_person_name_table[i], member_of_group_a_table[i], member_of_group_b_table[i], source_of_funds_table[i], legal_proceedings_required_table[i], citizenship_table[i], sole_voting_power_table[i], shared_voting_power_table[i], sole_dispositive_power_table[i], shared_dispositive_power_table[i], aggregate_amount_table[i], excludes_certain_shares_table[i], percentage_of_class_table[i], type_of_reporting_person_table[i]
    form_sc_13gSchedule 13G — passive investor beneficial ownership >5%filename, rule_designation, item_1, item_2, item_3, item_4, item_5, item_6, item_7, item_8, item_9, item_10, signature_date, signatories, signatory_titles, document_type, cusip, filing_date, issuer_name, security_type, total_reporting_persons, reporting_person_name_table[i], member_of_group_a_table[i], member_of_group_b_table[i], citizenship_table[i], sole_voting_power_table[i], shared_voting_power_table[i], sole_dispositive_power_table[i], shared_dispositive_power_table[i], aggregate_amount_table[i], excludes_certain_shares_table[i], percentage_of_class_table[i], type_of_reporting_person_table[i]
    form_1012bRegistration statement under Section 12(b)filename, company_name, filing_date, state_of_incorporation, irs_employer_id, address, telephone_number, securities_12g, large_accelerated_filer, accelerated_filer, non_accelerated_filer, smaller_reporting_company, emerging_growth_company, extended_transition_period_elected, item_1_business, item_1a_risk_factors, item_2_financial_information, item_3_properties, item_4_security_ownership, item_5_directors_and_executive_officers, item_6_executive_compensation, item_7_related_transactions_and_independence, item_8_legal_proceedings, item_9_market_price_and_dividends, item_10_recent_sales_unregistered_securities, item_11_description_of_securities, item_12_indemnification, item_13_financial_statements_and_data, item_14_changes_and_disagreements_with_accountants, item_15_financial_statements_and_exhibits, signature_date, signatories, signatory_titles, security_title, security_exchange
    form_1aRegulation A offering statementdocument_type, livetest_flag, issuer_ccc, return_copy_flag, dos_file_number, offering_file_number, since_last_filing_flag, filing_website_notice_flag, issuer_name, incorporation_jurisdiction, incorporation_year, issuer_cik, irs_employer_id, fulltime_employees_count, parttime_employees_count, issuer_street1, issuer_street2, issuer_city, issuer_state, issuer_zip, registrant_phone_number, connection_name, connection_street1, connection_street2, connection_city, connection_state, connection_zip, connection_phone_number, industry_group, cash_equivalent, investment_securities, accounts_receivable, property_plant_equipment, total_assets, accounts_payable, longterm_debt, total_liabilities, total_stockholder_equity, total_liabilities_and_equity, total_revenues, cost_and_expenses_appl_to_revenues, depreciation_and_amortization, net_income, earnings_per_share_basic, earnings_per_share_diluted, issuer_auditor_name, total_investments, loans, property_and_equipment, policy_liabilities_and_accruals, deposits, total_interest_income, total_interest_expenses, common_equity_name, common_equity_outstanding_units, common_equity_cusip, common_equity_trading_centre, preferred_equity_name, outstanding_preferred_equity, preferred_cusip_equity, publicly_traded_preferred_equity, debtsecuritiesclassname, outstanding_debt_securities, cusip_debt_securities, publicly_traded_debt_securities, issuer_eligibility_flag, application_disqualification_flag, summission_tier1tier2_offering, summission_financial_audit_status, summission_securities_offered_types, summission_offer_delayed_continuous_flag, summission_offering_year_flag, summission_offering_after_qualification, summission_offering_best_efforts, summission_solicitation_proposed_offering, summission_resale_securities_affiliates, summission_securities_offered, summission_outstanding_securities, summission_price_per_security, summission_issuer_aggregate_offering, summission_security_holder_aggegate, summission_qualification_offering_aggregate, summission_concurrent_offering_aggregate, summission_total_aggregate_offering, summission_underwriters_serviceprovider_name, summission_underwriters_fees, summission_salescommissions_serviceprovider_name, summission_salescommissions_serviceprovider_fees, summission_finders_fees_serviceprovider_name, summission_finder_fees, summission_auditor_serviceprovider_name, summission_auditor_fees, summission_legal_serviceprovider_name, summission_legal_fees, summission_promoters_serviceprovider_name, summission_promoters_fees, summission_bluesky_serviceprovider_name, summission_bluesky_fees, broker_dealer_crd_number, summission_estimated_net_amount, summission_clarification_responses, juridiction_security_offering, sec_offerred_none_jurisdiction_flag, sec_offerred_same_jurisdiction_flag, dealers_security_offering, security_issuer_name, security_issuer_title, security_issuer_total_amount, security_issuer_principal_amount, security_issuer_aggreg_amount, security_act_excemption
    form_irannoticeIRAN notice — administrative communicationfilename, filing_date, fiscal_date, sender_address, recipient_address, telephone, fax, website, handled_by, our_reference, re_subject, body, submitter, signature, signer_name, signer_title
    Note: The different cik fields (owner_cik, filer_cik etc ) are filtered for by passing the filter field cik which gets resolved to the original cik field for the form. But the real cik field name is used in the column filtering.. For example {“filters”: {“cik”:”00033434340”, “date”:”2026-01-01”} , “columns”: {“owner_cik”,”filing_date”}
    3.8 Fortune 500 Endpoint
    POST /api/v1/filingflow/fortune500 queues an async bulk export of SEC filings filtered to Fortune 500 companies (matched by owner_cik). A date filter is required.
    FieldTypeRequiredDescription
    form_typestringYesform_8k or form_10k
    date / date_min / date_maxstringYes (at least one)Generic date filter in YYYY-MM-DD format — resolves to the correct column for the given form type
    formatstringNojson (default) or excel
    compressionstringNozip | gzip — optional compression
    estimatebooleanNoIf true, returns estimated size & row count. No quota consumed.
    previewbooleanNoIf true, returns first 50 rows in JSON. No quota consumed.
    job_namestringNoOptional label for tracking in the dashboard
    On success, returns HTTP 202 with a job_id and status_url. Poll the status endpoint until status is ‘complete’, then call the download endpoint once to retrieve the file (one-time, blob is deleted after download).

    Example request body:

      {
      "form_type": "form_8k",
      "compression": "zip"
      "date": "2026-01-01",
      "date_max": "2026-01-01",
      "date_min": "2026-01-01",
      "estimate": false,
      "format": "json",
      "job_name": "Fortune500_8K_Q1_2024",
      "preview": false
    }
      

    4. GlobalComply Query API – Sanctions and Compliance

    The GlobalComply API allows real-time filtering and export of sanctioned individuals, entities, ships, programs, and places from multiple official sources including OFAC, UK, EU, DFAT (Australia), Canada, and SECO (Switzerland).

    Returned results include sanctioned names, aliases, identifiers, nationalities, addresses, program IDs, and relevant listing metadata — all unified in JSON format.

    4.1 Use Cases
    4.2 Filterable Fields
    Searchable by:
    Key Features
    Supported Sanctions Agencies
    dfat_sanctions
    canada_sanctions
    eu_sanctions
    uk_sanctions
    ofac_sdn_sanctions
    ofac_non_sdn_sanctions
    seco_place_sanctions
    seco_program_sanctions
    seco_target_sanctions
    4.3 Example Queries
    GET
    /api/v1/globalcomply

    Example Request

      GET /api/v1/globalcomply?sanctions_agency=eu_sanctions&Naal_lastname=Putin&Leba_publication_date_min=2023-01-01
    Authorization: Bearer your_api_token
    
      
    Step-by-Step Guide
    Step 1: Install and Set Up Postman
    Parameters:
    4.4 Query Parameters by Agency
    Canada Sanctions
    Parameter Type Description
    country string Country associated with the individual or entity
    last_name string Last name of sanctioned individual
    given_name string Given name of sanctioned individual
    aliases string Alternate names of individuals/entities
    entity string Entity name
    date_of_listing string Official listing date
    schedule string Associated sanction schedule
    date_of_listing_min string Start date for listing filter
    date_of_listing_max string End date for listing filter
    DFAT Sanctions (Australia)
    Parameter Type Description
    Reference string Unique identifier in DFAT listing
    Name of Individual or Entity string Name of subject
    Type string Subject type: individual, entity, ship
    Place of Birth string Subject's place of birth
    Citizenship string Country of citizenship
    Address string Address string
    Listing Information string Additional listing notes
    Committees string Related committees
    EU Sanctions
    Parameter Type Description
    Reference string Unique identifier in DFAT listing
    Name of Individual or Entity string Name of subject
    Type string Subject type: individual, entity, ship
    Place of Birth string Subject's place of birth
    Citizenship string Country of citizenship
    Address string Address string
    Listing Information string Additional listing notes
    Committees string Related committees
    UK Sanctions
    Parameter Type Description
    last_update string Last update date for UK listings
    regime_name string Regime name in UK lists
    sanctions_imposed string Imposed sanctions types
    names_name1 string First part of name
    OFAC Sanctions (SDN & Non-SDN)
    Parameter Type Description
    addresses_city string City in address entries
    uid string Unique ID in OFAC listings
    sdntype string SDN type field (Entity or Individual)
    programs_program string OFAC sanctions program
    akas_firstname string OFAC alternate first name
    akas_lastname string OFAC alternate last name
    date_of_birth_dateOfBirthItem string Date of birth field
    identity_id_number string Document number
    national_country string Nationality
    citizenship_country string Citizenship
    vesselinfo_vesselFlag string Flag of a sanctioned vessel (SDN only)
    SECO Sanctions (Switzerland)
    Parameter Type Description
    location string seco_place_sanctions
    area_variant_type string seco_place_sanctions
    program-key_0_#text string seco_program_sanctions
    origin string seco_program_sanctions
    ind_address_address_details string seco_target_sanctions
    modification_modification_type string seco_target_sanctions
    4.5 Endpoints
    MethodEndpointDescription
    GET/api/v1/globalcomply/agenciesList all available sanctions agencies
    GET/api/v1/globalcomply/columns?sanctions_agency=<agency>List filterable fields and types for an agency
    GET/api/v1/globalcomplyQuery sanctions records (paginated, 20 per page)

    5. Bulk Data Download API

    POST
    /api/v1/bulk
    Bulk access requires a Growth, Scale, or Enterprise plan. Explorer plan users do not have bulk access.
    5.1 Supported Workstreams
    Workstream Description
    filingflow SEC filings data such as Form D, 13F-HR, and 13F-NT
    globalcomply Global sanctions and compliance lists from government and international agencies
    5.2 Authentication
    This endpoint requires a valid API key with bulk access permissions.

    Header Example

      Authorization: "Bearer <YOUR_API_KEY>"
    Content-Type: "application/json"
      
    5.3 Request Parameters
    FieldTypeRequiredDescription
    workstreamstringYesfilingflow | globalcomply
    filtersobjectVariesSame filters as the corresponding query endpoint. form_type is required for filingflow. Use date, date_min, date_max for date filtering (not the underlying column name).
    formatstringNojson (default) or excel
    compressionstringNozip | gzip — optional. Omit for no compression.
    columnsarrayNo(FilingFlow only) Column names to include. Omit for all columns.
    deliverystring / object / nullNonull = direct download. String or {type, account_name} to route to a saved delivery account.
    estimatebooleanNoIf true, returns estimated file size (KB) and row count. No quota consumed, no file generated.
    previewbooleanNoIf true, returns first 50 rows in JSON. No quota consumed, no file generated.
    job_namestringNoLabel for tracking in the dashboard (max 100 chars).
    Example Request (JSON Format)

    Request Body

      {
      "workstream": "globalcomply",
      "filters": {
        "country": "Belarus",
        "sanction_type": "canada_sanctions"
      },
      "format": "json"
    }  
    Example Request (Excel Format)

    Request Body

      {
      "workstream": "globalcomply",
      "filters": {
        "country": "Belarus",
        "sanction_type": "canada_sanctions"
      },
      "format": "excel"
    }  
    5.4 Successful Responses
    JSON Download

    Example Response

      [
      {
        "country": "Belarus",
        "last_name": "Atabekov",
        "given_name": "Khazalbek Bakhtibekovich",
        "aliases": null,
        "schedule": "1, Part 1",
        "item": "1",
        "dob": "1800-01-01",
        "entity": null,
        "date_of_listing": "2020-09-28",
        "sanctions_origin": "Canada"
      }
    ]  
    5.5 Job Status & Download Endpoints
    MethodEndpointDescription
    GET/api/v1/bulk/jobs/<job_id>Poll job status. Returns download_url when complete.
    GET/api/v1/bulk/download/<job_id>Download file (one-time). Blob deleted after download.
    Job status values: pending · running · complete · failed · downloaded
    Excel Download

    The response body contains an Excel file with the requested dataset.

    5.6 Error Responses
    Status Code Description Example
    400 Invalid or missing parameters {"error": "Invalid or missing workstream..."}
    403 Download quota exceeded {"error": "Quota exceeded", "message": "..."}
    404 No data found {"message": "No data found for the given filters"}
    500 Internal server error {"error": "Internal server error..."}
    5.7 Quota Policy
    Each user account has a monthly data download quota based on their subscription plan. The API measures the total file size of each download and tracks it toward your quota.
    If a request exceeds your remaining quota, the system returns a 403 Quota Exceeded error.
    5.8 Usage Notes
    5.9 Example Use Cases

    6. Delivery Accounts

    Delivery accounts configure where bulk export files are sent. Once created, reference the account by its provider type (and optionally its name) in bulk requests. Credentials are validated and encrypted at rest.
    6.1 Endpoints
    MethodEndpointDescription
    POST/delivery-accountsCreate a delivery account (credentials validated)
    GET/delivery-accountsList all active delivery accounts
    PATCH/delivery-accounts/<account_id>Update name, credentials, or config
    DELETE/delivery-accounts/<account_id>Soft-delete a delivery account
    Delivery account endpoints require a JWT Bearer token (from /auth/signin), not an API key.
    6.2 Supported Providers
    ProviderRequired Credential FieldsOptional Fields
    azure_blobconnection_string, containerconfig
    s3aws_access_key, aws_secret_key, bucket, regionconfig
    gcpservice_account_json (object), bucketproject_id, config
    sftphost, username, passwordport (default 22)
    webhookurlauth_header (Authorization header value)
    6.3 Create Account — Examples

    Azure Blob Storage

      {
      "provider": "azure_blob",
      "name": "my-azure-exports",
      "credentials": {
        "connection_string": "DefaultEndpointsProtocol=https;AccountName=myacct;AccountKey=xxx;...",
        "container": "datadock-exports"
      }
    }
      

    Amazon S3

      {
      "provider": "s3",
      "name": "my-s3-bucket",
      "credentials": {
        "aws_access_key": "AKIAIOSFODNN7EXAMPLE",
        "aws_secret_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "bucket": "my-exports-bucket",
        "region": "us-east-1"
      }
    }
      

    Google Cloud Storage

      {
      "provider": "gcp",
      "name": "my-gcp-bucket",
      "credentials": {
        "bucket": "my-exports-bucket",
        "service_account_json": {
          "type": "service_account",
          "project_id": "my-project",
          "client_email": "datadock@my-project.iam.gserviceaccount.com",
          "private_key": "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"
        }
      }
    }
      

    7. Scheduled Downloads

    Scheduled downloads automate recurring or one-time data exports. Jobs run in the background and deliver results to a configured delivery account.
    7.1 Schedule Types
    TypeBehavior
    onceRuns once at the next occurrence of the specified hour/minute
    dailyRuns every day at the specified hour/minute
    weeklyRuns every week on day_of_week (0=Monday, 6=Sunday) at specified time
    weeklyRuns every week on day_of_week (0=Monday, 6=Sunday) at specified time
    monthlyRuns every month on day_of_month (1–31) at specified time
    7.2 Request Fields
    FieldTypeRequiredDescription
    job_namestringYesUnique name for this job (max 150 chars)
    workstreamstringYesfilingflow | globalcomply
    filtersobjectVariesSame as /bulk endpoint. form_type required for filingflow. Use date, date_min, date_max for date filtering.
    columnsarrayNo(FilingFlow only) Columns to include
    formatstringNojson (default) | excel
    compressionstringNozip | gzip — optional
    deliveryobjectNo{type, account_name} — delivery account to use
    schedule_typestringYesonce | daily | weekly | monthly
    timezonestringNoIANA timezone string e.g. America/New_York. Defaults to UTC.
    recurrence_configobjectYes{hour (0–23), minute (0–59), day_of_week (weekly), day_of_month (monthly)}
    max_runsintegerNoMaximum executions (null = unlimited for recurring)
    7.3 Example — Monthly FilingFlow Export
      {
      "job_name": "Monthly_10K_Export",
      "workstream": "filingflow",
      "filters": { "form_type": "form_10k" },
      "columns": ["company_name", "owner_cik", "filing_date", "accession"],
      "format": "excel",
      "compression": "zip",
      "delivery": { "type": "azure_blob" },
      "schedule_type": "monthly",
      "timezone": "America/New_York",
      "recurrence_config": { "hour": 10, "minute": 30, "day_of_month": 1 }
    }
      
    7.4 Example — Weekly GlobalComply Export to S3
      {
      "job_name": "Weekly_OFAC_SDN",
      "workstream": "globalcomply",
      "filters": { "sanctions_agency": "ofac_sdn_sanctions" },
      "format": "json",
      "compression": "gzip",
      "delivery": { "type": "s3", "account_name": "primary-s3-bucket" },
      "schedule_type": "weekly",
      "timezone": "UTC",
      "recurrence_config": { "hour": 6, "minute": 0, "day_of_week": 1 }
    }
      

    8. Authentication Endpoints

    MethodEndpointDescription
    POST/auth/registerRegister a new user (username, email, password)
    GET/auth/verify?token=<token>Verify email using token from registration email
    POST/auth/signinSign in — returns JWT access token (2hr) + refresh token (30d)
    POST/auth/refresh-tokenExchange refresh token for a new access token
    POST/auth/forgot_passwordRequest a password reset email
    POST/auth/reset_passwordReset password using token from email
    POST/auth/reset_api_tokenRegenerate API key (requires email + password)
    GET/auth/get-user-detailsGet account info, quota, and usage stats (JWT required)
    GET/auth/jobs/historyGet paginated job history across bulk, scheduled & Fortune 500 (JWT required)
    POST/auth/upgrade_planApply a paid plan upgrade after Stripe checkout
    GET/auth/googleInitiate Google OAuth sign-in
    8.1 Sign In Response
      {
      "message": "Login successful",
      "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "user": {
        "email": "user@example.com",
        "username": "johndoe",
        "plan": "Growth",
        "annual": false,
        "daily_limit": 1000,
        "cycle_quota_kb": 20971520
      }
    }
      

    9. Subscription & Billing

    9.1 Create Checkout Session
    POST
    /api/v1/create-checkout-session
    FieldTypeRequiredDescription
    plan_namestringYesGrowth | Scale | Extra
    emailstringYesUser email address
    billing_cyclestringNomonthly (default) | annual
    amountintegerExtra plan onlyDollar amount in whole dollars (min $5)
    Returns: { url: ‘https://checkout.stripe.com/…’ } — redirect the user to this URL to complete payment.
    9.2 Cancel Subscription
    POST
    /cancel-subscription
    Required fields: email, password, stripe_subscription_id. Optional: immediate (boolean, default true). Set immediate=false to cancel at the end of the current billing period.

    10. Health & Monitoring

    EndpointDescription
    /api/v1/monitor/healthDeep health check — verifies auth DB and data DB. Returns 200 (healthy) or 503 (degraded). Used by Better Uptime / UptimeRobot.
    /api/v1/monitor/readyShallow readiness check — confirms Flask process is alive. Always returns 200. Used by Azure App Service health probes.

    11. Error Handling

    Status CodeMeaningCommon Cause
    200OKRequest succeeded
    201CreatedResource created successfully
    202AcceptedBackground job queued
    400Bad RequestMissing required field, invalid filter, or malformed request body
    401UnauthorizedMissing, invalid, or expired API key / JWT token
    402Payment RequiredPayment not completed
    403ForbiddenMonthly bulk quota exceeded
    404Not FoundNo records match the given filters, or job not found
    409ConflictAccount already exists (Google OAuth on password account)
    429Too Many RequestsRate limit exceeded
    500Internal Server ErrorDatabase failure or unhandled exception
    503Service UnavailableHealth check failure — one or more dependencies degraded

    12. Code Examples

    The examples below show how to authenticate and call the DataDock FilingFlow API using Python and JavaScript (Node.js). Replace your_api_key_here with your actual API key from the dashboard.
    12.1 Python (requests)
    Install the requests library if you haven’t already:

    Authentication — API Key via X-API-Key header

    The simplest authentication method. Pass your API key directly in the X-API-Key header:
      import requests
    
    API_KEY = 'your_api_key_here'
    BASE_URL = 'https://api.datadock.ai'
    
    headers = {
    'X-API-Key': API_KEY,
    'Content-Type': 'application/json'
    }
    
    # Query Form 8-K filings for Apple in 2024
    response = requests.post(
    f'{BASE_URL}/api/v1/filingflow',
    headers=headers,
    json={
    'form_type': 'form_8k',
    'filters': {
    'company_name': 'Apple',
    'date_min': '2024-01-01',
    'date_max': '2024-12-31'
    },
    'format': 'json'
    }
    )
    
    data = response.json()
    print(f'Found {len(data["results"])} filings')
    for filing in data['results']:
    print(filing['company_name'], '|', filing.get('filing_date'))  

    Authentication — Sign In to Get a JWT Token

    For user-facing applications, sign in with email and password to get a short-lived JWT access token (2 hours) and a long-lived refresh token (30 days):
      import requests
     
    API_KEY  = 'your_api_key_here'
    BASE_URL = 'https://api.datadock.ai'
     
    # Pass API key as a Bearer token in Authorization header
    headers = {
        'Authorization': f'Bearer {API_KEY}',
        'Content-Type': 'application/json'
    }
     
    # Query Form 13F-HR filings for a specific filer
    response = requests.post(
        f'{BASE_URL}/api/v1/filingflow',
        headers=headers,
        json={
            'form_type': 'form_13f_hr',
            'filters': {
                'filer_cik': '0000102909',
                'date_min': '2024-01-01'
            },
            'format': 'json'
        }
    )
     
    data = response.json()
    for filing in data.get('results', []):
        print(filing)
      

    Authentication — Sign In to Get a JWT Token

    For user-facing applications, sign in with email and password to get a short-lived JWT access token (2 hours) and a long-lived refresh token (30 days):
      import requests
     
    BASE_URL = 'https://api.datadock.ai'
     
    # Step 1: Sign in to get tokens
    login_resp = requests.post(
        f'{BASE_URL}/auth/signin',
        json={
            'email': 'you@example.com',
            'password': 'your_password'
        }
    )
     
    tokens        = login_resp.json()
    ACCESS_TOKEN  = tokens['access_token']   # valid for 2 hours
    REFRESH_TOKEN = tokens['refresh_token']  # valid for 30 days
     
    # Step 2: Use the JWT access token
    headers = {
        'Authorization': f'Bearer {ACCESS_TOKEN}',
        'Content-Type': 'application/json'
    }
     
    # Query Form 4 insider trades for Tesla
    response = requests.post(
        f'{BASE_URL}/api/v1/filingflow',
        headers=headers,
        json={
            'form_type': 'form_4',
            'filters': {
                'issuer_name': 'Tesla',
                'date_min': '2024-01-01',
                'date_max': '2024-06-30'
            },
            'format': 'json'
        }
    )
     
    print(response.json())
      

    Python — Refreshing an Expired JWT Token

    Access tokens expire after 2 hours. Use the refresh token to get a new one without signing in again:
      import requests
     
    BASE_URL      = 'https://api.datadock.ai'
    REFRESH_TOKEN = 'your_refresh_token_here'
     
    refresh_resp = requests.post(
        f'{BASE_URL}/auth/refresh-token',
        json={'refresh_token': REFRESH_TOKEN}
    )
     
    new_access_token = refresh_resp.json()['access_token']
    print('New access token:', new_access_token)
      

    Python — Discover Available Columns for a Form

    Call the columns endpoint first to see exactly which filters are valid for your chosen form type:
      import requests
     
    API_KEY  = 'your_api_key_here'
    BASE_URL = 'https://api.datadock.ai'
    headers  = {'X-API-Key': API_KEY}
     
    # Get all available filter columns for Form 10-K
    resp = requests.get(
        f'{BASE_URL}/api/v1/filingflow/columns',
        headers=headers,
        params={'form_type': 'form_10k'}
    )
     
    cols = resp.json()
    print('Form type:', cols['form_type'])
    print('Available columns:', cols['available_columns'])
      

    Python — Bulk Export with Job Polling

    For large exports, submit a bulk job and poll until it is ready, then download the file once (the file is deleted from storage after the first download):
      import requests, time
     
    API_KEY  = 'your_api_key_here'
    BASE_URL = 'https://api.datadock.ai'
    headers  = {'X-API-Key': API_KEY, 'Content-Type': 'application/json'}
     
    # Step 1: Submit the bulk job
    job_resp = requests.post(
        f'{BASE_URL}/api/v1/bulk',
        headers=headers,
        json={
            'workstream': 'filingflow',
            'filters': {
                'form_type': 'form_10k',
                'date_min': '2023-01-01',
                'date_max': '2023-12-31'
            },
            'columns': ['company_name', 'cik', 'filing_date', 'accession'],
            'format': 'json',
            'job_name': 'Annual_10K_2023'
        }
    )
    job_id = job_resp.json()['job_id']
    print(f'Job queued: {job_id}')
     
    # Step 2: Poll until complete
    while True:
        status_resp = requests.get(
            f'{BASE_URL}/api/v1/bulk/jobs/{job_id}',
            headers={'X-API-Key': API_KEY}
        )
        status = status_resp.json()['status']
        print(f'Status: {status}')
     
        if status == 'complete':
            download_url = status_resp.json()['download_url']
            break
        elif status == 'failed':
            print('Job failed:', status_resp.json().get('error_message'))
            exit(1)
     
        time.sleep(10)  # wait 10 seconds before polling again
     
    # Step 3: Download the file (one-time — deleted from storage after)
    file_resp = requests.get(download_url, headers={'X-API-Key': API_KEY})
    with open('10k_filings_2023.json', 'wb') as f:
        f.write(file_resp.content)
    print('Saved: 10k_filings_2023.json')
      

    Python — Estimate Bulk Size Before Downloading

    Use estimate=true to check how much quota a request will consume before committing:
      import requests
     
    API_KEY  = 'your_api_key_here'
    BASE_URL = 'https://api.datadock.ai'
    headers  = {'X-API-Key': API_KEY, 'Content-Type': 'application/json'}
     
    resp = requests.post(
        f'{BASE_URL}/api/v1/bulk',
        headers=headers,
        json={
            'workstream': 'filingflow',
            'filters': {
                'form_type': 'form_sc_13g',
                'date_min': '2024-01-01'
            },
            'format': 'json',
            'estimate': True  # dry run — no quota consumed
        }
    )
     
    est = resp.json()
    print(f'Estimated size : {est["estimated_size_kb"]} KB')
    print(f'Matching rows  : {est["row_count"]}')
      
    12.2 JavaScript (Node.js — fetch / axios)
    The examples below use the built-in fetch API available in Node.js 18+. For older Node versions install node-fetch: npm install node-fetch

    Authentication — API Key via X-API-Key header

    Pass your API key in the X-API-Key header for all requests:
      const BASE_URL = 'https://api.datadock.ai';
    const API_KEY  = 'your_api_key_here';
     
    // Query Form 8-K filings for Apple in 2024
    const response = await fetch(`${BASE_URL}/api/v1/filingflow`, {
      method: 'POST',
      headers: {
        'X-API-Key': API_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        form_type: 'form_8k',
        filters: {
          company_name: 'Apple',
          date_min: '2024-01-01',
          date_max: '2024-12-31'
        },
        format: 'json'
      })
    });
     
    const data = await response.json();
    console.log(`Found ${data.results.length} filings`);
    data.results.forEach(f => console.log(f.company_name, f.filing_date));
      

    Authentication — API Key as Bearer Token

    Alternatively, pass the API key in the Authorization header using the Bearer scheme:
      const BASE_URL = 'https://api.datadock.ai';
    const API_KEY  = 'your_api_key_here';
     
    // Query Form 13F-HR holdings for a specific filer
    const response = await fetch(`${BASE_URL}/api/v1/filingflow`, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        form_type: 'form_13f_hr',
        filters: {
          cik: '0000102909',
          date_min: '2024-01-01'
        },
        format: 'json'
      })
    });
     
    const data = await response.json();
    console.log(data.results);
      

    Authentication — Sign In to Get a JWT Token

    Sign in with email and password to get a JWT access token, then use it in subsequent API requests:
      const BASE_URL = 'https://api.datadock.ai';
     
    // Step 1: Sign in
    const loginResp = await fetch(`${BASE_URL}/auth/signin`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        email: 'you@example.com',
        password: 'your_password'
      })
    });
     
    const { access_token, refresh_token } = await loginResp.json();
    // access_token expires in 2 hours
    // refresh_token is valid for 30 days
     
    // Step 2: Query Form 4 insider trades using JWT
    const queryResp = await fetch(`${BASE_URL}/api/v1/filingflow`, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${access_token}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        form_type: 'form_4',
        filters: {
          issuer_name: 'Tesla',
          date_min: '2024-01-01',
          date_max: '2024-06-30'
        },
        format: 'json'
      })
    });
     
    const filings = await queryResp.json();
    console.log(filings.results);
      

    JavaScript — Refreshing an Expired JWT Token

    Exchange the refresh token for a new access token before the 2-hour window expires:
      const BASE_URL     = 'https://api.datadock.ai';
    const refreshToken = 'your_refresh_token_here';
     
    const resp = await fetch(`${BASE_URL}/auth/refresh-token`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ refresh_token: refreshToken })
    });
     
    const { access_token } = await resp.json();
    console.log('New access token:', access_token);
      

    JavaScript — Discover Available Columns for a Form

    Check valid filter columns for any form type before querying to avoid 400 errors:
      const BASE_URL = 'https://api.datadock.ai';
    const API_KEY  = 'your_api_key_here';
     
    // Get all available filter columns for Form 10-K
    const colResp = await fetch(
      `${BASE_URL}/api/v1/filingflow/columns?form_type=form_10k`,
      { headers: { 'X-API-Key': API_KEY } }
    );
    const cols = await colResp.json();
    console.log('Form type:', cols.form_type);
    console.log('Available columns:', cols.available_columns);
      

    JavaScript — Bulk Export with Job Polling

    Submit a bulk FilingFlow job and poll for completion, then download the file once:
      const BASE_URL = 'https://api.datadock.ai';
    const API_KEY  = 'your_api_key_here';
    const headers  = { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' };
     
    // Step 1: Submit the bulk job
    const jobResp = await fetch(`${BASE_URL}/api/v1/bulk`, {
      method: 'POST',
      headers,
      body: JSON.stringify({
        workstream: 'filingflow',
        filters: {
          form_type: 'form_10k',
          date_min: '2023-01-01',
          date_max: '2023-12-31'
        },
        columns: ['company_name', 'cik', 'filing_date', 'accession'],
        format: 'json',
        job_name: 'Annual_10K_2023'
      })
    });
    const { job_id } = await jobResp.json();
    console.log('Queued job:', job_id);
     
    // Step 2: Poll every 10 seconds until done
    const sleep = ms => new Promise(res => setTimeout(res, ms));
    let downloadUrl;
     
    while (true) {
      const statusResp = await fetch(
        `${BASE_URL}/api/v1/bulk/jobs/${job_id}`,
        { headers: { 'X-API-Key': API_KEY } }
      );
      const status = await statusResp.json();
      console.log('Status:', status.status);
     
      if (status.status === 'complete') {
        downloadUrl = status.download_url;
        break;
      } else if (status.status === 'failed') {
        throw new Error('Job failed: ' + status.error_message);
      }
      await sleep(10000);
    }
     
    // Step 3: Download once (file deleted from storage after this call)
    const fileResp = await fetch(downloadUrl, {
      headers: { 'X-API-Key': API_KEY }
    });
    const buffer = await fileResp.arrayBuffer();
    const fs = await import('fs');
    fs.writeFileSync('10k_filings_2023.json', Buffer.from(buffer));
    console.log('Saved: 10k_filings_2023.json');
      

    JavaScript — Using axios

    If you prefer axios (npm install axios), set up a client instance with your API key and call FilingFlow directly:
      const axios = require('axios');
     
    const client = axios.create({
      baseURL: 'https://api.datadock.ai',
      headers: { 'X-API-Key': 'your_api_key_here' }
    });
     
    // Query Form SC 13G filings for a specific company
    const { data: sc13g } = await client.post('/api/v1/filingflow', {
      form_type: 'form_sc_13g',
      filters: {
        issuer_name: 'Microsoft',
        date_min: '2024-01-01'
      },
      format: 'json'
    });
    console.log('SC 13G filings:', sc13g.results);
     
    // Query Form D private placements for a state
    const { data: formD } = await client.post('/api/v1/filingflow', {
      form_type: 'form_d',
      filters: {
        issuer_state: 'CA',
        date_min: '2024-06-01',
        date_max: '2024-12-31'
      },
      format: 'json'
    });
    console.log('Form D filings:', formD.results);
      

    13. Tips for Success

    14. Contact & Support

    ChannelDetails
    Emailsupport@datadock.ai
    Dashboardhttps://app.datadock.ai
    Live API Base URLhttps://api.datadock.ai
    For further assistance, refer to the official documentation or contact our support team.

    Happy coding!

    Happy coding! — The DataDock Team

    Enterprise: Enterprise & Institutions

    For large organizations and institutions with specialized requirements, this plan offers customizable solutions. Contact us for options like multiple API keys, priority support, redistribution rights, or unlimited data access. Example use cases include:

    Scale: Business / Internal Use

    Built for organizations leveraging the platform for internal operations, this tier supports data-driven teams and professionals. Common applications include:

    Growth: Personal & Startups

    Designed for innovators, individual developers, and university researchers, this plan supports small-scale projects and early-stage experimentation. Typical scenarios include:

    Explorer:

    For testing purposes.
    Seraphinite AcceleratorOptimized by Seraphinite Accelerator
    Turns on site high speed to be attractive for people and search engines.