Alpaca was built for developers & traders. It can be integrated into any application, no matter the codebase, including PHP. That’s what we’re gonna do in this article, integrate a PHP stock market API (PHP SDK) with Alpaca.Download the PHP Stock Market API (PHP SDK)
PHP Stock Market API, easy-to-use PHP SDK
Get stock market prices, trade with algorithms, connect with apps and build fully-featured stock market services — all with commission-free trading, using the Alpaca API and Jeffrey Hyer’s Alpaca PHP SDK. It’s simple to use & its easy-to-understand documentation allows developers to quickly build apps using PHP. Let’s get started.
Installing the Stock Market PHP SDK
Get started with the PHP stock market API by installing it with composer:
composer require jeffreyhyer/alpaca-trade-api-php
Minimum PHP version notice: This package currently requires PHP >= 7.2.5
Setting up & authorizing the PHP Stock Market API
With just a couple of lines of code, the PHP stock market API will be up and running allowing to use its methods to grab market prices, account information, place orders, and more.
In your PHP application, load the vendor
<?php /** * Include the required composer packages */ require './vendor/autoload.php'; use Alpaca\Alpaca; // Initialize with your Alpaca API key & secret $alpaca = new Alpaca( "ALPACA_API_KEY", "ALPACA_API_SECRET" );
What about OAuth?
v2.1.0 the Alpaca PHP SDK package supports authenticating users via OAuth to the Alpaca API. For a detailed explanation of the OAuth flow, see the Alpaca Docs.
getOauthAuthorizeUrl($client_id, $redirect_uri, $scope = "", $state = null)
Provide your applications
$client_id and your authorized/whitelisted $redirect_uri as well as the desired
$scope and a random
This function below will return the URL to which you should redirect your user to in order to authorize your application to access the account:
getOauthAccessToken($code, $client_id, $client_secret, $redirect_uri)
Once the user has authorized your application to access their account, Alpaca will redirect the user back to your
$redirect_uri. In the URL will be a
code parameter, pass that as the
$code parameter to this function along with your
$client_secret and your original
$redirect_url. This function will return an access token that can then be used to call the Alpaca API on behalf of that user/account.
To start using the access token call
setAccessToken($token) with the value of the token.
Once authenticated, you can call
getOauthAccessTokenDetails() to get the details of the access token (status, validity, etc).
Using the PHP stock market API
Initializing and accessing the PHP SDK methods is a cinch. To get started, initialize, the
Alpaca class with your Alpaca API key and secret. You can also set the third parameter to enable or disable paper trading. The default is
true to enable calling against the paper trading endpoint.
use Alpaca\Alpaca; $alpaca = new Alpaca("KEY", "SECRET", true); // This call will now work as expected if your KEY and SECRET are valid. // If not, the response will contain an error explaining what went wrong. $resp = $alpaca->getAccount();
You can change these values after initialization if necessary using the following methods:
setKey($key)– Set your Alpaca API key
setSecret($secret)– Set your Alpaca API secret
setPaper(true)– Enable or disable paper trading,
truefor paper trading,
falsefor live trading.
Stock market PHP SDK responses
All methods return an instance of the
\Alpaca\Response class which has a number of convenient methods for working with the API response.
getCode()– Returns the HTTP status code of the request (e.g.
getReason()– Returns the HTTP status reason of the request (e.g.
getResponse()– Returns the JSON decoded response.
Here’s an example of a successful call using the
print_r($alpaca->getAccount()->getResponse()); /* Returned result: stdClass Object ( [id] => null [status] => ACTIVE [currency] => USD [buying_power] => 25000 [cash] => 25000 [cash_withdrawable] => 0 [portfolio_value] => 25000 [pattern_day_trader] => [trading_blocked] => [transfers_blocked] => [account_blocked] => [created_at] => 2018-11-01T18:41:35.990779Z [trade_suspended_by_user] => ) */
Alpaca PHP SDK methods
The PHP stock market API provides several methods allowing you to easily interact with Alpha, grab market data, and even place trades.
The account API serves important information related to an account, including account status, funds available for trade, funds available for withdrawal, and various flags relevant to an account’s ability to trade.
Get a user’s account data with the
The Orders API allows a user to monitor, place, and cancel their orders with Alpaca. The available stock market API orders methods are listed below:
getOrders($status = null, $limit = null, $after = null, $until = null, $direction = null, $nested = null)
This method retrieves a list of orders for the account, optionally filtered by the supplied query parameters.
createOrder($symbol, $qty, $side, $type, $time_in_force, $limit_price = null, $stop_price = null, $client_order_id = null, $extended_hours = null, $order_class = null, $additional = )
createOrder method places a new order for the given account. An order request may be rejected if the account is not authorized for trading, or if the tradable balance is insufficient to fill the order.
getOrder retrieves a single order for the given
getOrderByClientId retrieves a single order for the given
replaceOrder($order_id, $qty, $time_in_force, $limit_price = null, $stop_price = null, $client_order_id = null)
replaceOrder replaces a single order with updated parameters. Each parameter overrides the corresponding attribute of the existing order. The other attributes remain the same as the existing order.
cancelOrder method attempts to cancel an open order. If the order is no longer cancelable (example:
status=order_filled), the server will respond with status 422, and reject the request.
cancelAllOrders attempts to cancel all open orders. A response will be provided for each order that is attempted to be canceled. If an order is no longer cancelable, the server will respond with status 500 and reject the request.