@invinite-org/invinite-data-cli 0.3.4 → 0.5.0

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 (85) hide show
  1. package/README.md +89 -751
  2. package/claude-plugin/.claude-plugin/plugin.json +1 -1
  3. package/claude-plugin/agents/invinite-data.md +1 -1
  4. package/claude-plugin/commands/analyze-earnings-call.md +5 -4
  5. package/claude-plugin/skills/invinite-data-cli/SKILL.md +446 -180
  6. package/dist/src/cli.d.ts +6 -0
  7. package/dist/src/cli.js +21 -31
  8. package/dist/src/cli.js.map +1 -1
  9. package/dist/src/client/api-client.d.ts +2 -4
  10. package/dist/src/client/api-client.js +3 -9
  11. package/dist/src/client/api-client.js.map +1 -1
  12. package/dist/src/client/pagination.d.ts +10 -0
  13. package/dist/src/client/pagination.js +40 -0
  14. package/dist/src/client/pagination.js.map +1 -1
  15. package/dist/src/commands/earnings.d.ts +4 -3
  16. package/dist/src/commands/earnings.js +163 -466
  17. package/dist/src/commands/earnings.js.map +1 -1
  18. package/dist/src/generated/cli-manifest.json +4983 -0
  19. package/dist/src/hand-written-commands.d.ts +43 -0
  20. package/dist/src/hand-written-commands.js +21 -0
  21. package/dist/src/hand-written-commands.js.map +1 -0
  22. package/dist/src/shared/errors.d.ts +5 -0
  23. package/dist/src/shared/errors.js +12 -0
  24. package/dist/src/shared/errors.js.map +1 -1
  25. package/dist/src/shared/options.d.ts +0 -13
  26. package/dist/src/shared/options.js +0 -13
  27. package/dist/src/shared/options.js.map +1 -1
  28. package/dist/src/spec-commands.d.ts +10 -0
  29. package/dist/src/spec-commands.js +207 -0
  30. package/dist/src/spec-commands.js.map +1 -0
  31. package/dist/src/spec-flags.d.ts +6 -0
  32. package/dist/src/spec-flags.js +9 -0
  33. package/dist/src/spec-flags.js.map +1 -0
  34. package/dist/src/spec-manifest.d.ts +382 -0
  35. package/dist/src/spec-manifest.js +65 -0
  36. package/dist/src/spec-manifest.js.map +1 -0
  37. package/package.json +7 -3
  38. package/dist/src/commands/company.d.ts +0 -2
  39. package/dist/src/commands/company.js +0 -220
  40. package/dist/src/commands/company.js.map +0 -1
  41. package/dist/src/commands/earnings-selector.d.ts +0 -15
  42. package/dist/src/commands/earnings-selector.js +0 -29
  43. package/dist/src/commands/earnings-selector.js.map +0 -1
  44. package/dist/src/commands/filings.d.ts +0 -2
  45. package/dist/src/commands/filings.js +0 -139
  46. package/dist/src/commands/filings.js.map +0 -1
  47. package/dist/src/commands/financials.d.ts +0 -2
  48. package/dist/src/commands/financials.js +0 -162
  49. package/dist/src/commands/financials.js.map +0 -1
  50. package/dist/src/commands/health.d.ts +0 -2
  51. package/dist/src/commands/health.js +0 -18
  52. package/dist/src/commands/health.js.map +0 -1
  53. package/dist/src/commands/insider-trades.d.ts +0 -2
  54. package/dist/src/commands/insider-trades.js +0 -56
  55. package/dist/src/commands/insider-trades.js.map +0 -1
  56. package/dist/src/commands/ipos.d.ts +0 -2
  57. package/dist/src/commands/ipos.js +0 -42
  58. package/dist/src/commands/ipos.js.map +0 -1
  59. package/dist/src/commands/market.d.ts +0 -2
  60. package/dist/src/commands/market.js +0 -34
  61. package/dist/src/commands/market.js.map +0 -1
  62. package/dist/src/commands/metadata.d.ts +0 -2
  63. package/dist/src/commands/metadata.js +0 -39
  64. package/dist/src/commands/metadata.js.map +0 -1
  65. package/dist/src/commands/metrics.d.ts +0 -2
  66. package/dist/src/commands/metrics.js +0 -158
  67. package/dist/src/commands/metrics.js.map +0 -1
  68. package/dist/src/commands/ownership.d.ts +0 -2
  69. package/dist/src/commands/ownership.js +0 -152
  70. package/dist/src/commands/ownership.js.map +0 -1
  71. package/dist/src/commands/segments.d.ts +0 -2
  72. package/dist/src/commands/segments.js +0 -64
  73. package/dist/src/commands/segments.js.map +0 -1
  74. package/dist/src/commands/usage.d.ts +0 -38
  75. package/dist/src/commands/usage.js +0 -82
  76. package/dist/src/commands/usage.js.map +0 -1
  77. package/dist/src/commands/webhooks.d.ts +0 -16
  78. package/dist/src/commands/webhooks.js +0 -186
  79. package/dist/src/commands/webhooks.js.map +0 -1
  80. package/dist/src/formatters/sparkline.d.ts +0 -2
  81. package/dist/src/formatters/sparkline.js +0 -11
  82. package/dist/src/formatters/sparkline.js.map +0 -1
  83. package/dist/src/formatters/tree-formatter.d.ts +0 -11
  84. package/dist/src/formatters/tree-formatter.js +0 -30
  85. package/dist/src/formatters/tree-formatter.js.map +0 -1
package/README.md CHANGED
@@ -198,24 +198,45 @@ credit costs per endpoint and plan limits are documented at
198
198
 
199
199
  ## Commands
200
200
 
