invinite-data-api 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. invinite_data_api/__init__.py +534 -0
  2. invinite_data_api/api/__init__.py +25 -0
  3. invinite_data_api/api/account_api.py +316 -0
  4. invinite_data_api/api/as_reported_balance_sheet_api.py +1086 -0
  5. invinite_data_api/api/as_reported_cash_flow_statement_api.py +1086 -0
  6. invinite_data_api/api/as_reported_income_statement_api.py +1086 -0
  7. invinite_data_api/api/as_reported_snapshot_api.py +1035 -0
  8. invinite_data_api/api/company_api.py +1907 -0
  9. invinite_data_api/api/earnings_calls_api.py +11855 -0
  10. invinite_data_api/api/financial_metrics_api.py +1101 -0
  11. invinite_data_api/api/health_api.py +280 -0
  12. invinite_data_api/api/insider_trades_api.py +434 -0
  13. invinite_data_api/api/institutional_ownership_api.py +1480 -0
  14. invinite_data_api/api/ipos_api.py +397 -0
  15. invinite_data_api/api/market_api.py +344 -0
  16. invinite_data_api/api/metadata_api.py +540 -0
  17. invinite_data_api/api/sec_filings_api.py +1325 -0
  18. invinite_data_api/api/segmented_financials_api.py +759 -0
  19. invinite_data_api/api/standardized_balance_sheet_api.py +1086 -0
  20. invinite_data_api/api/standardized_cash_flow_statement_api.py +1086 -0
  21. invinite_data_api/api/standardized_income_statement_api.py +1086 -0
  22. invinite_data_api/api/standardized_snapshot_api.py +1035 -0
  23. invinite_data_api/api/status_api.py +535 -0
  24. invinite_data_api/api_client.py +804 -0
  25. invinite_data_api/api_response.py +21 -0
  26. invinite_data_api/configuration.py +605 -0
  27. invinite_data_api/exceptions.py +218 -0
  28. invinite_data_api/models/__init__.py +239 -0
  29. invinite_data_api/models/account_usage200_response.py +133 -0
  30. invinite_data_api/models/account_usage200_response_by_family_inner.py +94 -0
  31. invinite_data_api/models/account_usage200_response_by_key_inner.py +108 -0
  32. invinite_data_api/models/account_usage200_response_daily_inner.py +99 -0
  33. invinite_data_api/models/account_usage200_response_daily_inner_errors.py +96 -0
  34. invinite_data_api/models/account_usage200_response_period.py +109 -0
  35. invinite_data_api/models/as_reported_income_statement200_response.py +96 -0
  36. invinite_data_api/models/as_reported_income_statement200_response_companies_inner.py +102 -0
  37. invinite_data_api/models/as_reported_income_statement200_response_companies_inner_periods_inner.py +100 -0
  38. invinite_data_api/models/as_reported_income_statement_detailed200_response.py +96 -0
  39. invinite_data_api/models/as_reported_income_statement_detailed200_response_companies_inner.py +102 -0
  40. invinite_data_api/models/as_reported_income_statement_detailed200_response_companies_inner_periods_inner.py +113 -0
  41. invinite_data_api/models/as_reported_income_statement_detailed200_response_companies_inner_periods_inner_facts_value.py +120 -0
  42. invinite_data_api/models/as_reported_income_statement_presentation200_response.py +96 -0
  43. invinite_data_api/models/as_reported_income_statement_presentation200_response_companies_inner.py +102 -0
  44. invinite_data_api/models/as_reported_income_statement_presentation200_response_companies_inner_periods_inner.py +108 -0
  45. invinite_data_api/models/as_reported_snapshot_detailed200_response.py +97 -0
  46. invinite_data_api/models/as_reported_snapshot_detailed200_response_companies_inner.py +117 -0
  47. invinite_data_api/models/as_reported_snapshot_detailed200_response_companies_inner_statements.py +117 -0
  48. invinite_data_api/models/as_reported_snapshot_detailed200_response_companies_inner_statements_income_statement.py +101 -0
  49. invinite_data_api/models/as_reported_snapshot_presentation200_response.py +97 -0
  50. invinite_data_api/models/as_reported_snapshot_presentation200_response_companies_inner.py +117 -0
  51. invinite_data_api/models/as_reported_snapshot_presentation200_response_companies_inner_statements.py +117 -0
  52. invinite_data_api/models/as_reported_snapshot_presentation200_response_companies_inner_statements_income_statement.py +96 -0
  53. invinite_data_api/models/bad_request_error.py +90 -0
  54. invinite_data_api/models/company_available_companies200_response.py +98 -0
  55. invinite_data_api/models/company_available_companies200_response_companies_inner.py +92 -0
  56. invinite_data_api/models/company_available_companies401_response.py +90 -0
  57. invinite_data_api/models/company_details200_response.py +96 -0
  58. invinite_data_api/models/company_details200_response_companies_inner.py +279 -0
  59. invinite_data_api/models/company_dividends200_response.py +96 -0
  60. invinite_data_api/models/company_dividends200_response_companies_inner.py +102 -0
  61. invinite_data_api/models/company_dividends200_response_companies_inner_dividends_inner.py +101 -0
  62. invinite_data_api/models/company_fiscal_periods200_response.py +96 -0
  63. invinite_data_api/models/company_fiscal_periods200_response_companies_inner.py +102 -0
  64. invinite_data_api/models/company_fiscal_periods200_response_companies_inner_periods_inner.py +97 -0
  65. invinite_data_api/models/company_search200_response.py +100 -0
  66. invinite_data_api/models/company_search200_response_companies_inner.py +99 -0
  67. invinite_data_api/models/company_splits200_response.py +96 -0
  68. invinite_data_api/models/company_splits200_response_companies_inner.py +102 -0
  69. invinite_data_api/models/company_splits200_response_companies_inner_splits_inner.py +95 -0
  70. invinite_data_api/models/earnings_calls_analysts200_response.py +102 -0
  71. invinite_data_api/models/earnings_calls_analysts200_response_analysts_inner.py +116 -0
  72. invinite_data_api/models/earnings_calls_audio200_response.py +135 -0
  73. invinite_data_api/models/earnings_calls_audio202_response.py +97 -0
  74. invinite_data_api/models/earnings_calls_calendar200_response.py +103 -0
  75. invinite_data_api/models/earnings_calls_calendar200_response_events_inner.py +228 -0
  76. invinite_data_api/models/earnings_calls_company_document200_response.py +98 -0
  77. invinite_data_api/models/earnings_calls_company_documents200_response.py +104 -0
  78. invinite_data_api/models/earnings_calls_company_documents200_response_company.py +92 -0
  79. invinite_data_api/models/earnings_calls_company_documents200_response_documents_inner.py +293 -0
  80. invinite_data_api/models/earnings_calls_diff200_response.py +190 -0
  81. invinite_data_api/models/earnings_calls_diff200_response_hedging.py +100 -0
  82. invinite_data_api/models/earnings_calls_diff200_response_new_topics_inner.py +97 -0
  83. invinite_data_api/models/earnings_calls_diff200_response_prior_event.py +92 -0
  84. invinite_data_api/models/earnings_calls_diff200_response_slide_diff.py +98 -0
  85. invinite_data_api/models/earnings_calls_document_search200_response.py +98 -0
  86. invinite_data_api/models/earnings_calls_document_search200_response_hits_inner.py +177 -0
  87. invinite_data_api/models/earnings_calls_documents200_response.py +104 -0
  88. invinite_data_api/models/earnings_calls_documents200_response_documents_inner.py +206 -0
  89. invinite_data_api/models/earnings_calls_events200_response.py +104 -0
  90. invinite_data_api/models/earnings_calls_events200_response_events_inner.py +238 -0
  91. invinite_data_api/models/earnings_calls_events200_response_events_inner_observations_inner.py +119 -0
  92. invinite_data_api/models/earnings_calls_extractions200_response.py +123 -0
  93. invinite_data_api/models/earnings_calls_extractions200_response_guidance_inner.py +187 -0
  94. invinite_data_api/models/earnings_calls_extractions200_response_guidance_inner_sources_inner.py +110 -0
  95. invinite_data_api/models/earnings_calls_extractions200_response_guidance_inner_sources_inner_speaker.py +107 -0
  96. invinite_data_api/models/earnings_calls_extractions200_response_kpis_inner.py +155 -0
  97. invinite_data_api/models/earnings_calls_extractions200_response_kpis_inner_filing_link.py +166 -0
  98. invinite_data_api/models/earnings_calls_extractions200_response_kpis_inner_filing_link_fact_period.py +110 -0
  99. invinite_data_api/models/earnings_calls_guidance_history200_response.py +102 -0
  100. invinite_data_api/models/earnings_calls_guidance_history200_response_series_inner.py +183 -0
  101. invinite_data_api/models/earnings_calls_guidance_history200_response_series_inner_change_vs_prior.py +107 -0
  102. invinite_data_api/models/earnings_calls_live200_response.py +99 -0
  103. invinite_data_api/models/earnings_calls_live200_response_events_inner.py +236 -0
  104. invinite_data_api/models/earnings_calls_live_stream200_response.py +141 -0
  105. invinite_data_api/models/earnings_calls_live_stream200_response_event.py +96 -0
  106. invinite_data_api/models/earnings_calls_metrics200_response.py +158 -0
  107. invinite_data_api/models/earnings_calls_participants200_response.py +109 -0
  108. invinite_data_api/models/earnings_calls_participants200_response_participants_inner.py +148 -0
  109. invinite_data_api/models/earnings_calls_participants200_response_participants_inner_evidence_inner.py +90 -0
  110. invinite_data_api/models/earnings_calls_participants200_response_participation_events_inner.py +105 -0
  111. invinite_data_api/models/earnings_calls_person200_response.py +133 -0
  112. invinite_data_api/models/earnings_calls_person200_response_appearances_inner.py +134 -0
  113. invinite_data_api/models/earnings_calls_press_release200_response.py +146 -0
  114. invinite_data_api/models/earnings_calls_press_release200_response_participants_inner.py +102 -0
  115. invinite_data_api/models/earnings_calls_price_attribution200_response.py +190 -0
  116. invinite_data_api/models/earnings_calls_price_attribution200_response_buckets_inner.py +105 -0
  117. invinite_data_api/models/earnings_calls_price_attribution200_response_buckets_inner_utterance_refs_inner.py +92 -0
  118. invinite_data_api/models/earnings_calls_price_attribution200_response_top_minutes_inner.py +101 -0
  119. invinite_data_api/models/earnings_calls_prosody200_response.py +111 -0
  120. invinite_data_api/models/earnings_calls_prosody200_response_speakers_inner.py +177 -0
  121. invinite_data_api/models/earnings_calls_prosody200_response_speakers_inner_speaker.py +109 -0
  122. invinite_data_api/models/earnings_calls_qa200_response.py +101 -0
  123. invinite_data_api/models/earnings_calls_qa200_response_pairs_inner.py +149 -0
  124. invinite_data_api/models/earnings_calls_qa200_response_pairs_inner_analyst.py +110 -0
  125. invinite_data_api/models/earnings_calls_qa200_response_pairs_inner_answers_inner.py +110 -0
  126. invinite_data_api/models/earnings_calls_qa200_response_pairs_inner_scores.py +119 -0
  127. invinite_data_api/models/earnings_calls_qa200_response_pairs_inner_scores_evidence.py +97 -0
  128. invinite_data_api/models/earnings_calls_search200_response.py +98 -0
  129. invinite_data_api/models/earnings_calls_search200_response_hits_inner.py +161 -0
  130. invinite_data_api/models/earnings_calls_search200_response_hits_inner_slide.py +95 -0
  131. invinite_data_api/models/earnings_calls_slides200_response.py +113 -0
  132. invinite_data_api/models/earnings_calls_slides200_response_deck.py +124 -0
  133. invinite_data_api/models/earnings_calls_slides200_response_slides_inner.py +104 -0
  134. invinite_data_api/models/earnings_calls_transcript200_response.py +140 -0
  135. invinite_data_api/models/earnings_calls_transcript404_response.py +98 -0
  136. invinite_data_api/models/earnings_calls_transcript_diff200_response.py +111 -0
  137. invinite_data_api/models/earnings_calls_transcript_diff200_response_changes_inner.py +104 -0
  138. invinite_data_api/models/earnings_calls_transcript_diff200_response_stats.py +90 -0
  139. invinite_data_api/models/earnings_calls_transcript_versions200_response.py +106 -0
  140. invinite_data_api/models/earnings_calls_transcript_versions200_response_versions_inner.py +116 -0
  141. invinite_data_api/models/earnings_calls_webhooks_create201_response.py +126 -0
  142. invinite_data_api/models/earnings_calls_webhooks_create_request.py +97 -0
  143. invinite_data_api/models/earnings_calls_webhooks_create_request_filters.py +91 -0
  144. invinite_data_api/models/earnings_calls_webhooks_deliveries200_response.py +97 -0
  145. invinite_data_api/models/earnings_calls_webhooks_deliveries200_response_data_inner.py +133 -0
  146. invinite_data_api/models/earnings_calls_webhooks_list200_response.py +96 -0
  147. invinite_data_api/models/earnings_calls_webhooks_list200_response_data_inner.py +124 -0
  148. invinite_data_api/models/earnings_calls_webhooks_list200_response_data_inner_filters.py +90 -0
  149. invinite_data_api/models/earnings_calls_webhooks_rotate_secret200_response.py +91 -0
  150. invinite_data_api/models/earnings_calls_webhooks_test202_response.py +98 -0
  151. invinite_data_api/models/earnings_calls_webhooks_update_request.py +95 -0
  152. invinite_data_api/models/financial_metrics_ratios200_response.py +97 -0
  153. invinite_data_api/models/financial_metrics_ratios200_response_companies_inner.py +103 -0
  154. invinite_data_api/models/financial_metrics_ratios200_response_companies_inner_periods_inner.py +109 -0
  155. invinite_data_api/models/forbidden_error.py +90 -0
  156. invinite_data_api/models/health_get200_response.py +90 -0
  157. invinite_data_api/models/insider_trades_list200_response.py +102 -0
  158. invinite_data_api/models/insider_trades_list200_response_transactions_inner.py +146 -0
  159. invinite_data_api/models/institutional_ownership_holdings_by_company200_response.py +102 -0
  160. invinite_data_api/models/institutional_ownership_holdings_by_investor200_response.py +100 -0
  161. invinite_data_api/models/institutional_ownership_holdings_by_investor200_response_holdings_inner.py +171 -0
  162. invinite_data_api/models/institutional_ownership_institutions200_response.py +98 -0
  163. invinite_data_api/models/institutional_ownership_institutions200_response_institutions_inner.py +132 -0
  164. invinite_data_api/models/institutional_ownership_transactions200_response.py +98 -0
  165. invinite_data_api/models/institutional_ownership_transactions200_response_transactions_inner.py +186 -0
  166. invinite_data_api/models/internal_server_error.py +90 -0
  167. invinite_data_api/models/ipos_list200_response.py +98 -0
  168. invinite_data_api/models/ipos_list200_response_ipos_inner.py +130 -0
  169. invinite_data_api/models/market_holidays200_response.py +98 -0
  170. invinite_data_api/models/market_holidays200_response_holidays_inner.py +105 -0
  171. invinite_data_api/models/metadata_available_metrics200_response.py +96 -0
  172. invinite_data_api/models/metadata_available_metrics200_response_metrics_inner.py +90 -0
  173. invinite_data_api/models/metadata_available_section_ids200_response.py +96 -0
  174. invinite_data_api/models/metadata_available_section_ids200_response_form_types_inner.py +105 -0
  175. invinite_data_api/models/metadata_available_section_ids200_response_form_types_inner_sections_inner.py +94 -0
  176. invinite_data_api/models/not_found_error.py +90 -0
  177. invinite_data_api/models/presentation_fact.py +112 -0
  178. invinite_data_api/models/sec_filings_available_form_types200_response.py +88 -0
  179. invinite_data_api/models/sec_filings_list200_response.py +96 -0
  180. invinite_data_api/models/sec_filings_list200_response_companies_inner.py +102 -0
  181. invinite_data_api/models/sec_filings_list200_response_companies_inner_filings_inner.py +127 -0
  182. invinite_data_api/models/sec_filings_search200_response.py +98 -0
  183. invinite_data_api/models/sec_filings_search200_response_sources_inner.py +99 -0
  184. invinite_data_api/models/sec_filings_sections200_response.py +96 -0
  185. invinite_data_api/models/sec_filings_sections200_response_companies_inner.py +100 -0
  186. invinite_data_api/models/sec_filings_sections200_response_companies_inner_sections_inner.py +132 -0
  187. invinite_data_api/models/segmented_financials200_response.py +96 -0
  188. invinite_data_api/models/segmented_financials200_response_companies_inner.py +102 -0
  189. invinite_data_api/models/segmented_financials200_response_companies_inner_periods_inner.py +123 -0
  190. invinite_data_api/models/segmented_financials200_response_companies_inner_periods_inner_facts_value_inner.py +104 -0
  191. invinite_data_api/models/segmented_financials_detailed200_response.py +96 -0
  192. invinite_data_api/models/segmented_financials_detailed200_response_companies_inner.py +102 -0
  193. invinite_data_api/models/segmented_financials_detailed200_response_companies_inner_periods_inner.py +123 -0
  194. invinite_data_api/models/segmented_financials_detailed200_response_companies_inner_periods_inner_facts_value_inner.py +141 -0
  195. invinite_data_api/models/service_unavailable_error.py +90 -0
  196. invinite_data_api/models/standardized_income_statement200_response.py +97 -0
  197. invinite_data_api/models/standardized_income_statement200_response_companies_inner.py +103 -0
  198. invinite_data_api/models/standardized_income_statement200_response_companies_inner_periods_inner.py +109 -0
  199. invinite_data_api/models/standardized_income_statement_detailed200_response.py +97 -0
  200. invinite_data_api/models/standardized_income_statement_detailed200_response_companies_inner.py +103 -0
  201. invinite_data_api/models/standardized_income_statement_detailed200_response_companies_inner_periods_inner.py +122 -0
  202. invinite_data_api/models/standardized_income_statement_detailed200_response_companies_inner_periods_inner_facts_value.py +120 -0
  203. invinite_data_api/models/standardized_income_statement_detailed200_response_companies_inner_periods_inner_facts_value_formula.py +98 -0
  204. invinite_data_api/models/standardized_income_statement_detailed200_response_companies_inner_periods_inner_facts_value_formula_members_inner.py +137 -0
  205. invinite_data_api/models/standardized_income_statement_detailed200_response_companies_inner_periods_inner_facts_value_formula_members_inner_one_of.py +134 -0
  206. invinite_data_api/models/standardized_income_statement_detailed200_response_companies_inner_periods_inner_facts_value_formula_members_inner_one_of1.py +120 -0
  207. invinite_data_api/models/standardized_income_statement_presentation200_response.py +97 -0
  208. invinite_data_api/models/standardized_income_statement_presentation200_response_companies_inner.py +103 -0
  209. invinite_data_api/models/standardized_income_statement_presentation200_response_companies_inner_periods_inner.py +117 -0
  210. invinite_data_api/models/standardized_presentation_fact.py +101 -0
  211. invinite_data_api/models/standardized_snapshot200_response.py +97 -0
  212. invinite_data_api/models/standardized_snapshot200_response_companies_inner.py +117 -0
  213. invinite_data_api/models/standardized_snapshot200_response_companies_inner_statements.py +117 -0
  214. invinite_data_api/models/standardized_snapshot200_response_companies_inner_statements_income_statement.py +88 -0
  215. invinite_data_api/models/standardized_snapshot_detailed200_response.py +97 -0
  216. invinite_data_api/models/standardized_snapshot_detailed200_response_companies_inner.py +117 -0
  217. invinite_data_api/models/standardized_snapshot_detailed200_response_companies_inner_statements.py +117 -0
  218. invinite_data_api/models/standardized_snapshot_detailed200_response_companies_inner_statements_income_statement.py +101 -0
  219. invinite_data_api/models/standardized_snapshot_presentation200_response.py +97 -0
  220. invinite_data_api/models/standardized_snapshot_presentation200_response_companies_inner.py +117 -0
  221. invinite_data_api/models/standardized_snapshot_presentation200_response_companies_inner_statements.py +117 -0
  222. invinite_data_api/models/standardized_snapshot_presentation200_response_companies_inner_statements_income_statement.py +96 -0
  223. invinite_data_api/models/status_get200_response.py +110 -0
  224. invinite_data_api/models/status_get200_response_services_inner.py +125 -0
  225. invinite_data_api/models/status_get200_response_universe.py +99 -0
  226. invinite_data_api/models/status_get200_response_universe_earnings_calls.py +90 -0
  227. invinite_data_api/models/status_licensing200_response.py +130 -0
  228. invinite_data_api/models/status_licensing200_response_families_inner.py +105 -0
  229. invinite_data_api/models/status_licensing200_response_families_inner_routes_inner.py +106 -0
  230. invinite_data_api/models/status_licensing200_response_notes.py +98 -0
  231. invinite_data_api/models/status_licensing200_response_tiers.py +107 -0
  232. invinite_data_api/models/status_licensing200_response_tiers_free.py +98 -0
  233. invinite_data_api/models/unauthorized_error.py +90 -0
  234. invinite_data_api/models/web_socket_call_lifecycle_event.py +116 -0
  235. invinite_data_api/models/web_socket_error_event.py +109 -0
  236. invinite_data_api/models/web_socket_filing.py +127 -0
  237. invinite_data_api/models/web_socket_gap_event.py +104 -0
  238. invinite_data_api/models/web_socket_guidance_flash_event.py +156 -0
  239. invinite_data_api/models/web_socket_keyword_hit_event.py +177 -0
  240. invinite_data_api/models/web_socket_new_filing_event.py +101 -0
  241. invinite_data_api/models/web_socket_ping_event.py +95 -0
  242. invinite_data_api/models/web_socket_price_tick_event.py +170 -0
  243. invinite_data_api/models/web_socket_speaker_names_event.py +112 -0
  244. invinite_data_api/models/web_socket_speaker_names_event_assignments_inner.py +120 -0
  245. invinite_data_api/models/web_socket_subscribe_earnings_call.py +183 -0
  246. invinite_data_api/models/web_socket_subscribed_event.py +142 -0
  247. invinite_data_api/models/web_socket_transcript_segment_event.py +118 -0
  248. invinite_data_api/models/web_socket_unsubscribe.py +98 -0
  249. invinite_data_api/models/web_socket_unsubscribed_event.py +107 -0
  250. invinite_data_api/models/web_socket_warning_event.py +109 -0
  251. invinite_data_api/models/webhook_envelope.py +103 -0
  252. invinite_data_api/py.typed +0 -0
  253. invinite_data_api/rest.py +263 -0
  254. invinite_data_api-0.1.0.dist-info/METADATA +133 -0
  255. invinite_data_api-0.1.0.dist-info/RECORD +257 -0
  256. invinite_data_api-0.1.0.dist-info/WHEEL +5 -0
  257. invinite_data_api-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,101 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Invinite API
