How capctl commands map to the Capital.com Open API. "Covered" means a command
issues the request and surfaces the response (via tables or --json).
| Endpoint | Command | Status |
|---|
GET /time | session time | Covered |
GET /ping | session ping | Covered |
GET /session | session details | Covered |
GET /session/encryptionKey | session encryption-key | Covered (key fetch; encrypted-password login flow not used) |
POST /session | session login | Covered |
PUT /session | session switch | Covered |
DELETE /session | session logout | Covered |
| Endpoint | Command | Status |
|---|
GET /accounts | account list | Covered |
GET /accounts/preferences | account prefs-get | Covered |
PUT /accounts/preferences | account prefs-set (--hedging, --leverage) | Covered |
GET /history/activity | account history-activity | Covered |
GET /history/transactions | account history-transactions | Covered |
POST /accounts/topUp | account topup | Covered (demo only) |
| Endpoint | Command | Status |
|---|
GET /markets | market search | Covered |
GET /markets/{epic} | market get | Covered |
GET /marketnavigation | market nav-root | Covered |
GET /marketnavigation/{id} | market nav-node | Covered |
GET /prices/{epic} | market prices | Covered |
GET /clientsentiment | market sentiment A,B | Covered (batch) |
GET /clientsentiment/{id} | market sentiment A | Covered |
| Endpoint | Command | Status |
|---|
GET /positions | trade positions | Covered |
GET /positions/{dealId} | trade position | Covered |
POST /positions | trade preview-position → trade execute-position | Covered |
PUT /positions/{dealId} | trade amend-position | Covered |
DELETE /positions/{dealId} | trade close | Covered |
GET /workingorders | trade orders | Covered |
POST /workingorders | trade preview-order → trade execute-order | Covered |
PUT /workingorders/{dealId} | trade amend-order | Covered |
DELETE /workingorders/{dealId} | trade cancel | Covered |
GET /confirms/{dealReference} | trade confirm | Covered |
| Endpoint | Command | Status |
|---|
GET /watchlists | watchlist list | Covered |
POST /watchlists | watchlist create | Covered |
GET /watchlists/{id} | watchlist get | Covered |
PUT /watchlists/{id} | watchlist add | Covered |
DELETE /watchlists/{id} | watchlist delete | Covered |
DELETE /watchlists/{id}/{epic} | watchlist remove | Covered |
| Destination | Command | Status |
|---|
marketData.subscribe (quotes) | stream prices, stream alerts, stream portfolio | Covered |
OHLCMarketData.subscribe (candles) | stream candles | Covered |
ping (keep-alive) | (internal) | Covered |
Verified coverage. Every endpoint below is exercised by automated tests on the
real demo API across four cells — CLI positive, CLI negative, SDK positive, SDK
negative — generated from tests/e2e/endpoints.py (regenerate with
make coverage-doc). Both the CLI and the SDK cover the full Open API surface;
the only surface not exposed as a command is the RSA encrypted-password login flow
(the CLI uses the standard credential login). See the matrix at the bottom of this
file.
| Endpoint | HTTP / WS | CLI + | CLI − | SDK + | SDK − |
|---|
session.time | GET /time | tested | tested | tested | tested |
session.ping | GET /ping | tested | tested | tested | tested |
session.details | GET /session | tested | tested | tested | tested |
session.encryption_key | GET /session/encryptionKey | tested | tested | tested | tested |
session.login | POST /session | tested | tested | tested | tested |
session.switch | PUT /session | tested | tested | tested | tested |
session.logout | DELETE /session | tested | tested | tested | tested |
account.list | GET /accounts | tested | tested | tested | tested |
account.prefs_get | GET /accounts/preferences | tested | tested | tested | tested |
account.prefs_set | PUT /accounts/preferences | tested | tested | tested | tested |
account.history_activity | GET /history/activity | tested | tested | tested | tested |
account.history_transactions | GET /history/transactions | tested | tested | tested | tested |
account.topup | POST /accounts/topUp | tested | tested | tested | tested |
market.search | GET /markets | tested | tested | tested | tested |
market.get | GET /markets/{epic} | tested | tested | tested | tested |
market.nav_root | GET /marketnavigation | tested | tested | tested | tested |
market.nav_node | GET /marketnavigation/{id} | tested | tested | tested | tested |
market.prices | GET /prices/{epic} | tested | tested | tested | tested |
market.sentiment | GET /clientsentiment | tested | tested | tested | tested |
position.list | GET /positions | tested | tested | tested | tested |
position.get | GET /positions/{dealId} | tested | tested | tested | tested |
position.preview | (local) | tested | tested | tested | tested |
position.execute | POST /positions | tested | tested | tested | tested |
position.amend | PUT /positions/{dealId} | tested | tested | tested | tested |
position.close | DELETE /positions/{dealId} | tested | tested | tested | tested |
order.list | GET /workingorders | tested | tested | tested | tested |
order.preview | (local) | tested | tested | tested | tested |
order.execute | POST /workingorders | tested | tested | tested | tested |
order.amend | PUT /workingorders/{dealId} | tested | tested | tested | tested |
order.cancel | DELETE /workingorders/{dealId} | tested | tested | tested | tested |
trade.confirm | GET /confirms/{dealRef} | tested | tested | tested | tested |
watchlist.list | GET /watchlists | tested | tested | tested | tested |
watchlist.create | POST /watchlists | tested | tested | tested | tested |
watchlist.get | GET /watchlists/{id} | tested | tested | tested | tested |
watchlist.add | PUT /watchlists/{id} | tested | tested | tested | tested |
watchlist.remove | DELETE /watchlists/{id}/{epic} | tested | tested | tested | tested |
watchlist.delete | DELETE /watchlists/{id} | tested | tested | tested | tested |
stream.prices | WS marketData.subscribe | tested | tested | tested | tested |
stream.candles | WS OHLCMarketData.subscribe | tested | tested | tested | tested |
stream.alerts | WS quotes (level cross) | tested | tested | tested | tested |
stream.portfolio | WS quotes (position epics) | tested | tested | tested | tested |
Coverage: 164/164 applicable cells tested (100%) across 41 endpoints — CLI and SDK, positive and negative.