Get Code
<?php // Step 1: Exchange code for access_token $code = '*****'; // Replace with your fresh authorization code from the "Get Code" button $client_id = '**************************'; $client_secret = '***********'; $redirect_uri = '**************'; $url = 'https://api-v2.upstox.com/login/authorization/token'; $postData = http_build_query([ 'code' => $code, 'client_id' => $client_id, 'client_secret' => $client_secret, 'redirect_uri' => $redirect_uri, 'grant_type' => 'authorization_code', ]); $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postData, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/x-www-form-urlencoded' ], ]); $response = curl_exec($ch); curl_close($ch); if (!$response) { die("❌ Failed to get access token.\n"); } $data = json_decode($response, true); if (!isset($data['access_token'])) { die("❌ Error fetching token: " . $response . "\n"); } $accessToken = $data['access_token']; echo "✅ Access token obtained\n"; // Step 2: Include composer autoload (adjust path if needed) //require_once __DIR__ . '/vendor/autoload.php'; $autoloadPath = dirname(__DIR__, 5) . '/upstox-php-master/vendor/autoload.php'; require_once $autoloadPath; use function Amp\Websocket\Client\connect; use Com\Upstox\Marketdatafeederv3udapi\Rpc\Proto\FeedResponse; /** * Decode Protobuf message from server */ function decodeProtobuf($buffer) { $feedResponse = new FeedResponse(); if ($buffer !== null && $buffer !== '') { $feedResponse->mergeFromString($buffer); } else { echo "⚠️ Empty message received.\n"; } return $feedResponse; } /** * Get WebSocket authorization URL */ function getMarketDataFeedAuthorize($accessToken) { $url = 'https://api.upstox.com/v3/feed/market-data-feed/authorize'; $headers = [ 'Accept: application/json', 'Authorization: Bearer ' . $accessToken ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); curl_close($ch); $decoded = json_decode($response, true); if (!isset($decoded['data']['authorized_redirect_uri'])) { echo "❌ Failed to authorize WebSocket feed:\n"; print_r($decoded); exit; } return $decoded['data']['authorized_redirect_uri']; } /** * Connect and stream market data */ function fetchMarketUpdates($accessToken) { $wsUrl = getMarketDataFeedAuthorize($accessToken); echo "🔗 Connecting to WebSocket: $wsUrl\n"; $connection = connect($wsUrl); echo "✅ WebSocket connected!\n"; // Prepare subscription payload $data = [ "guid" => uniqid(), "method" => "sub", "data" => [ "mode" => "full", "instrumentKeys" => [ "NSE_INDEX|Nifty 50", "BSE_INDEX|SENSEX" ] ] ]; $binaryData = json_encode($data); $connection->sendBinary($binaryData); // Listen for messages foreach ($connection as $message) { $payload = $message->buffer(); if ($payload === '100') { echo "✅ Session ended by server.\n"; $connection->close(); break; } if (!empty($payload)) { $decoded = decodeProtobuf($payload); echo $decoded->serializeToJsonString() . "\n"; } } } // Run the WebSocket listener fetchMarketUpdates($accessToken);Related topics
| Topic | Replies | Views | Activity | |
|---|---|---|---|---|
| Not getting any data from websocket full market data | 7 | 201 | July 26, 2024 | |
| On running this python code this error are coming again and again . i done all the necessary step login and generating access token | 1 | 25 | September 8, 2025 | |
| Please help me guys regarding WebSocket (v3 API) | 8 | 217 | July 4, 2025 | |
| After getting authorizedRedirectUri what is the next process to get marketfeed through websocket curl php | 2 | 208 | May 16, 2024 | |
| Unable to use websocket using - PHP sdk | 7 | 89 | August 1, 2024 |