201
- - `login` — Log in through your browser
202
- - `logout` — Revoke the current browser sign-in and clear local credentials
203
- - [usage](#usage-and-credits) — Plan allowance, prepaid balance and usage by day, family and key
204
- - [config](#config) — Manage CLI configuration
205
- - [health](#health) — Check API health
206
- - [company](#company) — Company information
207
- - [financials](#financials) — Financial statements
208
- - [metrics](#metrics) — Financial metrics, ratios, and growth
209
- - [segments](#segments) — Segmented financials
210
- - [filings](#filings) — SEC filings
211
- - [earnings](#earnings) — Earnings calls: calendar, transcripts, Q&A, guidance, price moves during the call, audio, slides, documents, search
212
- - [ownership](#ownership) — Institutional ownership
213
- - [insider-trades](#insider-trades) — Insider trading data
214
- - [ipos](#ipos) — IPO listings
215
- - [market](#market) — Market data
216
- - [metadata](#metadata) — API metadata
217
- - [webhooks](#webhooks) — Earnings-call webhook subscriptions
218
- - [ws](#ws) — WebSocket streaming (`ws listen --earnings` for live call transcripts, `--prices` for live price ticks, `--keywords` / `--all-live` for keyword alerts)
201
+ Every data command is generated from the Data API's OpenAPI document: one command per operation, named by the
202
+ route's `x-cli` (`invd <group> <action>`), its flags the operation's parameters spelled with dashes
203
+ (`fiscal_period_type` → `-p, --fiscal-period-type`, `event_id` → `--event-id`; path parameters are flags too), its help
204
+ text the spec's summary and parameter descriptions. List them with `invd --help` and `invd <group> --help`; the
205
+ [plugin skill](claude-plugin/skills/invinite-data-cli/SKILL.md#commands-reference) carries one generated example per
206
+ command. A handful of commands are hand-written because they do more than one call — `login`, `logout`, `config`,
207
+ `plugin`, `ws` and the earnings downloads / text renders below (`src/hand-written-commands.ts`).
208
+
209
+ | Group | What it covers |
210
+ |-------|----------------|
211
+ | `company` | Search, details, list, dividends, fiscal periods, splits |
212
+ | `financials` | Standardized and as-reported statements and snapshots — one command per variant: `income-statement`, `income-statement-detailed`, `income-statement-presentation`, `as-reported-income-statement…`; the same for `balance-sheet`, `cash-flow`, `snapshot` |
213
+ | `metrics` | Ratios, growth, CAGR |
214
+ | `segments` | `list`, `list-detailed` |
215
+ | `filings` | List, natural-language search, sections, form types |
216
+ | `earnings` | Calendar, events, live calls, transcripts, Q&A, participants, analysts, guidance and KPI extractions, diff, metrics, prosody, price moves during the call, media, documents, search, company IR documents |
217
+ | `ownership` | 13F holdings by company / investor, institutions, transactions |
218
+ | `insider-trades`, `ipos`, `market`, `metadata` | Insider transactions, IPOs, market holidays, available metric and filing-section ids |
219
+ | `webhooks` | Earnings-call webhook subscriptions (PRO) |
220
+ | `usage`, `health`, `status` | Your account's usage (free), API liveness and status (no key) |
221
+
222
+ ```bash
223
+ invd company search -q Apple --json
224
+ invd company details -i AAPL --json
225
+ invd financials income-statement -i AAPL -p annual --json
226
+ invd financials balance-sheet-detailed -i MSFT -p quarterly --limit 4 --with-formula true --json
227
+ invd financials as-reported-cash-flow -i GOOGL -p annual --json
228
+ invd financials snapshot -i AAPL,MSFT,GOOGL -p annual --json
229
+ invd metrics ratios -i AAPL -p annual --category profitability --json
230
+ invd segments list-detailed -i AAPL -p annual --json
231
+ invd filings sections -i AAPL --form-type 10-K --section-id risk_factors --json
232
+ invd ownership holdings-by-company -i AAPL --min-value 1000000 --json
233
+ invd insider-trades list -i TSLA --acquired-disposed D --limit 20 --json
234
+ invd earnings events -i AAPL -s desc -l 4 --json
235
+ invd earnings event --event-id <event_id> --include observations --json
236
+ invd earnings participants --event-id <event_id> --include evidence --json
237
+ invd earnings person --person-id <person_id> --json
238
+ invd earnings price-attribution --event-id <event_id> --json
239
+ ```
219
240
 
220
241
  ---
221
242
 
@@ -239,749 +260,68 @@ invd config reset
239
260
 
240
261
  ---
241
262
 
242
- ### health
243
-
244
- Check API health status.
245
-
246
- ```bash
247
- invd health
248
- ```
249
-
250
- ---
251
-
252
- ### company
253
-
254
- Company information, search, and corporate actions.
255
-
256
- #### `company list`
257
-
258
- List all available companies.
259
-
260
- ```bash
261
- invd company list
262
- ```
263
-
264
- #### `company search`
265
-
266
- Search companies by ticker or name.
267
-
268
- | Option | Description | Default |
269
- |--------|-------------|---------|
270
- | `-q, --query <text>` | Search query **(required)** | — |
271
- | `-l, --limit <n>` | Maximum results | `10` |
272
- | `--offset <n>` | Pagination offset | `0` |
273
-
274
- ```bash
275
- invd company search -q "Apple"
276
- invd company search -q MSFT --limit 5
277
- ```
278
-
279
- #### `company details`
280
-
281
- Fetch company details.
282
-
283
- | Option | Description |
284
- |--------|-------------|
285
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** |
286
-
287
- ```bash
288
- invd company details -i AAPL
289
- ```
290
-
291
- #### `company dividends`
292
-
293
- Fetch stock dividends.
294
-
295
- | Option | Description | Default |
296
- |--------|-------------|---------|
297
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
298
- | `--start-date <date>` | Start date (YYYY-MM-DD) | — |
299
- | `--end-date <date>` | End date (YYYY-MM-DD) | — |
300
- | `-s, --sort <dir>` | Sort direction (`asc` / `desc`) | `desc` |
301
- | `-l, --limit <n>` | Maximum results | `40` |
302
- | `--offset <n>` | Pagination offset | `0` |
303
-
304
- ```bash
305
- invd company dividends -i AAPL --start-date 2023-01-01
306
- ```
307
-
308
- #### `company fiscal-periods`
309
-
310
- Fetch available fiscal periods.
311
-
312
- | Option | Description | Default |
313
- |--------|-------------|---------|
314
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
315
- | `-s, --sort <dir>` | Sort direction (`asc` / `desc`) | `desc` |
316
- | `-l, --limit <n>` | Maximum results | `40` |
317
- | `--offset <n>` | Pagination offset | `0` |
318
-
319
- ```bash
320
- invd company fiscal-periods -i MSFT
321
- ```
322
-
323
- #### `company splits`
324
-
325
- Fetch stock splits.
326
-
327
- | Option | Description | Default |
328
- |--------|-------------|---------|
329
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
330
- | `-s, --sort <dir>` | Sort direction (`asc` / `desc`) | `desc` |
331
- | `-l, --limit <n>` | Maximum results | `40` |
332
- | `--offset <n>` | Pagination offset | `0` |
333
-
334
- ```bash
335
- invd company splits -i AAPL
336
- ```
337
-
338
- ---
339
-
340
- ### financials
341
-
342
- Financial statements — standardized and as-reported.
343
-
344
- All statement commands share these options:
345
-
346
- | Option | Description | Default |
347
- |--------|-------------|---------|
348
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
349
- | `-p, --period <type>` | Fiscal period: `quarterly`, `annual`, `ytd`, `ttm` **(required)** | — |
350
- | `-s, --sort <dir>` | Sort direction (`asc` / `desc`) | `desc` |
351
- | `-l, --limit <n>` | Maximum results | `10` |
352
- | `--offset <n>` | Pagination offset | `0` |
353
- | `--detailed` | Include formula, accession number, HTML tag info | — |
354
- | `--presentation` | Return nested tree structure | — |
355
- | `--as-reported` | Use as-reported data instead of standardized | — |
356
- | `--with-formula` | Include formula info (only with `--detailed`) | — |
357
-
358
- > `--detailed` and `--presentation` are mutually exclusive.
359
-
360
- #### `financials income-statement`
361
-
362
- ```bash
363
- invd financials income-statement -i AAPL -p annual
364
- invd financials income-statement -i AAPL -p quarterly --detailed
365
- invd financials income-statement -i AAPL -p annual --presentation
366
- invd financials income-statement -i AAPL -p annual --as-reported
367
- ```
368
-
369
- #### `financials balance-sheet`
370
-
371
- ```bash
372
- invd financials balance-sheet -i MSFT -p quarterly --limit 4
373
- ```
374
-
375
- #### `financials cash-flow`
376
-
377
- ```bash
378
- invd financials cash-flow -i GOOGL -p annual
379
- ```
380
-
381
- #### `financials snapshot`
382
-
383
- Fetch the latest complete financial snapshot. Uses comma-separated identifiers instead of a single identifier.
384
-
385
- | Option | Description | Default |
386
- |--------|-------------|---------|
387
- | `-i, --identifiers <tickers>` | Comma-separated ticker symbols or CIKs **(required)** | — |
388
- | `-p, --period <type>` | Fiscal period **(required)** | — |
389
- | `--calendar-year <year>` | Filter by calendar year | — |
390
- | `--calendar-quarter <q>` | Filter by calendar quarter | — |
391
- | `--detailed` | Include detailed info | — |
392
- | `--presentation` | Return nested tree structure | — |
393
- | `--as-reported` | Use as-reported data | — |
394
-
395
- ```bash
396
- invd financials snapshot -i AAPL,MSFT,GOOGL -p annual
397
- invd financials snapshot -i AAPL -p quarterly --calendar-year 2024 --calendar-quarter 3
398
- ```
399
-
400
- ---
401
-
402
- ### metrics
403
-
404
- Financial metrics, ratios, and growth rates.
405
-
406
- #### `metrics ratios`
407
-
408
- Fetch financial ratios.
409
-
410
- | Option | Description | Default |
411
- |--------|-------------|---------|
412
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
413
- | `-p, --period <type>` | Fiscal period **(required)** | — |
414
- | `--category <cat>` | Filter: `valuation`, `profitability`, `liquidity`, `solvency` | — |
415
- | `-s, --sort <dir>` | Sort direction | `desc` |
416
- | `-l, --limit <n>` | Maximum results | `10` |
417
- | `--offset <n>` | Pagination offset | `0` |
418
-
419
- ```bash
420
- invd metrics ratios -i AAPL -p annual --category profitability
421
- ```
422
-
423
- #### `metrics cagr`
424
-
425
- Fetch compound annual growth rate metrics.
426
-
427
- | Option | Description | Default |
428
- |--------|-------------|---------|
429
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
430
- | `--period-years <years>` | CAGR period: `3`, `5`, `10` | — |
431
- | `-s, --sort <dir>` | Sort direction | `desc` |
432
- | `-l, --limit <n>` | Maximum results | `10` |
433
- | `--offset <n>` | Pagination offset | `0` |
434
-
435
- ```bash
436
- invd metrics cagr -i AAPL --period-years 5
437
- ```
438
-
439
- #### `metrics growth`
440
-
441
- Fetch growth metrics.
442
-
443
- | Option | Description | Default |
444
- |--------|-------------|---------|
445
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
446
- | `-p, --period <type>` | Fiscal period **(required)** | — |
447
- | `--growth-type <type>` | `year_over_year` or `quarter_over_quarter` | — |
448
- | `-s, --sort <dir>` | Sort direction | `desc` |
449
- | `-l, --limit <n>` | Maximum results | `10` |
450
- | `--offset <n>` | Pagination offset | `0` |
451
-
452
- ```bash
453
- invd metrics growth -i MSFT -p quarterly --growth-type year_over_year
454
- ```
455
-
456
- ---
457
-
458
- ### segments
459
-
460
- Segmented financial data.
461
-
462
- #### `segments list`
463
-
464
- | Option | Description | Default |
465
- |--------|-------------|---------|
466
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
467
- | `-p, --period <type>` | Fiscal period **(required)** | — |
468
- | `--segment-id <id>` | Filter by segment ID | — |
469
- | `--detailed` | Include detailed breakdown | — |
470
- | `-s, --sort <dir>` | Sort direction | `desc` |
471
- | `-l, --limit <n>` | Maximum results | `10` |
472
- | `--offset <n>` | Pagination offset | `0` |
473
-
474
- ```bash
475
- invd segments list -i AAPL -p annual
476
- invd segments list -i AAPL -p annual --detailed
477
- ```
478
-
479
- ---
480
-
481
- ### filings
482
-
483
- SEC filings data.
484
-
485
- #### `filings list`
486
-
487
- Fetch SEC filings for a company.
488
-
489
- | Option | Description | Default |
490
- |--------|-------------|---------|
491
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
492
- | `--form-type <type>` | Filter by form type (e.g., `10-K`, `10-Q`, `8-K`) | — |
493
- | `-s, --sort <dir>` | Sort direction | `desc` |
494
- | `-l, --limit <n>` | Maximum results | `40` |
495
- | `--offset <n>` | Pagination offset | `0` |
496
-
497
- ```bash
498
- invd filings list -i AAPL --form-type 10-K
499
- ```
500
-
501
- #### `filings search`
502
-
503
- Search SEC filings using natural language.
504
-
505
- | Option | Description |
506
- |--------|-------------|
507
- | `-r, --request <text>` | Search query **(required)** |
508
- | `-i, --identifier <ticker>` | Filter by company |
509
- | `--accession-number <num>` | Filter by accession number |
510
-
511
- ```bash
512
- invd filings search -r "revenue recognition policy changes" -i AAPL
513
- ```
514
-
515
- #### `filings sections`
516
-
517
- Fetch SEC filing sections.
518
-
519
- | Option | Description |
520
- |--------|-------------|
521
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** |
522
- | `--form-type <type>` | Form type: `10-Q`, `10-K`, `8-K` **(required)** |
523
- | `--section-id <id>` | Filter by section ID |
524
- | `--accession-number <num>` | Filter by accession number |
525
- | `--fiscal-year <year>` | Filter by fiscal year |
526
- | `--fiscal-quarter <q>` | Filter by fiscal quarter |
527
-
528
- ```bash
529
- invd filings sections -i AAPL --form-type 10-K --section-id risk_factors
530
- ```
531
-
532
- #### `filings form-types`
533
-
534
- List available SEC form types.
535
-
536
- | Option | Description |
537
- |--------|-------------|
538
- | `-i, --identifier <ticker>` | Filter by company (optional) |
539
-
540
- ```bash
541
- invd filings form-types
542
- invd filings form-types -i AAPL
543
- ```
544
-
545
- ---
546
-
547
263
  ### earnings
548
264
 
549
- Earnings calls: calendar, transcripts, Q&A, guidance and KPIs, audio, slides, documents, search. The live transcript (`ws listen --earnings`), audio, slides, the live stream and webhooks need the **PRO** plan (calendar, events and `live` need LITE, the other reads STANDARD); a `403` names the plan a route needs.
550
-
551
- **Selecting a call.** Commands about one call (marked *selector* below) take either `--event <event_id>` (a UUID from `earnings events` / `earnings calendar`; wins over the rest), or `-i, --identifier <ticker|cik>` with `--year <n>` + `--quarter <n>` (the company's fiscal quarter) or `--date <YYYY-MM-DD>` (the New York call day).
265
+ Earnings calls and the companies' IR libraries, including non-earnings events (investor days, conferences, AGMs:
266
+ `--event-type`). The live transcript (`ws listen --earnings`), audio, slides, the live stream and webhooks need the
267
+ **PRO** plan (calendar, events and `live` need LITE, the other reads STANDARD); a `403` names the plan a route needs.
552
268
 
553
- **Saving files.** `--output <file>` saves a transcript, press release, recording or deck (`documents --output <dir>` saves every document); an existing file is only replaced with `--force`. Without `--output` the media commands print **presigned URLs that expire after 15 minutes**.
269
+ **Selecting a call.** Commands about one call take either `--event-id <event_id>` (a UUID from `earnings events` /
270
+ `earnings calendar`; wins over the rest), or `-i, --identifier <ticker|cik>` with `--year <n>` + `--quarter <n>` (the
271
+ company's fiscal quarter) or `--date <YYYY-MM-DD>` (the call day: a calendar day in New York time (America/New_York); a
272
+ call without a confirmed time is listed on its announced date). An incomplete selector is refused by the API (`400`).
554
273
 
555
- #### `earnings calendar`
274
+ The seven hand-written earnings commands download or render what one call returns:
556
275
 
557
- Upcoming and recent calls across companies.
276
+ | Command | What it adds |
277
+ |---------|--------------|
278
+ | `earnings transcript` | `--format speakers\|text\|words\|sections\|cleaned`; `--transcript-version <n>` (not `--version`, which prints the CLI version) / `--as-of <iso>`; `-o, --output <file>` saves it as text. The header shows where the Q&A begins; `--json` carries it as `qa_start_ms` |
279
+ | `earnings press-release` | `--body` includes the release text; `-o` saves it |
280
+ | `earnings audio` | The recording as a presigned URL, or `-o` to save it |
281
+ | `earnings slides` | `--markdown` (each page's text), `--pages <range>`, `-o` saves the deck PDF |
282
+ | `earnings documents` | `--kind <list>`, `--body`; `-o <dir>` saves every document as `<kind>-<document_id>.<ext>` |
283
+ | `earnings company-documents` | `-i` (required), `--section`, `--kind`, `--year`, `--period`, `--event-id`; `-o <dir>` saves every stored file as `<year>-<kind>-<document_id>.<ext>` |
284
+ | `earnings document` | `--document-id` (from `company-documents` / `document-search`): metadata and signed URLs, `--pages` the per-page text, `-o` the file |
558
285
 
559
- | Option | Description | Default |
560
- |--------|-------------|---------|
561
- | `--from <date>` / `--to <date>` | New York days (at most 92 days) | today / from + 14 days |
562
- | `--status <list>` | `estimated`, `unconfirmed`, `confirmed`, `postponed`, `cancelled` (comma-separated) | — |
563
- | `--session <session>` | `bmo`, `amc`, `intraday` | — |
564
- | `--exchange <exchange>` | Exchange | — |
565
- | `--event-type <type>` | `earnings_call`, `investor_day`, `conference`, `agm`, `other`, or `all` (every type) | `earnings_call` |
566
- | `-s, --sort` / `-l, --limit` / `--offset` | Sort, page size (1–500), offset | — |
567
-
568
- ```bash
569
- invd earnings calendar --from 2026-10-26 --to 2026-10-30 --status confirmed
570
- ```
571
-
572
- #### `earnings events`
573
-
574
- A company's calls.
575
-
576
- | Option | Description |
577
- |--------|-------------|
578
- | `-i, --identifier <ticker>` | Ticker or CIK **(required)** |
579
- | `--from <date>` / `--to <date>` | Call day range |
580
- | `--event-type <type>` | `earnings_call`, `investor_day`, `conference`, `agm`, `other`, or `all` (default: every type) |
581
- | `--observations` | Include the date / time observations per call |
582
- | `-s, --sort` / `-l, --limit` / `--offset` | Sort, page size (1–200), offset |
583
-
584
- ```bash
585
- invd earnings events -i AAPL -s desc -l 4
586
- ```
587
-
588
- #### `earnings live`
589
-
590
- Calls being captured right now (`live_audio` = a live stream exists, `live_prices` = `ws listen --prices` delivers price ticks for the call).
591
-
592
- ```bash
593
- invd earnings live
594
- ```
595
-
596
- #### `earnings event`
597
-
598
- One call with its date / time observations: `invd earnings event <event_id>`.
599
-
600
- ```bash
601
- invd earnings event 0b9d6f43-6b1e-4c39-9d3a-2f6a3c1e8b11
602
- ```
603
-
604
- #### `earnings transcript` *(selector)*
605
-
606
- | Option | Description |
607
- |--------|-------------|
608
- | `--format <format>` | `speakers` (default), `text`, `words`, `sections`, `cleaned` |
609
- | `--transcript-version <n>` | A published version (`earnings versions`); not `--version`, which prints the CLI version |
610
- | `--as-of <iso>` | The version current at that instant |
611
- | `-o, --output <file>` / `--force` | Save the transcript as text |
612
-
613
- The header shows where the Q&A begins ("Q&A starts at 41:07") when the call has one; `--json` carries it as `qa_start_ms` (milliseconds, `null` without a Q&A).
286
+ **Saving files.** An existing `--output` file is only replaced with `--force`; without `--output` the media commands
287
+ print **presigned URLs that expire after 15 minutes**. With `documents` / `company-documents --output`, a row without a
288
+ download URL (a link-only `sec_filing` or `webcast`, or a file the API could not fetch — use its `source_url`) is never
289
+ skipped silently: each gets a warning on stderr, followed by a count (`2 of 3 documents saved; 1 skipped`). The exit
290
+ code is 0 when at least one document was saved (or the list was empty) and 1 when documents were listed but none could
291
+ be saved. An interrupted download (Ctrl-C) never leaves a partial file behind.
614
292
 
615
293
  ```bash
616
294
  invd earnings transcript -i AAPL --year 2026 --quarter 4 --output aapl-q4.txt
617
- ```
618
-
619
- #### `earnings versions` *(selector)*
620
-
621
- Published transcript versions (final, corrected, …).
622
-
623
- ```bash
624
- invd earnings versions -i AAPL --date 2026-10-30
625
- ```
626
-
627
- #### `earnings transcript-diff` *(selector)*
628
-
629
- | Option | Description |
630
- |--------|-------------|
631
- | `--from <n>` | Older version **(required)** |
632
- | `--to <n>` | Newer version (default: the current one) |
633
-
634
- ```bash
635
- invd earnings transcript-diff --event <event_id> --from 1
636
- ```
637
-
638
- #### `earnings qa` *(selector)*
639
-
640
- Question / answer pairs with the analyst and the answering executives (`-l, --limit` 1–200, `--offset`).
641
-
642
- ```bash
643
- invd earnings qa -i NVDA --year 2027 --quarter 2
644
- ```
645
-
646
- #### `earnings participants` *(selector)*
647
-
648
- Speakers of the call (`--evidence` adds the quotes each name was resolved from).
649
-
650
- ```bash
651
- invd earnings participants --event <event_id> --evidence
652
- ```
653
-
654
- #### `earnings analysts`
655
-
656
- Analysts on a company's calls (`-i` **required**, `-l, --limit` 1–100, `--offset`).
657
-
658
- ```bash
659
- invd earnings analysts -i MSFT
660
- ```
661
-
662
- #### `earnings person`
663
-
664
- One person's call appearances: `invd earnings person <person_id>` (`-l, --limit` 1–200, `--offset`).
665
-
666
- ```bash
667
- invd earnings person <person_id>
668
- ```
669
-
670
- #### `earnings press-release` *(selector)*
671
-
672
- | Option | Description |
673
- |--------|-------------|
674
- | `--body` | Include the release text |
675
- | `-o, --output <file>` / `--force` | Save the release text |
676
-
677
- ```bash
678
295
  invd earnings press-release -i AAPL --year 2026 --quarter 4 --body
679
- ```
680
-
681
- #### `earnings extractions` *(selector)*
682
-
683
- | Option | Description |
684
- |--------|-------------|
685
- | `--kind <kind>` | `guidance` (default) or `kpi` |
686
- | `--review <filter>` | Guidance review filter: `approved`, `auto`, `all` |
687
- | `-l, --limit` / `--offset` | Page size (1–500), offset |
688
-
689
- ```bash
690
- invd earnings extractions --event <event_id> --kind kpi
691
- ```
692
-
693
- #### `earnings guidance-history`
694
-
695
- A company's guidance for one metric across calls.
696
-
697
- | Option | Description |
698
- |--------|-------------|
699
- | `-i, --identifier <ticker>` | Ticker or CIK **(required)** |
700
- | `--metric <metric>` | Normalized metric, e.g. `revenue`, `eps_non_gaap`, `segment:iphone` **(required)** |
701
- | `--period-kind <kind>` | `quarter`, `fiscal_year`, `half`, `other` |
702
- | `--basis <basis>` | `gaap`, `non_gaap`, `unknown` |
703
- | `-l, --limit <n>` | Series entries (1–40) |
704
-
705
- ```bash
706
- invd earnings guidance-history -i AAPL --metric revenue --period-kind quarter
707
- ```
708
-
709
- #### `earnings diff` *(selector)*
710
-
711
- What changed against the prior call: similarity, tone, hedging, new / dropped topics, slide changes (`--vs prior`, the only base).
712
-
713
- ```bash
714
- invd earnings diff -i AAPL --year 2026 --quarter 4
715
- ```
716
-
717
- #### `earnings metrics` *(selector)*
718
-
719
- Call structure metrics (length, Q&A share, question count, …).
720
-
721
- ```bash
722
- invd earnings metrics --event <event_id>
723
- ```
724
-
725
- #### `earnings prosody` *(selector)*
726
-
727
- Speech timing, pitch and energy per speaker (`--section all|prepared|qa`).
728
-
729
- ```bash
730
- invd earnings prosody --event <event_id> --section qa
731
- ```
732
-
733
- #### `earnings price-attribution` *(selector)*
734
-
735
- Minute-level price moves during the call (returns in basis points, no prices or volume) next to what was being said in each minute, plus the largest minutes (`top_minutes`) and how the recording was anchored to wall-clock time (`anchor_kind`, `anchor_lag_ms`, `anchor_uncertainty_s`). This is temporal coincidence, not attribution of cause; pre-market and after-hours bars are sparse. STANDARD plan, 1 credit; a `404 price_attribution_unavailable` means the call has not been attributed yet. During a live call the minute rows arrive as each minute closes (`live: true`, `settled: false`, the summary fields null, `top_minutes` empty): the CLI prints `LIVE — minute rows so far, not settled; the post-call run replaces them` and only the known summary fields.
736
-
737
- ```bash
738
- invd earnings price-attribution --event <event_id>
739
- ```
740
-
741
- #### `earnings audio` *(selector)*
742
-
743
- The recording as a presigned URL, or `-o, --output <file>` (+ `--force`) to save it.
744
-
745
- ```bash
746
- invd earnings audio --event <event_id> --output call.mp3
747
- ```
748
-
749
- #### `earnings slides` *(selector)*
750
-
751
- | Option | Description |
752
- |--------|-------------|
753
- | `--markdown` | Include each page's extracted text |
754
- | `--pages <range>` | Page or range, e.g. `3` or `1-5` |
755
- | `-o, --output <file>` / `--force` | Save the deck PDF |
756
-
757
- ```bash
296
+ invd earnings audio --event-id <event_id> --output call.mp3
758
297
  invd earnings slides -i AAPL --year 2026 --quarter 4 --output deck.pdf
298
+ invd earnings documents --event-id <event_id> --output ./docs
299
+ invd earnings company-documents -i AAPL --kind investor_day_deck --output ./ir-docs
300
+ invd earnings document --document-id <document_id> --pages
759
301
  ```
760
302
 
761
- #### `earnings documents` *(selector)*
762
-
763
- Investor documents of the call (CFO commentary, data sheets, letters, filings).
764
-
765
- | Option | Description |
766
- |--------|-------------|
767
- | `--kind <list>` | `cfo_commentary`, `financial_data`, `shareholder_letter`, `fact_sheet`, `company_transcript`, `sec_filing`, `infographic`, `other` |
768
- | `--body` | Include the extracted text |
769
- | `-l, --limit` / `--offset` | Page size (1–100), offset |
770
- | `-o, --output <dir>` / `--force` | Save every document as `<kind>-<document_id>.<ext>` |
771
-
772
- With `--output`, a document without a download URL (a link-only `sec_filing`, or a file the API could not fetch — use its `source_url`) is never skipped silently: each gets a warning on stderr, followed by a count (`2 of 3 documents saved; 1 skipped`). The exit code is 0 when at least one document was saved (or the list was empty) and 1 when documents were listed but none could be saved. An interrupted download (Ctrl-C) never leaves a partial file behind.
773
-
774
- ```bash
775
- invd earnings documents --event <event_id> --output ./docs
776
- ```
777
-
778
- #### `earnings search`
779
-
780
- Semantic search over call transcripts and slides.
781
-
782
- | Option | Description |
783
- |--------|-------------|
784
- | `-q, --query <text>` | Search text **(required)** |
785
- | `--event <event_id>` / `-i, --identifier <ticker>` | Only this call / company |
786
- | `--from <date>` / `--to <date>` | Call day range |
787
- | `--type <type>` | `transcript`, `qa`, `preparedRemarks`, `presentation` |
788
- | `-l, --limit <n>` | Passages (1–8) |
789
-
790
- ```bash
791
- invd earnings search -q "data center demand" -i NVDA
792
- ```
793
-
794
- #### `earnings stream` *(selector)*
795
-
796
- The live HLS audio URL of a call in progress (PRO; `status` = `available`, `not_started`, `ended` or `disabled`). Play it with `ffplay` or VLC; the URL expires (`expires_at`).
797
-
798
- ```bash
799
- invd earnings stream --event <event_id>
800
- ```
801
-
802
- ---
803
-
804
- ### ownership
805
-
806
- Institutional ownership data.
807
-
808
- #### `ownership holdings-by-investor`
809
-
810
- Fetch all holdings for an institutional investor.
811
-
812
- | Option | Description | Default |
813
- |--------|-------------|---------|
814
- | `--cik <cik>` | Institution CIK **(required)** | — |
815
- | `-s, --sort <dir>` | Sort direction | `desc` |
816
- | `-l, --limit <n>` | Maximum results | `100` |
817
- | `--offset <n>` | Pagination offset | `0` |
818
-
819
- ```bash
820
- invd ownership holdings-by-investor --cik 0001067983
821
- ```
822
-
823
- #### `ownership holdings-by-company`
824
-
825
- Fetch institutional holders of a company.
826
-
827
- | Option | Description | Default |
828
- |--------|-------------|---------|
829
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
830
- | `--min-value <n>` | Minimum holding value filter | — |
831
- | `-s, --sort <dir>` | Sort direction | `desc` |
832
- | `-l, --limit <n>` | Maximum results | `100` |
833
- | `--offset <n>` | Pagination offset | `0` |
834
-
835
- ```bash
836
- invd ownership holdings-by-company -i AAPL --min-value 1000000
837
- ```
838
-
839
- #### `ownership transactions`
840
-
841
- Fetch institutional ownership transactions.
842
-
843
- | Option | Description | Default |
844
- |--------|-------------|---------|
845
- | `--cik <cik>` | Institution CIK | — |
846
- | `-i, --identifier <ticker>` | Ticker symbol or CIK | — |
847
- | `--start-date <date>` | Start date (YYYY-MM-DD) | — |
848
- | `--end-date <date>` | End date (YYYY-MM-DD) | — |
849
- | `--type <type>` | Transaction type: `new_buy`, `added`, `reduced`, `sold_out` | — |
850
- | `--calendar-year <year>` | Filter by calendar year | — |
851
- | `--calendar-quarter <q>` | Filter by calendar quarter | — |
852
- | `-s, --sort <dir>` | Sort direction | `desc` |
853
- | `-l, --limit <n>` | Maximum results | `100` |
854
- | `--offset <n>` | Pagination offset | `0` |
855
-
856
- ```bash
857
- invd ownership transactions -i AAPL --type new_buy
858
- invd ownership transactions --cik 0001067983 --calendar-year 2024
859
- ```
860
-
861
- #### `ownership institutions`
862
-
863
- List institutional investors.
864
-
865
- | Option | Description | Default |
866
- |--------|-------------|---------|
867
- | `--ciks <ciks>` | Comma-separated institution CIKs | — |
868
- | `-s, --sort <dir>` | Sort direction | `asc` |
869
- | `-l, --limit <n>` | Maximum results | `100` |
870
- | `--offset <n>` | Pagination offset | `0` |
871
-
872
- ```bash
873
- invd ownership institutions
874
- invd ownership institutions --ciks 0001067983,0001364742
875
- ```
876
-
877
- ---
878
-
879
- ### insider-trades
880
-
881
- Insider trading data.
882
-
883
- #### `insider-trades list`
884
-
885
- | Option | Description | Default |
886
- |--------|-------------|---------|
887
- | `-i, --identifier <ticker>` | Ticker symbol or CIK **(required)** | — |
888
- | `--start-date <date>` | Start date (YYYY-MM-DD) | — |
889
- | `--end-date <date>` | End date (YYYY-MM-DD) | — |
890
- | `--acquired-disposed <ad>` | `A` (acquisition) or `D` (disposition) | — |
891
- | `-s, --sort <dir>` | Sort direction | `desc` |
892
- | `-l, --limit <n>` | Maximum results | `100` |
893
- | `--offset <n>` | Pagination offset | `0` |
894
-
895
- ```bash
896
- invd insider-trades list -i AAPL
897
- invd insider-trades list -i TSLA --acquired-disposed D --limit 20
898
- ```
899
-
900
- ---
901
-
902
- ### ipos
903
-
904
- IPO listings.
905
-
906
- #### `ipos list`
907
-
908
- | Option | Description | Default |
909
- |--------|-------------|---------|
910
- | `--start-date <date>` | Start date (YYYY-MM-DD) | — |
911
- | `--end-date <date>` | End date (YYYY-MM-DD) | — |
912
- | `-s, --sort <dir>` | Sort direction | `desc` |
913
- | `-l, --limit <n>` | Maximum results | `100` |
914
- | `--offset <n>` | Pagination offset | `0` |
915
-
916
- ```bash
917
- invd ipos list --start-date 2024-01-01 --end-date 2024-12-31
918
- ```
919
-
920
- ---
921
-
922
- ### market
923
-
924
- Market data.
925
-
926
- #### `market holidays`
927
-
928
- Fetch market holidays.
929
-
930
- | Option | Description | Default |
931
- |--------|-------------|---------|
932
- | `-s, --sort <dir>` | Sort direction | `asc` |
933
- | `-l, --limit <n>` | Maximum results | `100` |
934
- | `--offset <n>` | Pagination offset | `0` |
935
-
936
- ```bash
937
- invd market holidays
938
- ```
939
-
940
- ---
941
-
942
- ### metadata
943
-
944
- API metadata and available identifiers.
945
-
946
- #### `metadata metrics`
947
-
948
- List all available standardized financial metrics.
949
-
950
- ```bash
951
- invd metadata metrics
952
- ```
953
-
954
- #### `metadata section-ids`
955
-
956
- List available section IDs for SEC filings.
957
-
958
- ```bash
959
- invd metadata section-ids
960
- ```
303
+ Company documents and document-search hits are company-published material, shown as published: quote them as passages
304
+ from company-published documents, not verified facts. Price attribution (`earnings price-attribution`) is temporal
305
+ coincidence, not attribution of cause.
961
306
 
962
307
  ---
963
308
 
964
309
  ### webhooks
965
310
 
966
- Earnings-call webhook subscriptions (PRO): signed, retried `POST`s of the call lifecycle to your HTTPS endpoint. Events: `earnings_call.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_provisional`, `.transcript_ready`, `.transcript_corrected`, `.assets_ready`, `.keyword_hit` (one delivery per mention of one of the subscription's `--keywords` on a live call, with the speaker, `start_ms` and the sentence), `.guidance_flash` (a guidance number spoken live, before the final transcript), and `ping`. Deliveries carry `X-Invinite-Signature: t=…,v1=…` (HMAC-SHA256 of `<t>.<raw body>` with the secret) and are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h.
311
+ Earnings-call webhook subscriptions (PRO): signed, retried `POST`s of the call lifecycle to your HTTPS endpoint. Events: `earnings_call.scheduled`, `.rescheduled`, `.started`, `.ended`, `.transcript_provisional`, `.transcript_ready`, `.transcript_corrected`, `.assets_ready`, `.keyword_hit` (one delivery per mention of one of the subscription's keywords on a live call, with the speaker, `start_ms` and the sentence), `.guidance_flash` (a guidance number spoken live, before the final transcript), and `ping`. Deliveries carry `X-Invinite-Signature: t=…,v1=…` (HMAC-SHA256 of `<t>.<raw body>` with the secret) and are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h.
967
312
 
968
- | Command | Description |
969
- |---------|-------------|
970
- | `webhooks list` | Your account's subscriptions (never the secret, only `secret_hint`) |
971
- | `webhooks create --url <url> --events <list> [--ciks <list>] [--keywords <list>]` | Create one (max 10 per account; `--ciks` max 10, default every company; `--keywords` max 20 of 2–64 chars, matched on every live call for `.keyword_hit`). **Prints the signing secret once** |
972
- | `webhooks update <id> [--keywords <list>] [--ciks <list>] [--events <list>] [--active true\|false]` | Change a subscription (`PATCH`; at least one option; an empty `--keywords ""` / `--ciks ""` clears the list; `--active false` pauses it, `true` resumes it and resets the failure counters) |
973
- | `webhooks delete <id>` | Delete a subscription |
974
- | `webhooks rotate-secret <id>` | New secret (printed once); the old one stays valid until `previous_secret_expires_at` (5 min) |
975
- | `webhooks test <id>` | Queue a signed `ping` delivery |
976
- | `webhooks deliveries <id>` | The last 100 attempts: `delivery_id`, `event`, `attempt`, `status`, `response_status`, `duration_ms`, `at`, `next_attempt_at` |
313
+ `webhooks create` and `webhooks update` take the request body as `--body '<json>'` or `--body-file <path>` (`-` reads
314
+ stdin); the other commands take the subscription as `--id`. `create` **prints the signing secret once**; `rotate-secret`
315
+ prints a new one (the old one stays valid for 5 minutes); `test` queues a signed `ping`; `deliveries` lists the last
316
+ 100 attempts.
977
317
 
978
318
  ```bash
979
- invd webhooks create --url https://hooks.example.com/invinite --events earnings_call.transcript_ready,earnings_call.started --ciks 320193
980
- invd webhooks create --url https://hooks.example.com/alerts --events earnings_call.keyword_hit --keywords tariffs,buyback # every company
981
- invd webhooks update <id> --keywords tariffs,china,buyback
982
- invd webhooks update <id> --active false
983
- invd webhooks test <id>
984
- invd webhooks deliveries <id>
319
+ invd webhooks create --body '{"url":"https://hooks.example.com/invinite","events":["earnings_call.transcript_ready","earnings_call.started"],"filters":{"ciks":["320193"]}}'
320
+ invd webhooks create --body '{"url":"https://hooks.example.com/alerts","events":["earnings_call.keyword_hit"],"filters":{"keywords":["tariffs","buyback"]}}' # every company
321
+ invd webhooks update --id <id> --body '{"keywords":["tariffs","china","buyback"]}'
322
+ invd webhooks update --id <id> --body '{"active":false}'
323
+ invd webhooks test --id <id>
324
+ invd webhooks deliveries --id <id>
985
325
  ```
986
326
 
987
327
  ---
@@ -1031,19 +371,20 @@ invd ws listen --all-live --keywords tariffs --min-rank 500
1031
371
  invd ws listen --all-live --keywords tariffs --json | jq -r 'select(.type=="keyword_hit") | "\(.symbol) \(.speaker_name): \(.text)"'
1032
372
  ```
1033
373
 
1034
- **Live prices.** With `--prices` the same per-call subscription also delivers a `price_tick` frame (PRO, at most one per second, only for seconds with a trade — pre-market and after-hours seconds are sparse). On a terminal it is one line rewritten in place — `[16:32:05 ET · 12:34] AAPL 336.08 +42.5 bp since call −127.5 bp on day (vol 1,240)`: New York time, the call clock of the transcript (`m:ss`, the same clock as the segments' `[m:ss]`), the price, the return since the last trade before the call and the day's return vs the previous close; green / red by the since-call return, dim from the snapshot fallback. The line shows temporal coincidence with what is being said, not attribution of cause. Price ticks follow one call: `--all-live --prices` is refused (as by the API). With `--json` the frames are emitted as they arrive: `invd ws listen --earnings <event_id> --prices --json | jq 'select(.type=="price_tick")'`. The minute rows so far are `invd earnings price-attribution --event <event_id>`.
374
+ **Live prices.** With `--prices` the same per-call subscription also delivers a `price_tick` frame (PRO, at most one per second, only for seconds with a trade — pre-market and after-hours seconds are sparse). On a terminal it is one line rewritten in place — `[16:32:05 ET · 12:34] AAPL 336.08 +42.5 bp since call −127.5 bp on day (vol 1,240)`: New York time, the call clock of the transcript (`m:ss`, the same clock as the segments' `[m:ss]`), the price, the return since the last trade before the call and the day's return vs the previous close; green / red by the since-call return, dim from the snapshot fallback. The line shows temporal coincidence with what is being said, not attribution of cause. Price ticks follow one call: `--all-live --prices` is refused (as by the API). With `--json` the frames are emitted as they arrive: `invd ws listen --earnings <event_id> --prices --json | jq 'select(.type=="price_tick")'`. The minute rows so far are `invd earnings price-attribution --event-id <event_id>`.
1035
375
 
1036
376
  ```bash
1037
377
  invd ws listen --earnings <event_id> --prices
1038
378
  ```
1039
379
 
1040
- Finals are named from the newest speaker-name snapshot (`Speaker A` until a name is known). A `gap` line marks a seq range with no final yet (a late final may still follow on the same subscription, so finals can print slightly out of order); `resume_unavailable` means missed finals cannot be replayed right now — live delivery continues and the API back-fills them once it can. Neither needs a re-subscribe. After a reconnect the listener resumes after the last final it printed; it exits once the final transcript is ready (`invd earnings transcript --event <id>`). With `--json` every frame is one JSON line (NDJSON), e.g. `invd ws listen --earnings 320193 --json | jq -r 'select(.type=="transcript_segment") | .text'`.
380
+ Finals are named from the newest speaker-name snapshot (`Speaker A` until a name is known). A `gap` line marks a seq range with no final yet (a late final may still follow on the same subscription, so finals can print slightly out of order); `resume_unavailable` means missed finals cannot be replayed right now — live delivery continues and the API back-fills them once it can. Neither needs a re-subscribe. After a reconnect the listener resumes after the last final it printed; it exits once the final transcript is ready (`invd earnings transcript --event-id <id>`). With `--json` every frame is one JSON line (NDJSON), e.g. `invd ws listen --earnings 320193 --json | jq -r 'select(.type=="transcript_segment") | .text'`.
1041
381
 
1042
382
  ---
1043
383
 
1044
384
  ## Output Formats
1045
385
 
1046
- By default, data is displayed as formatted tables with aligned columns and number formatting.
386
+ Each data command prints a table, a key/value list or JSON according to its operation; `--json` prints the API's raw
387
+ response.
1047
388
 
1048
389
  ```bash
1049
390
  # Default table output
@@ -1053,20 +394,17 @@ invd company search -q Apple
1053
394
  invd company search -q Apple --json
1054
395
 
1055
396
  # Pipe to jq
1056
- invd financials income-statement -i AAPL -p annual --json | jq '.data[0]'
397
+ invd financials income-statement -i AAPL -p annual --json | jq '.companies[0]'
1057
398
  ```
1058
399
 
1059
- Financial statements with `--presentation` are displayed as indented trees showing the hierarchical structure of line items.
1060
-
1061
400
  ## Pagination
1062
401
 
1063
- Results are paginated by default. Use `--limit` and `--offset` to control pagination manually, or use `--all` to automatically fetch all pages:
402
+ Paginated commands take `-l, --limit` and `--offset`, or `--all` to follow every page (`next_url`; per-company commands
403
+ merge each company's pages). A command whose operation does not paginate refuses `--all` by name. Without `--limit`
404
+ the API's own page size applies.
1064
405
 
1065
406
  ```bash
1066
- # Get first 10 results (default)
1067
- invd company dividends -i AAPL
1068
-
1069
- # Get results 20-30
407
+ # Results 20-30
1070
408
  invd company dividends -i AAPL --limit 10 --offset 20
1071
409
 
1072
410
  # Fetch all results automatically