{"_id":"@agrigoryan/questrade-cli","name":"@agrigoryan/questrade-cli","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@agrigoryan/questrade-cli","version":"0.1.0","description":"CLI for the Questrade API. Agent-friendly, JSON-first output.","type":"module","bin":{"questrade":"bin/questrade"},"scripts":{"build":"bun build src/index.ts --outdir dist --target node","dev":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"bun run typecheck && bun run build"},"dependencies":{"@agrigoryan/questrade-api":"^0.1.0"},"devDependencies":{"@types/bun":"latest","typescript":"^5.7"},"author":{"name":"Aram Grigoryan"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/agrigoryan/questrade-cli.git"},"sideEffects":false,"_id":"@agrigoryan/questrade-cli@0.1.0","gitHead":"c2d0e9872d593638584833e368406e563684fefc","bugs":{"url":"https://github.com/agrigoryan/questrade-cli/issues"},"homepage":"https://github.com/agrigoryan/questrade-cli#readme","_nodeVersion":"24.7.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-8ffvFSiH5o2NMlAeQRKBZCjw0tFysHbmMLbk6HiYkK+tcTJh06Zsjq8bb+D8mp+azLVA2M9uWu2MMitHdW4DUA==","shasum":"ec1686a332520f1e3cbd77d792b679dcfec6d774","tarball":"https://registry.npmjs.org/@agrigoryan/questrade-cli/-/questrade-cli-0.1.0.tgz","fileCount":5,"unpackedSize":45386,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD1Xh96vkgvPMGVpJM+sauEQXmQ3kqYsk0jAYM9lYDboQIgRG7CU8DZqMl3veXE8HC7XEwz3YdvM2BKraCSukocx98="}]},"_npmUser":{"name":"agrigoryan","email":"aram.grigoryan@gmail.com"},"directories":{},"maintainers":[{"name":"agrigoryan","email":"aram.grigoryan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/questrade-cli_0.1.0_1770790470393_0.253020138579904"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T06:14:30.320Z","0.1.0":"2026-02-11T06:14:30.548Z","modified":"2026-02-11T06:14:30.733Z"},"maintainers":[{"name":"agrigoryan","email":"aram.grigoryan@gmail.com"}],"description":"CLI for the Questrade API. Agent-friendly, JSON-first output.","homepage":"https://github.com/agrigoryan/questrade-cli#readme","repository":{"type":"git","url":"git+https://github.com/agrigoryan/questrade-cli.git"},"author":{"name":"Aram Grigoryan"},"bugs":{"url":"https://github.com/agrigoryan/questrade-cli/issues"},"license":"MIT","readme":"# questrade-cli\n\nCLI for the [Questrade API](https://www.questrade.com/api/documentation). JSON-first output, agent-friendly. Built on [`@agrigoryan/questrade-api`](https://github.com/agrigoryan/questrade-api).\n\n## Features\n\n- Full Questrade v1 API coverage (accounts, markets, symbols, orders)\n- Real-time L1 quote and notification streaming via WebSocket (JSONL)\n- OAuth2 authentication with automatic token refresh\n- JSON output by default, table/CSV via `--format`\n- Auto-resolves account ID from flag, env var, or primary account\n- Named profiles for multi-account setups\n\n## Install\n\n```sh\nbun add -g @agrigoryan/questrade-cli\n# or\nnpm install -g @agrigoryan/questrade-cli\n```\n\n## Quick Start\n\n```bash\n# Authenticate with a refresh token from Questrade API Hub\nquestrade auth login --refresh-token <token>\n\n# List accounts\nquestrade accounts list\n\n# Get positions\nquestrade accounts positions\n\n# Search for a symbol\nquestrade symbols search --prefix AAPL\n\n# Get a quote\nquestrade markets quote --ids 8049\n```\n\nOr skip the login step with environment variables:\n\n```bash\nexport QUESTRADE_REFRESH_TOKEN=\"<token>\"\nexport QUESTRADE_ACCOUNT_ID=\"<account_number>\"\n\nquestrade accounts balances\n```\n\n## Authentication\n\nQuestrade uses OAuth2. Get a refresh token from the [Questrade API Hub](https://www.questrade.com/api).\n\n### Refresh Token Flow\n\n```bash\nquestrade auth login --refresh-token <token>\n```\n\n### Authorization Code Flow (partner apps)\n\n```bash\nquestrade auth callback --code <code> --client-id <id> --redirect-uri <uri>\n```\n\n### Practice (Demo) Account\n\n```bash\nquestrade auth login --refresh-token <token> --practice\n```\n\n### Check Status / Revoke\n\n```bash\nquestrade auth status\nquestrade auth revoke\n```\n\nCredentials are stored in `~/.config/questrade-cli/auth.json`. For named profiles: `~/.config/questrade-cli/profiles/<name>/auth.json`.\n\n## Account Resolution\n\nCommands that need an account number resolve it automatically:\n\n1. `--account <id>` flag (highest priority)\n2. `QUESTRADE_ACCOUNT_ID` env var\n3. Primary account from API\n4. If ambiguous: errors with available account list\n\n## Commands\n\n### Server Time\n\n```bash\nquestrade time\n```\n\n### Accounts\n\n```bash\nquestrade accounts list\nquestrade accounts positions [--account <id>]\nquestrade accounts balances [--account <id>]\nquestrade accounts orders [--account <id>] [--start <iso>] [--end <iso>] [--state All|Open|Closed] [--order-id <id>]\nquestrade accounts executions [--account <id>] [--start <iso>] [--end <iso>]\nquestrade accounts activities [--account <id>] --start <iso> --end <iso>\n```\n\n### Symbols\n\n```bash\nquestrade symbols search --prefix AAPL [--offset <n>]\nquestrade symbols get --ids 8049,9292\nquestrade symbols get --names AAPL,MSFT\nquestrade symbols options --id 8049\n```\n\n### Market Data\n\n```bash\nquestrade markets list\nquestrade markets quote --ids 8049,9292\nquestrade markets candles --id 8049 --start <iso> --end <iso> --interval OneDay\nquestrade markets quote-options --body-file <path>\nquestrade markets quote-options --underlying <id> --expiry <date> [--type Call|Put] [--min-strike N] [--max-strike N]\nquestrade markets quote-strategies --body-file <path>\n```\n\n#### Candle Intervals\n\n`OneMinute`, `TwoMinutes`, `ThreeMinutes`, `FourMinutes`, `FiveMinutes`, `TenMinutes`, `FifteenMinutes`, `TwentyMinutes`, `HalfHour`, `OneHour`, `TwoHours`, `FourHours`, `OneDay`, `OneWeek`, `OneMonth`, `OneYear`\n\n### Orders\n\nRequires partner/trade scope.\n\n```bash\nquestrade orders create [--account <id>] --body-file <path>\nquestrade orders update [--account <id>] --order-id <id> --body-file <path>\nquestrade orders cancel [--account <id>] --order-id <id>\nquestrade orders impact [--account <id>] --body-file <path>\n```\n\n### Streaming\n\n```bash\nquestrade stream quotes --ids 8049,9292\nquestrade stream notifications\n```\n\nStreams output one JSON object per line (JSONL). Runs until interrupted.\n\n> **Warning:** Streaming quotes freezes market data in other Questrade IQ platforms.\n\n## Global Flags\n\n| Flag | Description |\n|---|---|\n| `--format <json\\|table\\|csv>` | Output format (default: json) |\n| `--profile <name>` | Config profile (default: \"default\") |\n| `--account <id>` | Account number |\n| `--help` | Show help |\n| `--version` | Show version |\n\n## Environment Variables\n\n| Variable | Purpose |\n|---|---|\n| `QUESTRADE_REFRESH_TOKEN` | Auto-login without `auth login` |\n| `QUESTRADE_ACCOUNT_ID` | Default account for account-scoped commands |\n| `QUESTRADE_PRACTICE` | `1` = use practice/demo server |\n| `QUESTRADE_PROFILE` | Same as `--profile` |\n\n## Exit Codes\n\n| Code | Meaning |\n|---|---|\n| 0 | Success |\n| 1 | API error |\n| 2 | Auth error |\n| 3 | Usage error |\n\n## Development\n\n```sh\nbun install\nbun run dev                # run from source\nbun run typecheck          # type-check only\nbun run build              # bundle to dist/\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-87b5cd8ce68e53e893237cbda18c44df"}