fcsapi / rest
PHP REST API client for Forex, Cryptocurrency, and Stock market data from FCS API
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/fcsapi/rest
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
This package is auto-updated.
Last update: 2025-12-25 11:57:58 UTC
README
PHP REST API client library for Forex, Cryptocurrency, and Stock market data from FCS API.
Features
- Forex API - 4000+ currency pairs, real-time rates, commodities, historical data, technical analysis
- Crypto API - 50,000+ coins from major exchanges (Binance, Coinbase, etc.), market cap, rank, coin data
- Stock API - 125,000+ global stocks, indices, earnings, financials, dividends
- Easy to Use - Simple method calls for all API endpoints
- Multiple Auth Methods - API key, IP whitelist, or secure token-based authentication
- PSR-4 Autoloading - Composer compatible
Installation
Composer (Recommended)
composer require fcsapi/rest
Manual Installation
- Download or clone this repository
- Include the autoloader or require files manually
require_once 'path/to/rest-api-php/src/FcsApi.php'; require_once 'path/to/rest-api-php/src/Forex.php'; // For Forex require_once 'path/to/rest-api-php/src/Crypto.php'; // For Crypto require_once 'path/to/rest-api-php/src/Stock.php'; // For Stock
Quick Start
<?php require 'vendor/autoload.php'; use FcsApi\FcsApi; $fcsapi = new FcsApi(); // Forex $response = $fcsapi->forex->getLatestPrice('EURUSD'); // Crypto $response = $fcsapi->crypto->getLatestPrice('BINANCE:BTCUSDT'); // Stock $response = $fcsapi->stock->getLatestPrice('NASDAQ:AAPL');
Authentication Methods
The library supports 4 authentication methods for different security needs:
Method 1: Default Configuration (Recommended)
Set your API key once in src/FcsConfig.php:
public string $accessKey = 'YOUR_API_KEY_HERE';
Then simply use:
$fcsapi = new FcsApi();
Method 2: Direct API Key
Pass API key directly (overrides config):
$fcsapi = new FcsApi('YOUR_API_KEY');
Method 3: IP Whitelist (No Key Required)
Whitelist your server IP at FCS Dashboard:
use FcsApi\FcsConfig; $config = FcsConfig::withIpWhitelist(); $fcsapi = new FcsApi($config);
Method 4: Token-Based Authentication (Secure for Frontend)
Generate secure tokens on backend, use on frontend without exposing API key:
use FcsApi\FcsConfig; // Backend: Generate token $config = FcsConfig::withToken('YOUR_API_KEY', 'YOUR_PUBLIC_KEY', 3600); $fcsapi = new FcsApi($config); $tokenData = $fcsapi->generateToken(); // Returns: ['_token' => '...', '_expiry' => 1234567890, '_public_key' => '...'] // Send $tokenData to frontend for secure API calls
Token Expiry Options:
| Seconds | Duration |
|---|---|
| 300 | 5 minutes |
| 900 | 15 minutes |
| 1800 | 30 minutes |
| 3600 | 1 hour |
| 86400 | 24 hours |
API Reference
Forex API
// ==================== Symbol List ==================== $fcsapi->forex->getSymbolsList(); // All symbols $fcsapi->forex->getSymbolsList('forex'); // Forex only $fcsapi->forex->getSymbolsList('commodity'); // Commodities only // ==================== Latest Prices ==================== $fcsapi->forex->getLatestPrice('EURUSD'); $fcsapi->forex->getLatestPrice('EURUSD,GBPUSD,USDJPY'); $fcsapi->forex->getLatestPrice('EURUSD', '1D', null, true); // with profile $fcsapi->forex->getAllPrices('FX'); // All from exchange // ==================== Commodities ==================== $fcsapi->forex->getCommodities(); // All commodities $fcsapi->forex->getCommodities('XAUUSD'); // Gold $fcsapi->forex->getCommoditySymbols(); // Commodity symbols list // ==================== Currency Converter ==================== $fcsapi->forex->convert('EUR', 'USD', 100); // Convert 100 EUR to USD // ==================== Base Currency ==================== $fcsapi->forex->getBasePrices('USD'); // USD to all currencies // ==================== Cross Rates ==================== $fcsapi->forex->getCrossRates('USD', 'forex', '1D'); // ==================== Historical Data ==================== $fcsapi->forex->getHistory('EURUSD'); $fcsapi->forex->getHistory('EURUSD', '1D', 500); $fcsapi->forex->getHistory('EURUSD', '1h', 300, '2025-01-01', '2025-01-31'); $fcsapi->forex->getHistory('EURUSD', '1D', 300, null, null, 2); // Page 2 // ==================== Profile ==================== $fcsapi->forex->getProfile('EUR'); $fcsapi->forex->getProfile('EUR,USD,GBP'); // ==================== Exchanges ==================== $fcsapi->forex->getExchanges(); // ==================== Technical Analysis ==================== $fcsapi->forex->getMovingAverages('EURUSD', '1D'); // EMA & SMA $fcsapi->forex->getIndicators('EURUSD', '1D'); // RSI, MACD, Stochastic, etc. $fcsapi->forex->getPivotPoints('EURUSD', '1D'); // Pivot Points // ==================== Performance ==================== $fcsapi->forex->getPerformance('EURUSD'); // Highs, lows, volatility // ==================== Economy Calendar ==================== $fcsapi->forex->getEconomyCalendar(); $fcsapi->forex->getEconomyCalendar('US', '2025-01-01', '2025-01-31'); // ==================== Top Movers ==================== $fcsapi->forex->getTopGainers(); $fcsapi->forex->getTopLosers(); $fcsapi->forex->getMostActive(); // ==================== Search ==================== $fcsapi->forex->search('EUR'); // ==================== Advanced Query ==================== $fcsapi->forex->advanced([ 'type' => 'forex', 'period' => '1D', 'sort_by' => 'active.chp_desc', 'per_page' => 50, 'merge' => 'latest,profile,tech' ]);
Crypto API
// ==================== Symbol List ==================== $fcsapi->crypto->getSymbolsList(); // All crypto $fcsapi->crypto->getSymbolsList('crypto', 'binance'); // Binance only $fcsapi->crypto->getCoinsList(); // Coins with market cap // ==================== Latest Prices ==================== $fcsapi->crypto->getLatestPrice('BTCUSDT'); $fcsapi->crypto->getLatestPrice('BINANCE:BTCUSDT,BINANCE:ETHUSDT'); $fcsapi->crypto->getAllPrices('binance'); // ==================== Coin Data (Market Cap, Rank, Supply) ==================== $fcsapi->crypto->getCoinData(); // Top coins with full data $fcsapi->crypto->getTopByMarketCap(100); // Top 100 by market cap $fcsapi->crypto->getTopByRank(50); // Top 50 by rank // ==================== Crypto Converter ==================== $fcsapi->crypto->convert('BTC', 'USD', 1); // 1 BTC to USD $fcsapi->crypto->convert('ETH', 'BTC', 10); // 10 ETH to BTC // ==================== Base Currency ==================== $fcsapi->crypto->getBasePrices('BTC'); // BTC to all $fcsapi->crypto->getBasePrices('USD'); // USD to all cryptos // ==================== Cross Rates ==================== $fcsapi->crypto->getCrossRates('USD', 'crypto', '1D'); // ==================== Historical Data ==================== $fcsapi->crypto->getHistory('BINANCE:BTCUSDT'); $fcsapi->crypto->getHistory('BTCUSDT', '1D', 500); // ==================== Profile ==================== $fcsapi->crypto->getProfile('BTC'); $fcsapi->crypto->getProfile('BTC,ETH,SOL'); // ==================== Exchanges ==================== $fcsapi->crypto->getExchanges(); // ==================== Technical Analysis ==================== $fcsapi->crypto->getMovingAverages('BINANCE:BTCUSDT', '1D'); $fcsapi->crypto->getIndicators('BINANCE:BTCUSDT', '1D'); $fcsapi->crypto->getPivotPoints('BINANCE:BTCUSDT', '1D'); // ==================== Performance ==================== $fcsapi->crypto->getPerformance('BINANCE:BTCUSDT'); // ==================== Top Movers ==================== $fcsapi->crypto->getTopGainers(); $fcsapi->crypto->getTopGainers('binance', 50); $fcsapi->crypto->getTopLosers(); $fcsapi->crypto->getHighestVolume(); // ==================== Search ==================== $fcsapi->crypto->search('bitcoin');
Stock API
// ==================== Symbol List ==================== $fcsapi->stock->getSymbolsList(); // All stocks $fcsapi->stock->getSymbolsList('NASDAQ'); // NASDAQ only $fcsapi->stock->getSymbolsList(null, 'united-states'); // US stocks $fcsapi->stock->getSymbolsList(null, null, 'technology'); // Tech sector // ==================== Indices ==================== $fcsapi->stock->getIndicesList('united-states'); // US indices $fcsapi->stock->getIndicesLatest(); // All indices prices $fcsapi->stock->getIndicesLatest('NASDAQ:NDX,SP:SPX'); // Specific indices // ==================== Latest Prices ==================== $fcsapi->stock->getLatestPrice('AAPL'); $fcsapi->stock->getLatestPrice('NASDAQ:AAPL,NASDAQ:GOOGL'); $fcsapi->stock->getAllPrices('NASDAQ'); $fcsapi->stock->getLatestByCountry('united-states', 'technology'); $fcsapi->stock->getLatestByIndices('NASDAQ:NDX'); // Stocks in NASDAQ 100 // ==================== Historical Data ==================== $fcsapi->stock->getHistory('NASDAQ:AAPL'); $fcsapi->stock->getHistory('AAPL', '1D', 500); // ==================== Profile ==================== $fcsapi->stock->getProfile('AAPL'); $fcsapi->stock->getProfile('NASDAQ:AAPL,NASDAQ:GOOGL'); // ==================== Exchanges ==================== $fcsapi->stock->getExchanges(); // ==================== Financial Data ==================== $fcsapi->stock->getEarnings('NASDAQ:AAPL'); // EPS, Revenue $fcsapi->stock->getEarnings('NASDAQ:AAPL', 'annual'); // Annual only $fcsapi->stock->getRevenue('NASDAQ:AAPL'); // Revenue segments $fcsapi->stock->getFinancials('NASDAQ:AAPL', 'income'); // Income statement $fcsapi->stock->getFinancials('NASDAQ:AAPL', 'balance'); // Balance sheet $fcsapi->stock->getDividends('NASDAQ:AAPL'); // Dividend history // ==================== Technical Analysis ==================== $fcsapi->stock->getMovingAverages('NASDAQ:AAPL', '1D'); $fcsapi->stock->getIndicators('NASDAQ:AAPL', '1D'); $fcsapi->stock->getPivotPoints('NASDAQ:AAPL', '1D'); // ==================== Performance ==================== $fcsapi->stock->getPerformance('NASDAQ:AAPL'); // ==================== Top Movers ==================== $fcsapi->stock->getTopGainers(); $fcsapi->stock->getTopGainers('NASDAQ', 50); $fcsapi->stock->getTopLosers(); $fcsapi->stock->getMostActive(); // ==================== Search & Filter ==================== $fcsapi->stock->search('Apple'); $fcsapi->stock->getBySector('technology'); $fcsapi->stock->getByCountry('united-states'); // ==================== Advanced Query ==================== $fcsapi->stock->advanced([ 'exchange' => 'NASDAQ', 'sector' => 'technology', 'period' => '1D', 'sort_by' => 'active.chp_desc', 'per_page' => 50, 'merge' => 'latest,profile' ]);
Response Handling
$response = $fcsapi->forex->getLatestPrice('EURUSD'); // Check if successful if ($fcsapi->isSuccess()) { $data = $response['response']; print_r($data); } else { echo "Error: " . $fcsapi->getError(); } // Get last response info $lastResponse = $fcsapi->getLastResponse(); // Get response data only $data = $fcsapi->getResponseData();
Time Periods
Available timeframes for price data:
| Period | Description |
|---|---|
1 or 1m |
1 minute |
5 or 5m |
5 minutes |
15 or 15m |
15 minutes |
30 or 30m |
30 minutes |
1h or 60 |
1 hour |
4h or 240 |
4 hours |
1D |
1 day |
1W |
1 week |
1M |
1 month |
Examples
Forex Example
<?php require 'vendor/autoload.php'; use FcsApi\FcsApi; $fcsapi = new FcsApi(); // Get EUR/USD latest price $response = $fcsapi->forex->getLatestPrice('EURUSD'); if ($fcsapi->isSuccess()) { foreach ($response['response'] as $item) { echo "Symbol: " . $item['ticker'] . "\n"; echo "Price: " . $item['active']['c'] . "\n"; echo "Change: " . $item['active']['chp'] . "%\n"; } } // Convert 1000 EUR to USD $conversion = $fcsapi->forex->convert('EUR', 'USD', 1000); if ($fcsapi->isSuccess()) { echo "1000 EUR = " . $conversion['response']['total'] . " USD\n"; }
Crypto Example
<?php require 'vendor/autoload.php'; use FcsApi\FcsApi; $fcsapi = new FcsApi(); // Get Bitcoin price from Binance $response = $fcsapi->crypto->getLatestPrice('BINANCE:BTCUSDT'); if ($fcsapi->isSuccess()) { $btc = $response['response'][0]; echo "Bitcoin: $" . number_format($btc['active']['c'], 2) . "\n"; } // Get top 100 coins by market cap $coins = $fcsapi->crypto->getTopByMarketCap(100); if ($fcsapi->isSuccess()) { foreach ($coins['response']['data'] as $coin) { echo $coin['ticker'] . ": Rank #" . $coin['rank'] . "\n"; } }
Stock Example
<?php require 'vendor/autoload.php'; use FcsApi\FcsApi; $fcsapi = new FcsApi(); // Get Apple stock price $response = $fcsapi->stock->getLatestPrice('NASDAQ:AAPL'); if ($fcsapi->isSuccess()) { $aapl = $response['response'][0]; echo "Apple: $" . $aapl['active']['c'] . "\n"; } // Get Apple earnings data $earnings = $fcsapi->stock->getEarnings('NASDAQ:AAPL'); if ($fcsapi->isSuccess()) { echo "EPS Data Available\n"; } // Get US market indices $indices = $fcsapi->stock->getIndicesLatest(null, 'united-states'); if ($fcsapi->isSuccess()) { foreach ($indices['response'] as $index) { echo $index['ticker'] . ": " . $index['active']['c'] . "\n"; } }
Get API Key
- Visit FCS API
- Sign up for a free account
- Get your API key from the dashboard
Documentation
For complete API documentation, visit:
Support
- Email: support@fcsapi.com
- Website: fcsapi.com
License
MIT License - see LICENSE file for details.