Unofficial PHP SDK for Tinkoff invest API V2. See official API documentation
It's recommended that you use Composer to install.
$ composer require a.treschilov/tinkoff-invest-api-sdk
- PHP 8.3 or newer
- grpc extension
sudo pecl install grpc
Add to php.ini
extension=grpc.so
<?php
declare(strict_types=1);
use ATreschilov\TinkoffInvestApiSdk\Exceptions\TIException as TIException;
use ATreschilov\TinkoffInvestApiSdk\TIClient;
require __DIR__ . '/../vendor/autoload.php';
/**
* Your personal Tinkoff Invest token
*
* @see https://tinkoff.github.io/investAPI/token/
*/
$token = '<Your Tinkoff Invest Account Token>';
$options = [
'isRateLimitRetry' => false
];
$tiClient = new TIClient($token, $options);
try {
$tiAccounts = $tiClient->getUser()->getAccounts();
$accounts = [];
foreach ($tiAccounts as $account) {
$accounts[] = [
'id' => $account->getId(),
'name' => $account->getName(),
'type' => $account->getType(),
'status' => $account->getStatus(),
'openedDate' => $account->getOpenedDate()->getSeconds(),
'closedDate' => $account->getClosedDate()->getSeconds()
];
}
echo '<pre>' . print_r($accounts, true) . '</pre>';
} catch (TIException $e) {
echo $e->getCode() . '. ' . $e->getMessage();
}
- User
- ✔ getAccounts
- ✖ GetMarginAttributes
- ✖ GetUserTariff
- ✖ GetInfo
- Instruments
- ✖ TradingSchedules
- ✔ BondBy
- ✔ Bonds
- ✔ GetBondCoupons
- ✔ GetBondsEvents
- ✔ CurrencyBy
- ✔ Currencies
- ✖ EtfBy
- ✔ Etfs
- ✔ FutureBy
- ✔ Futures
- ✖ OptionBy
- ✖ Options
- ✖ OptionsBy
- ✔ ShareBy
- ✔ Shares
- ✔ Indicatives
- ✖ GetAccruedInterests
- ✖ GetFuturesMargin
- ✔ GetInstrumentBy
- ✔ GetDividends
- ✖ GetAssetBy
- ✖ GetAssets
- ✖ GetFavorites
- ✖ EditFavorites
- ✖ GetCountries
- ✖ FindInstrument
- ✖ GetBrands
- ✖ GetBrandBy
- ✖ GetAssetFundamentals
- ✖ GetAssetReports
- ✖ GetConsensusForecasts
- ✖ GetForecastBy
- OrdersStream
- ✖ TradesStream
- Orders
- ✖ PostOrder
- ✖ CancelOrder
- ✖ GetOrderState
- ✖ GetOrders
- ✖ ReplaceOrder
- ✖ GetMaxLots
- ✖ GetOrderPrice
- Operations
- ✔ GetOperations
- ✔ GetPortfolio
- ✖ GetPositions
- ✔ GetWithdrawLimits
- ✖ GetBrokerReport
- ✖ GetDividendsForeignIssuer
- ✖ GetOperationsByCursor
- OperationsStream
- ✖ PortfolioStream
- ✖ PositionsStream
- MarketData
- ✔ GetCandles
- ✔ GetLastPrices
- ✖ GetOrderBook
- ✖ GetTradingStatus
- ✖ GetTradingStatuses
- ✖ GetLastTrades
- ✖ GetClosePrice
- ✖ GetTechAnalysis
- MarketDataStream
- ✖ MarketDataStream
- ✖ MarketDataServerSideStream
- StopOrders
- ✖ PostStopOrder
- ✖ GetStopOrders
- ✖ CancelStopOrder
- Sandbox
- ✖ OpenSandboxAccount
- ✖ GetSandboxAccounts
- ✖ CloseSandboxAccount
- ✖ PostSandboxOrder
- ✖ ReplaceSandboxOrders
- ✖ GetSandboxOrders
- ✖ CancelSandboxOrder
- ✖ GetSandboxOrderState
- ✖ GetSandboxPositions
- ✖ GetSandboxOperations
- ✖ GetSandboxOperationsByCursor
- ✖ GetSandboxPortfolio
- ✖ SandboxPayIn
- ✖ GetSandboxWithdrawLimits
<?php
declare(strict_types=1);
use ATreschilov\TinkoffInvestApiSdk\TIClient;
use Tinkoff\Invest\V1\Account;
use Tinkoff\Invest\V1\GetAccountsRequest;
use Tinkoff\Invest\V1\GetAccountsResponse;
use Tinkoff\Invest\V1\UsersServiceClient;
require __DIR__ . '/../vendor/autoload.php';
/**
* Your personal Tinkoff Invest token
*
* @see https://tinkoff.github.io/investAPI/token/
*/
$token = '<Your Tinkoff Invest Account Token>';
$tiClient = new TIClient($token);
$userServiceClient = new UsersServiceClient($tiClient->getHostname(), $tiClient->getApiConfig());
$request = new GetAccountsRequest();
/** @var GetAccountsResponse $response */
list($response, $status) = $userServiceClient->GetAccounts($request)->wait();
if ($status->code !== 0) {
echo '<pre>' . print_r($status, true) . '</pre>';
return;
}
$accounts = [];
/** @var Account $account */
foreach ($response->getAccounts() as $account) {
$accounts[] = [
'id' => $account->getId(),
'name' => $account->getName(),
'type' => $account->getType(),
'status' => $account->getStatus(),
'openedDate' => $account->getOpenedDate()->getSeconds(),
'closedDate' => $account->getClosedDate()->getSeconds()
];
}
echo '<pre>' . print_r($accounts, true) . '</pre>';