API Documentation
FilingFlow API
SEC filings: 10-K, 10-Q, 8-K, Form D, 13F, and more
GlobalComply API
OFAC, EU, UK, Canada, DFAT, SECO sanctions lists
1. Introduction
Dashboard URL
https://app.datadock.ai
API Base URL
https://api.datadock.ai
2. Getting Started
2.1 Registration
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
| Field | Type | Required | Description |
|---|---|---|---|
| username | string | Yes | Unique username |
| string | Yes | Valid email address | |
| password | string | Yes | Account 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
- A verification link
- Their API token
Subject: Welcome to Datadock!
Hello,
Welcome to Datadock!
Here is your API token:
To verify your email address and activate your API token, click the link below:
https://api.datadock.ai/auth/verify?email=you@example.com
Thanks for joining us!
— The Datadock Team
Once the email is verified, the token becomes active and can be used immediately to access the APIs.
2.3 Authentication
/api/v1/filingflow, /api/v1/globalcomply require the API token to be included in the request header. | Method | Header | Format |
|---|---|---|
| API Key (direct) | X-API-Key | 778ce6d012f4a21d... |
| API Key (Bearer) | Authorization | Bearer 778ce6d012f4a21d... |
| JWT Token | Authorization | Bearer eyJhbGciOiJIUzI1NiIs... |
Authorization Header
Authorization: Bearer your_api_token
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
| Endpoint Type | Limit |
|---|---|
| Default | 100 requests per hour |
| High-load endpoints | 5 requests per minute |
- Rate limits may vary depending on subscription plans and can be seen/tracked from your dashboard.
2.5 Plans & Quota
| Plan | Daily Calls | Monthly Bulk Quota | Bulk Export | Price |
|---|---|---|---|---|
| Explorer | 50 | None | No | Free |
| Growth | 1,000 | 20 GB | Yes | $35/mo - $370/yr |
| Scale | 10,000 | 250 GB | Yes | $149/mo - $1,520/yr |
| Enterprise | Unlimited | Custom | Yes | Custom (contact sales) |
| Extra | +100/unit | +5 GB/unit | Yes | $4/unit (add-on) |
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
- Monitor institutional investors (e.g., BlackRock 13F-HR filings)
- Screen for startup/private placement activity via Form D
- Export filtered filings to JSON or Excel
3.2 Global Filterable Fields
- Form-specific tables by type (e.g., sec.13f_hr, sec.d)
- Support partial (contains) and case-insensitive matches
-
Export results in
.json,.json_download, or.excel - Offset-based pagination for smooth UI/UX integration
3.2.1 Field Availability Exceptions
3.3 Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/filingflow/forms | List all available form types |
| GET | /api/v1/filingflow/columns?form_type=<type> | List filterable columns for a given form type |
| POST | /api/v1/filingflow | Query filing records (paginated, 20 per page) |
| POST | /api/v1/filingflow/fortune500 | Bulk 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
cURL
https://api.datadock.ai/api/v1/filingflow?form_type=form_8k&cik=0000104169&api_key=xxx
Authorization: Beareryour_api_token
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
- Method: GET
- URL: https://api.datadock.ai/api/v1/filingflow
-
form_type(required) -
company_name -
filing_date_min,filing_date_max -
format: json | json_download | excel
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 Key | Description |
|---|---|
| date | Exact date match — YYYY-MM-DD |
| date_min | Date range start — YYYY-MM-DD |
| date_max | Date range end — YYYY-MM-DD |
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
| Form Type Key | Description | Available Filters/Column Names (besides date/date_min/date_max) |
|---|---|---|
| form_13fhr | Institutional investment manager quarterly holdings | schema_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_13fnt | 13F 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_3 | Initial statement of beneficial ownership | schema_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_4 | Statement 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_5 | Annual statement of changes in beneficial ownership | schema_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_8k | Current report — major corporate events | file_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_10k | Annual report | amendment_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_10q | Quarterly report | amendment_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_d | Regulation D private placement offering notice | schema_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_13d | Schedule 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_13g | Schedule 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_1012b | Registration 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_1a | Regulation A offering statement | document_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_irannotice | IRAN notice — administrative communication | filename, filing_date, fiscal_date, sender_address, recipient_address, telephone, fax, website, handled_by, our_reference, re_subject, body, submitter, signature, signer_name, signer_title |
3.8 Fortune 500 Endpoint
| Field | Type | Required | Description |
|---|---|---|---|
| form_type | string | Yes | form_8k or form_10k |
| date / date_min / date_max | string | Yes (at least one) | Generic date filter in YYYY-MM-DD format — resolves to the correct column for the given form type |
| format | string | No | json (default) or excel |
| compression | string | No | zip | gzip — optional compression |
| estimate | boolean | No | If true, returns estimated size & row count. No quota consumed. |
| preview | boolean | No | If true, returns first 50 rows in JSON. No quota consumed. |
| job_name | string | No | Optional label for tracking in the dashboard |
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
- AML/KYC background checks
- Vendor and partner screening
- Regulatory compliance automation
4.2 Filterable Fields
- Personal names (first/last/middle, aliases)
- Program type, listing date
- Country, citizenship, address, place of birth
- Vessel or ship metadata (IMO number, flag, tonnage)
- Entity/business info: registration numbers, parent companies
-
Supports 9 distinct sanctions sources via the
sanctions_agencyparameter -
Smart range filtering:
listing_date_min, etc. - All sources normalized to shared fields for unified access
-
Fast export in
.json, ..json_download, or.excel
-
Required Parameter
Thesanctions_agencyparameter is compulsory for all GlobalComply requests.
4.3 Example Queries
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
- Method: GET
- URL: https://api.datadock.ai/api/v1/filingflow
-
sanctions_agency(required, e.g., ofac_sdn_sanctions, dfat_sanctions) -
name,aliases,citizenship,birth_place -
listing_date_min/max,program,schedule -
format: json | json_download | excel
4.4 Query Parameters by Agency
| 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 |
| 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 |
| 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 |
| 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 |
| 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) |
| 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
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/globalcomply/agencies | List all available sanctions agencies |
| GET | /api/v1/globalcomply/columns?sanctions_agency=<agency> | List filterable fields and types for an agency |
| GET | /api/v1/globalcomply | Query sanctions records (paginated, 20 per page) |
5. Bulk Data Download API
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
Header Example
Authorization: "Bearer "
Content-Type: "application/json"
5.3 Request Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| workstream | string | Yes | filingflow | globalcomply |
| filters | object | Varies | Same 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). |
| format | string | No | json (default) or excel |
| compression | string | No | zip | gzip — optional. Omit for no compression. |
| columns | array | No | (FilingFlow only) Column names to include. Omit for all columns. |
| delivery | string / object / null | No | null = direct download. String or {type, account_name} to route to a saved delivery account. |
| estimate | boolean | No | If true, returns estimated file size (KB) and row count. No quota consumed, no file generated. |
| preview | boolean | No | If true, returns first 50 rows in JSON. No quota consumed, no file generated. |
| job_name | string | No | Label for tracking in the dashboard (max 100 chars). |
Request Body
{
"workstream": "globalcomply",
"filters": {
"country": "Belarus",
"sanction_type": "canada_sanctions"
},
"format": "json"
}
Request Body
{
"workstream": "globalcomply",
"filters": {
"country": "Belarus",
"sanction_type": "canada_sanctions"
},
"format": "excel"
}
5.4 Successful Responses
- Status Code: 200 OK
- Content-Type: application/json
- Header: Content-Disposition: attachment; filename=_data.json
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
| Method | Endpoint | Description |
|---|---|---|
| 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. |
- Status Code: 200 OK
- Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- Header: Content-Disposition: attachment; filename=_data.xlsx
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
-
Tip
To avoid interruptions, monitor your quota usage through your account dashboard or request smaller, filtered downloads.
5.8 Usage Notes
- This endpoint supports bulk data exports for analytics, reporting, and compliance use cases
- Filtering helps reduce download size and improve response times
- Available formats: JSON (machine-readable) and Excel (.xlsx) (for spreadsheets)
- Large downloads may take several seconds to process depending on data volume
- All downloads are securely logged and tied to your API key for quota tracking
5.9 Example Use Cases
- Export recent SEC filings for specific issuers or form types
- Download the latest global sanctions list for compliance checks
6. Delivery Accounts
6.1 Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /delivery-accounts | Create a delivery account (credentials validated) |
| GET | /delivery-accounts | List all active delivery accounts |
| PATCH | /delivery-accounts/<account_id> | Update name, credentials, or config |
| DELETE | /delivery-accounts/<account_id> | Soft-delete a delivery account |
6.2 Supported Providers
| Provider | Required Credential Fields | Optional Fields |
|---|---|---|
| azure_blob | connection_string, container | config |
| s3 | aws_access_key, aws_secret_key, bucket, region | config |
| gcp | service_account_json (object), bucket | project_id, config |
| sftp | host, username, password | port (default 22) |
| webhook | url | auth_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
7.1 Schedule Types
| Type | Behavior |
|---|---|
| once | Runs once at the next occurrence of the specified hour/minute |
| daily | Runs every day at the specified hour/minute |
| weekly | Runs every week on day_of_week (0=Monday, 6=Sunday) at specified time |
| weekly | Runs every week on day_of_week (0=Monday, 6=Sunday) at specified time |
| monthly | Runs every month on day_of_month (1–31) at specified time |
7.2 Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
| job_name | string | Yes | Unique name for this job (max 150 chars) |
| workstream | string | Yes | filingflow | globalcomply |
| filters | object | Varies | Same as /bulk endpoint. form_type required for filingflow. Use date, date_min, date_max for date filtering. |
| columns | array | No | (FilingFlow only) Columns to include |
| format | string | No | json (default) | excel |
| compression | string | No | zip | gzip — optional |
| delivery | object | No | {type, account_name} — delivery account to use |
| schedule_type | string | Yes | once | daily | weekly | monthly |
| timezone | string | No | IANA timezone string e.g. America/New_York. Defaults to UTC. |
| recurrence_config | object | Yes | {hour (0–23), minute (0–59), day_of_week (weekly), day_of_month (monthly)} |
| max_runs | integer | No | Maximum 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
| Method | Endpoint | Description |
|---|---|---|
| POST | /auth/register | Register a new user (username, email, password) |
| GET | /auth/verify?token=<token> | Verify email using token from registration email |
| POST | /auth/signin | Sign in — returns JWT access token (2hr) + refresh token (30d) |
| POST | /auth/refresh-token | Exchange refresh token for a new access token |
| POST | /auth/forgot_password | Request a password reset email |
| POST | /auth/reset_password | Reset password using token from email |
| POST | /auth/reset_api_token | Regenerate API key (requires email + password) |
| GET | /auth/get-user-details | Get account info, quota, and usage stats (JWT required) |
| GET | /auth/jobs/history | Get paginated job history across bulk, scheduled & Fortune 500 (JWT required) |
| POST | /auth/upgrade_plan | Apply a paid plan upgrade after Stripe checkout |
| GET | /auth/google | Initiate 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
| Field | Type | Required | Description |
|---|---|---|---|
| plan_name | string | Yes | Growth | Scale | Extra |
| string | Yes | User email address | |
| billing_cycle | string | No | monthly (default) | annual |
| amount | integer | Extra plan only | Dollar amount in whole dollars (min $5) |
9.2 Cancel Subscription
10. Health & Monitoring
| Endpoint | Description |
|---|---|
| /api/v1/monitor/health | Deep health check — verifies auth DB and data DB. Returns 200 (healthy) or 503 (degraded). Used by Better Uptime / UptimeRobot. |
| /api/v1/monitor/ready | Shallow readiness check — confirms Flask process is alive. Always returns 200. Used by Azure App Service health probes. |
11. Error Handling
| Status Code | Meaning | Common Cause |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 202 | Accepted | Background job queued |
| 400 | Bad Request | Missing required field, invalid filter, or malformed request body |
| 401 | Unauthorized | Missing, invalid, or expired API key / JWT token |
| 402 | Payment Required | Payment not completed |
| 403 | Forbidden | Monthly bulk quota exceeded |
| 404 | Not Found | No records match the given filters, or job not found |
| 409 | Conflict | Account already exists (Google OAuth on password account) |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Database failure or unhandled exception |
| 503 | Service Unavailable | Health check failure — one or more dependencies degraded |
12. Code Examples
12.1 Python (requests)
- pip install requests
Authentication — API Key via 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
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
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
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
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
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
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)
Authentication — API Key via X-API-Key header
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
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
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
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
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
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
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
- Use GET /api/v1/filingflow/columns and GET /api/v1/globalcomply/columns before querying to discover valid filter fields and types for your chosen form / agency.
- Always use estimate=true before large bulk exports to preview quota consumption without spending any quota.
- Use preview=true to inspect a sample of records before committing to a full export.
- Start with simple filters then gradually add more to narrow results — this avoids 404 errors from overly specific queries.
- JWT access tokens expire after 2 hours. Store your refresh token and exchange it proactively to avoid interruptions.
- Use compression (zip or gzip) on large exports to reduce download size and speed up delivery to cloud storage.
- Monitor your quota and job history from the dashboard at https://app.datadock.ai.
- For scheduled jobs, always specify a timezone explicitly — the default is UTC.
- All date filters use YYYY-MM-DD format. The generic date / dob aliases work across all sanctions agencies.
14. Contact & Support
| Channel | Details |
|---|---|
| support@datadock.ai | |
| Dashboard | https://app.datadock.ai |
| Live API Base URL | https://api.datadock.ai |
Happy coding!
Happy coding! — The DataDock Team