5
+
6
+ Invinite financial data API. Each endpoint has a base credit cost: `x-credits` is the base cost; responses add 1 credit per started 1,000 rows beyond the first 1,000; `X-Credits-Charged` reports the final debit and `X-Credits-Included-Remaining` what is left of the plan's included credits. `GET /v1/account/usage` returns your account's usage by day, endpoint family and key (it costs no credits). SEC filing search has a 100-credit base cost. ## Webhooks Accounts on LITE and above subscribe with `POST /v1/earnings-calls/webhooks` to the `earnings_call.*` lifecycle events (filtered by CIK); see `x-webhooks` for each `data` object. What a subscription may hold depends on the plan (a create / update beyond it is refused with the plan's limit; `ping` needs no subscription — the test route and the disabled notice send it to any subscription): | Plan | Webhooks | Events | CIKs per webhook | Keywords per webhook | |---|---|---|---|---| | FREE | 0 | — | — | — | | LITE | 5 | `.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_ready`, `.assets_ready` | ≤ 10 | — | | STANDARD | 15 | LITE + `.transcript_provisional`, `.transcript_corrected`, `.documents_updated` | ≤ 25 | — | | PRO / ENTERPRISE | 50 | STANDARD + `.guidance_flash`, `.keyword_hit` | ≤ 100 | ≤ 20 (on ≤ 10 webhooks) | Every delivery is a `POST` with `Content-Type: application/json`, `X-Invinite-Event`, `X-Invinite-Delivery` and `X-Invinite-Signature: t=<unix seconds>,v1=<hex>` where `v1` = HMAC-SHA256(secret, `<t>.<raw body>`); during a secret rotation the header carries one `v1` per valid secret. Reject a signature older than 5 minutes. Any 2xx within 10 s acknowledges; redirects are not followed. A failed delivery is retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, 24 h (8 attempts in all, the same delivery id each time). A subscription is disabled after 8 consecutive dead-lettered deliveries (a final `ping` with `notice: subscription_disabled` is sent). Deliveries are at-least-once and unordered: dedupe on the delivery id, order by `created_at`. ## Licensing | Tier | display | redistribute | rag | train | audio | resell | | --- | --- | --- | --- | --- | --- | --- | | FREE | ✓ | – | – | – | – | – | | LITE | ✓ | – | – | – | – | – | | STANDARD | ✓ | – | ✓ | – | – | – | | PRO | ✓ | ✓ | ✓ | – | ✓ | – | Invinite data may be shown and, from PRO, redistributed inside the licensee's own product with attribution (\"Source: Invinite\" on screen or in the API response that carries it). It may never be resold, relicensed, white-labelled or offered as a data feed as the licensee's own data, at any tier, under any contract. Policy version: 2026-10-draft. Draft — pending counsel sign-off. Audio files are forensically watermarked per customer. Audio is served through signed URLs, is subject to per-company takedown and may not be re-hosted; every delivered file carries a per-account forensic watermark: a copy found elsewhere is traced to the account that received it. SEC data: Figures and filings originate from SEC EDGAR; the standardisation, mapping and derived metrics are Invinite's. Every `/v1/*` data operation carries `x-license`, the minimum use right its data ships with; `GET /status/licensing` serves the same matrix per route, rendered at [data.invinite.com/docs/licensing](https://data.invinite.com/docs/licensing). `/v1/account/usage` serves no licensed data and carries none. ## Status [`/status`](/status) reports whether each product family works (a status and its uptime over 7, 30 and 90 days); [`/status/licensing`](/status/licensing) serves the licensing matrix per route. The status routes need no API key and are cached for 5 minutes. The public status page is [status.data.invinite.com](https://status.data.invinite.com): a snapshot of `/status` every 15 minutes plus an external reachability probe of the API. Uptime is the share of requests answered without a server error, measured by the API per product family; a window with too little traffic to judge shows no figure. Status reflects the last 24 hours. Product families: Company, Financials, SEC Filings, Insider Trades, Institutional Ownership, IPOs, Market, Metadata, Earnings Calls, WebSocket, Account.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from datetime import date
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
22
+ from typing import Any, ClassVar, Dict, List, Union
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class CompanyDividends200ResponseCompaniesInnerDividendsInner(BaseModel):
28
+ """
29
+ CompanyDividends200ResponseCompaniesInnerDividendsInner
30
+ """ # noqa: E501
31
+ ex_dividend_date: date = Field(description="Ex-dividend date")
32
+ declaration_date: date = Field(description="Declaration date")
33
+ cash_amount: Union[StrictFloat, StrictInt] = Field(description="Cash amount per share")
34
+ dividend_type: StrictStr = Field(description="Dividend type code")
35
+ frequency: StrictInt = Field(description="Payment frequency per year")
36
+ pay_date: date = Field(description="Payable date")
37
+ record_date: date = Field(description="Shareholder record date")
38
+ __properties: ClassVar[List[str]] = ["ex_dividend_date", "declaration_date", "cash_amount", "dividend_type", "frequency", "pay_date", "record_date"]
39
+
40
+ model_config = ConfigDict(
41
+ validate_by_name=True,
42
+ validate_by_alias=True,
43
+ validate_assignment=True,
44
+ protected_namespaces=(),
45
+ )
46
+
47
+
48
+ def to_str(self) -> str:
49
+ """Returns the string representation of the model using alias"""
50
+ return pprint.pformat(self.model_dump(by_alias=True))
51
+
52
+ def to_json(self) -> str:
53
+ """Returns the JSON representation of the model using alias"""
54
+ return json.dumps(to_jsonable_python(self.to_dict()))
55
+
56
+ @classmethod
57
+ def from_json(cls, json_str: str) -> Optional[Self]:
58
+ """Create an instance of CompanyDividends200ResponseCompaniesInnerDividendsInner from a JSON string"""
59
+ return cls.from_dict(json.loads(json_str))
60
+
61
+ def to_dict(self) -> Dict[str, Any]:
62
+ """Return the dictionary representation of the model using alias.
63
+
64
+ This has the following differences from calling pydantic's
65
+ `self.model_dump(by_alias=True)`:
66
+
67
+ * `None` is only added to the output dict for nullable fields that
68
+ were set at model initialization. Other fields with value `None`
69
+ are ignored.
70
+ """
71
+ excluded_fields: Set[str] = set([
72
+ ])
73
+
74
+ _dict = self.model_dump(
75
+ by_alias=True,
76
+ exclude=excluded_fields,
77
+ exclude_none=True,
78
+ )
79
+ return _dict
80
+
81
+ @classmethod
82
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
83
+ """Create an instance of CompanyDividends200ResponseCompaniesInnerDividendsInner from a dict"""
84
+ if obj is None:
85
+ return None
86
+
87
+ if not isinstance(obj, dict):
88
+ return cls.model_validate(obj)
89
+
90
+ _obj = cls.model_validate({
91
+ "ex_dividend_date": obj.get("ex_dividend_date"),
92
+ "declaration_date": obj.get("declaration_date"),
93
+ "cash_amount": obj.get("cash_amount"),
94
+ "dividend_type": obj.get("dividend_type"),
95
+ "frequency": obj.get("frequency"),
96
+ "pay_date": obj.get("pay_date"),
97
+ "record_date": obj.get("record_date")
98
+ })
99
+ return _obj
100
+
101
+
@@ -0,0 +1,96 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Invinite API
5
+
6
+ Invinite financial data API. Each endpoint has a base credit cost: `x-credits` is the base cost; responses add 1 credit per started 1,000 rows beyond the first 1,000; `X-Credits-Charged` reports the final debit and `X-Credits-Included-Remaining` what is left of the plan's included credits. `GET /v1/account/usage` returns your account's usage by day, endpoint family and key (it costs no credits). SEC filing search has a 100-credit base cost. ## Webhooks Accounts on LITE and above subscribe with `POST /v1/earnings-calls/webhooks` to the `earnings_call.*` lifecycle events (filtered by CIK); see `x-webhooks` for each `data` object. What a subscription may hold depends on the plan (a create / update beyond it is refused with the plan's limit; `ping` needs no subscription — the test route and the disabled notice send it to any subscription): | Plan | Webhooks | Events | CIKs per webhook | Keywords per webhook | |---|---|---|---|---| | FREE | 0 | — | — | — | | LITE | 5 | `.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_ready`, `.assets_ready` | ≤ 10 | — | | STANDARD | 15 | LITE + `.transcript_provisional`, `.transcript_corrected`, `.documents_updated` | ≤ 25 | — | | PRO / ENTERPRISE | 50 | STANDARD + `.guidance_flash`, `.keyword_hit` | ≤ 100 | ≤ 20 (on ≤ 10 webhooks) | Every delivery is a `POST` with `Content-Type: application/json`, `X-Invinite-Event`, `X-Invinite-Delivery` and `X-Invinite-Signature: t=<unix seconds>,v1=<hex>` where `v1` = HMAC-SHA256(secret, `<t>.<raw body>`); during a secret rotation the header carries one `v1` per valid secret. Reject a signature older than 5 minutes. Any 2xx within 10 s acknowledges; redirects are not followed. A failed delivery is retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, 24 h (8 attempts in all, the same delivery id each time). A subscription is disabled after 8 consecutive dead-lettered deliveries (a final `ping` with `notice: subscription_disabled` is sent). Deliveries are at-least-once and unordered: dedupe on the delivery id, order by `created_at`. ## Licensing | Tier | display | redistribute | rag | train | audio | resell | | --- | --- | --- | --- | --- | --- | --- | | FREE | ✓ | – | – | – | – | – | | LITE | ✓ | – | – | – | – | – | | STANDARD | ✓ | – | ✓ | – | – | – | | PRO | ✓ | ✓ | ✓ | – | ✓ | – | Invinite data may be shown and, from PRO, redistributed inside the licensee's own product with attribution (\"Source: Invinite\" on screen or in the API response that carries it). It may never be resold, relicensed, white-labelled or offered as a data feed as the licensee's own data, at any tier, under any contract. Policy version: 2026-10-draft. Draft — pending counsel sign-off. Audio files are forensically watermarked per customer. Audio is served through signed URLs, is subject to per-company takedown and may not be re-hosted; every delivered file carries a per-account forensic watermark: a copy found elsewhere is traced to the account that received it. SEC data: Figures and filings originate from SEC EDGAR; the standardisation, mapping and derived metrics are Invinite's. Every `/v1/*` data operation carries `x-license`, the minimum use right its data ships with; `GET /status/licensing` serves the same matrix per route, rendered at [data.invinite.com/docs/licensing](https://data.invinite.com/docs/licensing). `/v1/account/usage` serves no licensed data and carries none. ## Status [`/status`](/status) reports whether each product family works (a status and its uptime over 7, 30 and 90 days); [`/status/licensing`](/status/licensing) serves the licensing matrix per route. The status routes need no API key and are cached for 5 minutes. The public status page is [status.data.invinite.com](https://status.data.invinite.com): a snapshot of `/status` every 15 minutes plus an external reachability probe of the API. Uptime is the share of requests answered without a server error, measured by the API per product family; a window with too little traffic to judge shows no figure. Status reflects the last 24 hours. Product families: Company, Financials, SEC Filings, Insider Trades, Institutional Ownership, IPOs, Market, Metadata, Earnings Calls, WebSocket, Account.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field
21
+ from typing import Any, ClassVar, Dict, List
22
+ from invinite_data_api.models.company_fiscal_periods200_response_companies_inner import CompanyFiscalPeriods200ResponseCompaniesInner
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class CompanyFiscalPeriods200Response(BaseModel):
28
+ """
29
+ CompanyFiscalPeriods200Response
30
+ """ # noqa: E501
31
+ companies: List[CompanyFiscalPeriods200ResponseCompaniesInner] = Field(description="Fiscal period lists grouped by company")
32
+ __properties: ClassVar[List[str]] = ["companies"]
33
+
34
+ model_config = ConfigDict(
35
+ validate_by_name=True,
36
+ validate_by_alias=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ return json.dumps(to_jsonable_python(self.to_dict()))
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of CompanyFiscalPeriods200Response from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ # override the default output from pydantic by calling `to_dict()` of each item in companies (list)
74
+ _items = []
75
+ if self.companies:
76
+ for _item_companies in self.companies:
77
+ if _item_companies:
78
+ _items.append(_item_companies.to_dict())
79
+ _dict['companies'] = _items
80
+ return _dict
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
+ """Create an instance of CompanyFiscalPeriods200Response from a dict"""
85
+ if obj is None:
86
+ return None
87
+
88
+ if not isinstance(obj, dict):
89
+ return cls.model_validate(obj)
90
+
91
+ _obj = cls.model_validate({
92
+ "companies": [CompanyFiscalPeriods200ResponseCompaniesInner.from_dict(_item) for _item in obj["companies"]] if obj.get("companies") is not None else None
93
+ })
94
+ return _obj
95
+
96
+
@@ -0,0 +1,102 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Invinite API
5
+
6
+ Invinite financial data API. Each endpoint has a base credit cost: `x-credits` is the base cost; responses add 1 credit per started 1,000 rows beyond the first 1,000; `X-Credits-Charged` reports the final debit and `X-Credits-Included-Remaining` what is left of the plan's included credits. `GET /v1/account/usage` returns your account's usage by day, endpoint family and key (it costs no credits). SEC filing search has a 100-credit base cost. ## Webhooks Accounts on LITE and above subscribe with `POST /v1/earnings-calls/webhooks` to the `earnings_call.*` lifecycle events (filtered by CIK); see `x-webhooks` for each `data` object. What a subscription may hold depends on the plan (a create / update beyond it is refused with the plan's limit; `ping` needs no subscription — the test route and the disabled notice send it to any subscription): | Plan | Webhooks | Events | CIKs per webhook | Keywords per webhook | |---|---|---|---|---| | FREE | 0 | — | — | — | | LITE | 5 | `.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_ready`, `.assets_ready` | ≤ 10 | — | | STANDARD | 15 | LITE + `.transcript_provisional`, `.transcript_corrected`, `.documents_updated` | ≤ 25 | — | | PRO / ENTERPRISE | 50 | STANDARD + `.guidance_flash`, `.keyword_hit` | ≤ 100 | ≤ 20 (on ≤ 10 webhooks) | Every delivery is a `POST` with `Content-Type: application/json`, `X-Invinite-Event`, `X-Invinite-Delivery` and `X-Invinite-Signature: t=<unix seconds>,v1=<hex>` where `v1` = HMAC-SHA256(secret, `<t>.<raw body>`); during a secret rotation the header carries one `v1` per valid secret. Reject a signature older than 5 minutes. Any 2xx within 10 s acknowledges; redirects are not followed. A failed delivery is retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, 24 h (8 attempts in all, the same delivery id each time). A subscription is disabled after 8 consecutive dead-lettered deliveries (a final `ping` with `notice: subscription_disabled` is sent). Deliveries are at-least-once and unordered: dedupe on the delivery id, order by `created_at`. ## Licensing | Tier | display | redistribute | rag | train | audio | resell | | --- | --- | --- | --- | --- | --- | --- | | FREE | ✓ | – | – | – | – | – | | LITE | ✓ | – | – | – | – | – | | STANDARD | ✓ | – | ✓ | – | – | – | | PRO | ✓ | ✓ | ✓ | – | ✓ | – | Invinite data may be shown and, from PRO, redistributed inside the licensee's own product with attribution (\"Source: Invinite\" on screen or in the API response that carries it). It may never be resold, relicensed, white-labelled or offered as a data feed as the licensee's own data, at any tier, under any contract. Policy version: 2026-10-draft. Draft — pending counsel sign-off. Audio files are forensically watermarked per customer. Audio is served through signed URLs, is subject to per-company takedown and may not be re-hosted; every delivered file carries a per-account forensic watermark: a copy found elsewhere is traced to the account that received it. SEC data: Figures and filings originate from SEC EDGAR; the standardisation, mapping and derived metrics are Invinite's. Every `/v1/*` data operation carries `x-license`, the minimum use right its data ships with; `GET /status/licensing` serves the same matrix per route, rendered at [data.invinite.com/docs/licensing](https://data.invinite.com/docs/licensing). `/v1/account/usage` serves no licensed data and carries none. ## Status [`/status`](/status) reports whether each product family works (a status and its uptime over 7, 30 and 90 days); [`/status/licensing`](/status/licensing) serves the licensing matrix per route. The status routes need no API key and are cached for 5 minutes. The public status page is [status.data.invinite.com](https://status.data.invinite.com): a snapshot of `/status` every 15 minutes plus an external reachability probe of the API. Uptime is the share of requests answered without a server error, measured by the API per product family; a window with too little traffic to judge shows no figure. Status reflects the last 24 hours. Product families: Company, Financials, SEC Filings, Insider Trades, Institutional Ownership, IPOs, Market, Metadata, Earnings Calls, WebSocket, Account.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from invinite_data_api.models.company_fiscal_periods200_response_companies_inner_periods_inner import CompanyFiscalPeriods200ResponseCompaniesInnerPeriodsInner
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class CompanyFiscalPeriods200ResponseCompaniesInner(BaseModel):
28
+ """
29
+ CompanyFiscalPeriods200ResponseCompaniesInner
30
+ """ # noqa: E501
31
+ ticker: StrictStr = Field(description="Ticker symbol")
32
+ cik: StrictStr = Field(description="CIK with or without leading zeros")
33
+ periods: List[CompanyFiscalPeriods200ResponseCompaniesInnerPeriodsInner] = Field(description="Fiscal periods for the company")
34
+ next_url: Optional[StrictStr] = Field(default=None, description="URL for the next page (includes next offset and same limit). Omitted when no next page exists.")
35
+ __properties: ClassVar[List[str]] = ["ticker", "cik", "periods", "next_url"]
36
+
37
+ model_config = ConfigDict(
38
+ validate_by_name=True,
39
+ validate_by_alias=True,
40
+ validate_assignment=True,
41
+ protected_namespaces=(),
42
+ )
43
+
44
+
45
+ def to_str(self) -> str:
46
+ """Returns the string representation of the model using alias"""
47
+ return pprint.pformat(self.model_dump(by_alias=True))
48
+
49
+ def to_json(self) -> str:
50
+ """Returns the JSON representation of the model using alias"""
51
+ return json.dumps(to_jsonable_python(self.to_dict()))
52
+
53
+ @classmethod
54
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
+ """Create an instance of CompanyFiscalPeriods200ResponseCompaniesInner from a JSON string"""
56
+ return cls.from_dict(json.loads(json_str))
57
+
58
+ def to_dict(self) -> Dict[str, Any]:
59
+ """Return the dictionary representation of the model using alias.
60
+
61
+ This has the following differences from calling pydantic's
62
+ `self.model_dump(by_alias=True)`:
63
+
64
+ * `None` is only added to the output dict for nullable fields that
65
+ were set at model initialization. Other fields with value `None`
66
+ are ignored.
67
+ """
68
+ excluded_fields: Set[str] = set([
69
+ ])
70
+
71
+ _dict = self.model_dump(
72
+ by_alias=True,
73
+ exclude=excluded_fields,
74
+ exclude_none=True,
75
+ )
76
+ # override the default output from pydantic by calling `to_dict()` of each item in periods (list)
77
+ _items = []
78
+ if self.periods:
79
+ for _item_periods in self.periods:
80
+ if _item_periods:
81
+ _items.append(_item_periods.to_dict())
82
+ _dict['periods'] = _items
83
+ return _dict
84
+
85
+ @classmethod
86
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
87
+ """Create an instance of CompanyFiscalPeriods200ResponseCompaniesInner from a dict"""
88
+ if obj is None:
89
+ return None
90
+
91
+ if not isinstance(obj, dict):
92
+ return cls.model_validate(obj)
93
+
94
+ _obj = cls.model_validate({
95
+ "ticker": obj.get("ticker"),
96
+ "cik": obj.get("cik"),
97
+ "periods": [CompanyFiscalPeriods200ResponseCompaniesInnerPeriodsInner.from_dict(_item) for _item in obj["periods"]] if obj.get("periods") is not None else None,
98
+ "next_url": obj.get("next_url")
99
+ })
100
+ return _obj
101
+
102
+
@@ -0,0 +1,97 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Invinite API
5
+
6
+ Invinite financial data API. Each endpoint has a base credit cost: `x-credits` is the base cost; responses add 1 credit per started 1,000 rows beyond the first 1,000; `X-Credits-Charged` reports the final debit and `X-Credits-Included-Remaining` what is left of the plan's included credits. `GET /v1/account/usage` returns your account's usage by day, endpoint family and key (it costs no credits). SEC filing search has a 100-credit base cost. ## Webhooks Accounts on LITE and above subscribe with `POST /v1/earnings-calls/webhooks` to the `earnings_call.*` lifecycle events (filtered by CIK); see `x-webhooks` for each `data` object. What a subscription may hold depends on the plan (a create / update beyond it is refused with the plan's limit; `ping` needs no subscription — the test route and the disabled notice send it to any subscription): | Plan | Webhooks | Events | CIKs per webhook | Keywords per webhook | |---|---|---|---|---| | FREE | 0 | — | — | — | | LITE | 5 | `.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_ready`, `.assets_ready` | ≤ 10 | — | | STANDARD | 15 | LITE + `.transcript_provisional`, `.transcript_corrected`, `.documents_updated` | ≤ 25 | — | | PRO / ENTERPRISE | 50 | STANDARD + `.guidance_flash`, `.keyword_hit` | ≤ 100 | ≤ 20 (on ≤ 10 webhooks) | Every delivery is a `POST` with `Content-Type: application/json`, `X-Invinite-Event`, `X-Invinite-Delivery` and `X-Invinite-Signature: t=<unix seconds>,v1=<hex>` where `v1` = HMAC-SHA256(secret, `<t>.<raw body>`); during a secret rotation the header carries one `v1` per valid secret. Reject a signature older than 5 minutes. Any 2xx within 10 s acknowledges; redirects are not followed. A failed delivery is retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, 24 h (8 attempts in all, the same delivery id each time). A subscription is disabled after 8 consecutive dead-lettered deliveries (a final `ping` with `notice: subscription_disabled` is sent). Deliveries are at-least-once and unordered: dedupe on the delivery id, order by `created_at`. ## Licensing | Tier | display | redistribute | rag | train | audio | resell | | --- | --- | --- | --- | --- | --- | --- | | FREE | ✓ | – | – | – | – | – | | LITE | ✓ | – | – | – | – | – | | STANDARD | ✓ | – | ✓ | – | – | – | | PRO | ✓ | ✓ | ✓ | – | ✓ | – | Invinite data may be shown and, from PRO, redistributed inside the licensee's own product with attribution (\"Source: Invinite\" on screen or in the API response that carries it). It may never be resold, relicensed, white-labelled or offered as a data feed as the licensee's own data, at any tier, under any contract. Policy version: 2026-10-draft. Draft — pending counsel sign-off. Audio files are forensically watermarked per customer. Audio is served through signed URLs, is subject to per-company takedown and may not be re-hosted; every delivered file carries a per-account forensic watermark: a copy found elsewhere is traced to the account that received it. SEC data: Figures and filings originate from SEC EDGAR; the standardisation, mapping and derived metrics are Invinite's. Every `/v1/*` data operation carries `x-license`, the minimum use right its data ships with; `GET /status/licensing` serves the same matrix per route, rendered at [data.invinite.com/docs/licensing](https://data.invinite.com/docs/licensing). `/v1/account/usage` serves no licensed data and carries none. ## Status [`/status`](/status) reports whether each product family works (a status and its uptime over 7, 30 and 90 days); [`/status/licensing`](/status/licensing) serves the licensing matrix per route. The status routes need no API key and are cached for 5 minutes. The public status page is [status.data.invinite.com](https://status.data.invinite.com): a snapshot of `/status` every 15 minutes plus an external reachability probe of the API. Uptime is the share of requests answered without a server error, measured by the API per product family; a window with too little traffic to judge shows no figure. Status reflects the last 24 hours. Product families: Company, Financials, SEC Filings, Insider Trades, Institutional Ownership, IPOs, Market, Metadata, Earnings Calls, WebSocket, Account.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from datetime import date
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class CompanyFiscalPeriods200ResponseCompaniesInnerPeriodsInner(BaseModel):
28
+ """
29
+ CompanyFiscalPeriods200ResponseCompaniesInnerPeriodsInner
30
+ """ # noqa: E501
31
+ fiscal_year: StrictInt = Field(description="Fiscal year")
32
+ fiscal_quarter: StrictInt = Field(description="Fiscal quarter (1-4)")
33
+ calendar_year: StrictInt = Field(description="Calendar year")
34
+ calendar_quarter: StrictInt = Field(description="Calendar quarter (1-4)")
35
+ period_end: date = Field(description="Period end date")
36
+ __properties: ClassVar[List[str]] = ["fiscal_year", "fiscal_quarter", "calendar_year", "calendar_quarter", "period_end"]
37
+
38
+ model_config = ConfigDict(
39
+ validate_by_name=True,
40
+ validate_by_alias=True,
41
+ validate_assignment=True,
42
+ protected_namespaces=(),
43
+ )
44
+
45
+
46
+ def to_str(self) -> str:
47
+ """Returns the string representation of the model using alias"""
48
+ return pprint.pformat(self.model_dump(by_alias=True))
49
+
50
+ def to_json(self) -> str:
51
+ """Returns the JSON representation of the model using alias"""
52
+ return json.dumps(to_jsonable_python(self.to_dict()))
53
+
54
+ @classmethod
55
+ def from_json(cls, json_str: str) -> Optional[Self]:
56
+ """Create an instance of CompanyFiscalPeriods200ResponseCompaniesInnerPeriodsInner from a JSON string"""
57
+ return cls.from_dict(json.loads(json_str))
58
+
59
+ def to_dict(self) -> Dict[str, Any]:
60
+ """Return the dictionary representation of the model using alias.
61
+
62
+ This has the following differences from calling pydantic's
63
+ `self.model_dump(by_alias=True)`:
64
+
65
+ * `None` is only added to the output dict for nullable fields that
66
+ were set at model initialization. Other fields with value `None`
67
+ are ignored.
68
+ """
69
+ excluded_fields: Set[str] = set([
70
+ ])
71
+
72
+ _dict = self.model_dump(
73
+ by_alias=True,
74
+ exclude=excluded_fields,
75
+ exclude_none=True,
76
+ )
77
+ return _dict
78
+
79
+ @classmethod
80
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
+ """Create an instance of CompanyFiscalPeriods200ResponseCompaniesInnerPeriodsInner from a dict"""
82
+ if obj is None:
83
+ return None
84
+
85
+ if not isinstance(obj, dict):
86
+ return cls.model_validate(obj)
87
+
88
+ _obj = cls.model_validate({
89
+ "fiscal_year": obj.get("fiscal_year"),
90
+ "fiscal_quarter": obj.get("fiscal_quarter"),
91
+ "calendar_year": obj.get("calendar_year"),
92
+ "calendar_quarter": obj.get("calendar_quarter"),
93
+ "period_end": obj.get("period_end")
94
+ })
95
+ return _obj
96
+
97
+
@@ -0,0 +1,100 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Invinite API
5
+
6
+ Invinite financial data API. Each endpoint has a base credit cost: `x-credits` is the base cost; responses add 1 credit per started 1,000 rows beyond the first 1,000; `X-Credits-Charged` reports the final debit and `X-Credits-Included-Remaining` what is left of the plan's included credits. `GET /v1/account/usage` returns your account's usage by day, endpoint family and key (it costs no credits). SEC filing search has a 100-credit base cost. ## Webhooks Accounts on LITE and above subscribe with `POST /v1/earnings-calls/webhooks` to the `earnings_call.*` lifecycle events (filtered by CIK); see `x-webhooks` for each `data` object. What a subscription may hold depends on the plan (a create / update beyond it is refused with the plan's limit; `ping` needs no subscription — the test route and the disabled notice send it to any subscription): | Plan | Webhooks | Events | CIKs per webhook | Keywords per webhook | |---|---|---|---|---| | FREE | 0 | — | — | — | | LITE | 5 | `.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_ready`, `.assets_ready` | ≤ 10 | — | | STANDARD | 15 | LITE + `.transcript_provisional`, `.transcript_corrected`, `.documents_updated` | ≤ 25 | — | | PRO / ENTERPRISE | 50 | STANDARD + `.guidance_flash`, `.keyword_hit` | ≤ 100 | ≤ 20 (on ≤ 10 webhooks) | Every delivery is a `POST` with `Content-Type: application/json`, `X-Invinite-Event`, `X-Invinite-Delivery` and `X-Invinite-Signature: t=<unix seconds>,v1=<hex>` where `v1` = HMAC-SHA256(secret, `<t>.<raw body>`); during a secret rotation the header carries one `v1` per valid secret. Reject a signature older than 5 minutes. Any 2xx within 10 s acknowledges; redirects are not followed. A failed delivery is retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, 24 h (8 attempts in all, the same delivery id each time). A subscription is disabled after 8 consecutive dead-lettered deliveries (a final `ping` with `notice: subscription_disabled` is sent). Deliveries are at-least-once and unordered: dedupe on the delivery id, order by `created_at`. ## Licensing | Tier | display | redistribute | rag | train | audio | resell | | --- | --- | --- | --- | --- | --- | --- | | FREE | ✓ | – | – | – | – | – | | LITE | ✓ | – | – | – | – | – | | STANDARD | ✓ | – | ✓ | – | – | – | | PRO | ✓ | ✓ | ✓ | – | ✓ | – | Invinite data may be shown and, from PRO, redistributed inside the licensee's own product with attribution (\"Source: Invinite\" on screen or in the API response that carries it). It may never be resold, relicensed, white-labelled or offered as a data feed as the licensee's own data, at any tier, under any contract. Policy version: 2026-10-draft. Draft — pending counsel sign-off. Audio files are forensically watermarked per customer. Audio is served through signed URLs, is subject to per-company takedown and may not be re-hosted; every delivered file carries a per-account forensic watermark: a copy found elsewhere is traced to the account that received it. SEC data: Figures and filings originate from SEC EDGAR; the standardisation, mapping and derived metrics are Invinite's. Every `/v1/*` data operation carries `x-license`, the minimum use right its data ships with; `GET /status/licensing` serves the same matrix per route, rendered at [data.invinite.com/docs/licensing](https://data.invinite.com/docs/licensing). `/v1/account/usage` serves no licensed data and carries none. ## Status [`/status`](/status) reports whether each product family works (a status and its uptime over 7, 30 and 90 days); [`/status/licensing`](/status/licensing) serves the licensing matrix per route. The status routes need no API key and are cached for 5 minutes. The public status page is [status.data.invinite.com](https://status.data.invinite.com): a snapshot of `/status` every 15 minutes plus an external reachability probe of the API. Uptime is the share of requests answered without a server error, measured by the API per product family; a window with too little traffic to judge shows no figure. Status reflects the last 24 hours. Product families: Company, Financials, SEC Filings, Insider Trades, Institutional Ownership, IPOs, Market, Metadata, Earnings Calls, WebSocket, Account.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional, Union
22
+ from invinite_data_api.models.company_search200_response_companies_inner import CompanySearch200ResponseCompaniesInner
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+ class CompanySearch200Response(BaseModel):
28
+ """
29
+ CompanySearch200Response
30
+ """ # noqa: E501
31
+ count: Union[StrictFloat, StrictInt] = Field(description="Total matched companies (may be limited by pagination)")
32
+ companies: List[CompanySearch200ResponseCompaniesInner] = Field(description="Matched companies ordered by ticker")
33
+ next_url: Optional[StrictStr] = Field(default=None, description="URL for the next page (includes next offset and same limit). Omitted when no next page exists.")
34
+ __properties: ClassVar[List[str]] = ["count", "companies", "next_url"]
35
+
36
+ model_config = ConfigDict(
37
+ validate_by_name=True,
38
+ validate_by_alias=True,
39
+ validate_assignment=True,
40
+ protected_namespaces=(),
41
+ )
42
+
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.model_dump(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ return json.dumps(to_jsonable_python(self.to_dict()))
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> Optional[Self]:
54
+ """Create an instance of CompanySearch200Response from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self) -> Dict[str, Any]:
58
+ """Return the dictionary representation of the model using alias.
59
+
60
+ This has the following differences from calling pydantic's
61
+ `self.model_dump(by_alias=True)`:
62
+
63
+ * `None` is only added to the output dict for nullable fields that
64
+ were set at model initialization. Other fields with value `None`
65
+ are ignored.
66
+ """
67
+ excluded_fields: Set[str] = set([
68
+ ])
69
+
70
+ _dict = self.model_dump(
71
+ by_alias=True,
72
+ exclude=excluded_fields,
73
+ exclude_none=True,
74
+ )
75
+ # override the default output from pydantic by calling `to_dict()` of each item in companies (list)
76
+ _items = []
77
+ if self.companies:
78
+ for _item_companies in self.companies:
79
+ if _item_companies:
80
+ _items.append(_item_companies.to_dict())
81
+ _dict['companies'] = _items
82
+ return _dict
83
+
84
+ @classmethod
85
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
86
+ """Create an instance of CompanySearch200Response from a dict"""
87
+ if obj is None:
88
+ return None
89
+
90
+ if not isinstance(obj, dict):
91
+ return cls.model_validate(obj)
92
+
93
+ _obj = cls.model_validate({
94
+ "count": obj.get("count"),
95
+ "companies": [CompanySearch200ResponseCompaniesInner.from_dict(_item) for _item in obj["companies"]] if obj.get("companies") is not None else None,
96
+ "next_url": obj.get("next_url")
97
+ })
98
+ return _obj
99
+
100
+
@@ -0,0 +1,99 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Invinite API
5
+
6
+ Invinite financial data API. Each endpoint has a base credit cost: `x-credits` is the base cost; responses add 1 credit per started 1,000 rows beyond the first 1,000; `X-Credits-Charged` reports the final debit and `X-Credits-Included-Remaining` what is left of the plan's included credits. `GET /v1/account/usage` returns your account's usage by day, endpoint family and key (it costs no credits). SEC filing search has a 100-credit base cost. ## Webhooks Accounts on LITE and above subscribe with `POST /v1/earnings-calls/webhooks` to the `earnings_call.*` lifecycle events (filtered by CIK); see `x-webhooks` for each `data` object. What a subscription may hold depends on the plan (a create / update beyond it is refused with the plan's limit; `ping` needs no subscription — the test route and the disabled notice send it to any subscription): | Plan | Webhooks | Events | CIKs per webhook | Keywords per webhook | |---|---|---|---|---| | FREE | 0 | — | — | — | | LITE | 5 | `.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_ready`, `.assets_ready` | ≤ 10 | — | | STANDARD | 15 | LITE + `.transcript_provisional`, `.transcript_corrected`, `.documents_updated` | ≤ 25 | — | | PRO / ENTERPRISE | 50 | STANDARD + `.guidance_flash`, `.keyword_hit` | ≤ 100 | ≤ 20 (on ≤ 10 webhooks) | Every delivery is a `POST` with `Content-Type: application/json`, `X-Invinite-Event`, `X-Invinite-Delivery` and `X-Invinite-Signature: t=<unix seconds>,v1=<hex>` where `v1` = HMAC-SHA256(secret, `<t>.<raw body>`); during a secret rotation the header carries one `v1` per valid secret. Reject a signature older than 5 minutes. Any 2xx within 10 s acknowledges; redirects are not followed. A failed delivery is retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h, 24 h (8 attempts in all, the same delivery id each time). A subscription is disabled after 8 consecutive dead-lettered deliveries (a final `ping` with `notice: subscription_disabled` is sent). Deliveries are at-least-once and unordered: dedupe on the delivery id, order by `created_at`. ## Licensing | Tier | display | redistribute | rag | train | audio | resell | | --- | --- | --- | --- | --- | --- | --- | | FREE | ✓ | – | – | – | – | – | | LITE | ✓ | – | – | – | – | – | | STANDARD | ✓ | – | ✓ | – | – | – | | PRO | ✓ | ✓ | ✓ | – | ✓ | – | Invinite data may be shown and, from PRO, redistributed inside the licensee's own product with attribution (\"Source: Invinite\" on screen or in the API response that carries it). It may never be resold, relicensed, white-labelled or offered as a data feed as the licensee's own data, at any tier, under any contract. Policy version: 2026-10-draft. Draft — pending counsel sign-off. Audio files are forensically watermarked per customer. Audio is served through signed URLs, is subject to per-company takedown and may not be re-hosted; every delivered file carries a per-account forensic watermark: a copy found elsewhere is traced to the account that received it. SEC data: Figures and filings originate from SEC EDGAR; the standardisation, mapping and derived metrics are Invinite's. Every `/v1/*` data operation carries `x-license`, the minimum use right its data ships with; `GET /status/licensing` serves the same matrix per route, rendered at [data.invinite.com/docs/licensing](https://data.invinite.com/docs/licensing). `/v1/account/usage` serves no licensed data and carries none. ## Status [`/status`](/status) reports whether each product family works (a status and its uptime over 7, 30 and 90 days); [`/status/licensing`](/status/licensing) serves the licensing matrix per route. The status routes need no API key and are cached for 5 minutes. The public status page is [status.data.invinite.com](https://status.data.invinite.com): a snapshot of `/status` every 15 minutes plus an external reachability probe of the API. Uptime is the share of requests answered without a server error, measured by the API per product family; a window with too little traffic to judge shows no figure. Status reflects the last 24 hours. Product families: Company, Financials, SEC Filings, Insider Trades, Institutional Ownership, IPOs, Market, Metadata, Earnings Calls, WebSocket, Account.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+ from pydantic_core import to_jsonable_python
25
+
26
+ class CompanySearch200ResponseCompaniesInner(BaseModel):
27
+ """
28
+ CompanySearch200ResponseCompaniesInner
29
+ """ # noqa: E501
30
+ cik: StrictStr = Field(description="CIK with or without leading zeros")
31
+ ticker: StrictStr = Field(description="Ticker symbol")
32
+ name: StrictStr = Field(description="Company name")
33
+ logo_url: Optional[StrictStr] = Field(description="Logo image URL")
34
+ __properties: ClassVar[List[str]] = ["cik", "ticker", "name", "logo_url"]
35
+
36
+ model_config = ConfigDict(
37
+ validate_by_name=True,
38
+ validate_by_alias=True,
39
+ validate_assignment=True,
40
+ protected_namespaces=(),
41
+ )
42
+
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.model_dump(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ return json.dumps(to_jsonable_python(self.to_dict()))
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> Optional[Self]:
54
+ """Create an instance of CompanySearch200ResponseCompaniesInner from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self) -> Dict[str, Any]:
58
+ """Return the dictionary representation of the model using alias.
59
+
60
+ This has the following differences from calling pydantic's
61
+ `self.model_dump(by_alias=True)`:
62
+
63
+ * `None` is only added to the output dict for nullable fields that
64
+ were set at model initialization. Other fields with value `None`
65
+ are ignored.
66
+ """
67
+ excluded_fields: Set[str] = set([
68
+ ])
69
+
70
+ _dict = self.model_dump(
71
+ by_alias=True,
72
+ exclude=excluded_fields,
73
+ exclude_none=True,
74
+ )
75
+ # set to None if logo_url (nullable) is None
76
+ # and model_fields_set contains the field
77
+ if self.logo_url is None and "logo_url" in self.model_fields_set:
78
+ _dict['logo_url'] = None
79
+
80
+ return _dict
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
+ """Create an instance of CompanySearch200ResponseCompaniesInner from a dict"""
85
+ if obj is None:
86
+ return None
87
+
88
+ if not isinstance(obj, dict):
89
+ return cls.model_validate(obj)
90
+
91
+ _obj = cls.model_validate({
92
+ "cik": obj.get("cik"),
93
+ "ticker": obj.get("ticker"),
94
+ "name": obj.get("name"),
95
+ "logo_url": obj.get("logo_url")
96
+ })
97
+ return _obj
98
+
99
+