cointokio / coinpaprika-api-client
Fetch data from the CoinPaprika API, intended for use in WordPress plugins or themes.
Package info
github.com/cointokio/coinpaprika-api-client
pkg:composer/cointokio/coinpaprika-api-client
Requires (Dev)
README
A PHP client for fetching data from the CoinPaprika API intended to be used in WordPress plugins or themes. Being a good WordPress citizen, this client uses the WordPress core HTTP API to fetch its data.
The CoinPaprika API exposes a free tier (no API key required) and a paid tier (api-pro.coinpaprika.com). Both are reachable through the same client.
Installation
This package is intended to be installed as a Composer dependency:
composer require cointokio/coinpaprika-api-client
Use
Include the main class-client.php file and create an instance of the Client class and use its methods to fetch data from the CoinPaprika API. Each method represents a separate API endpoint and will either return the decoded response body as an array or a WP_Error object.
require_once '/your/cool/path/to/coinpaprika-client/class-client.php';
/*
* There are three ways the Client class can be configured:
*
* - Pass the API key (and optionally an endpoint) directly like in the
* example below.
* - Define a COINPAPRIKA_API_KEY (and optionally a COINPAPRIKA_API_ENDPOINT)
* constant.
* - Skip both entirely; the client will then target the free endpoint
* (https://api.coinpaprika.com/v1) without an Authorization header.
*/
$client = new Cointokio\CoinPaprika\Client( 'your-api-key' );
/*
* Use the key()->get_info() method to inspect the configured API key.
* Requires a paid plan (the free tier rejects this endpoint with a 403).
*
* @see https://docs.coinpaprika.com/api-reference/key/get-api-key-info
*/
$response = $client->key()->get_info();
The following example uses the $client->tickers()->get() method to fetch data from the /tickers/{coin_id} endpoint:
require_once '/your/cool/path/to/coinpaprika-client/class-client.php';
$client = new Cointokio\CoinPaprika\Client();
/*
* Get the latest ticker for Bitcoin, with prices in USD and EUR.
*
* Note that the $client->tickers() method returns an instance of the
* \Cointokio\CoinPaprika\Tickers class. This allows us to use the Tickers
* class methods more easily via method chaining, eg.:
*
* $client->tickers()->get_list()
* $client->tickers()->get( 'btc-bitcoin', array( 'quotes' => 'USD,EUR' ) )
*
* @see https://docs.coinpaprika.com/api-reference/tickers/get-ticker-for-a-specific-coin
* @see https://en.wikipedia.org/wiki/Method_chaining
*/
$response = $client->tickers()->get(
'btc-bitcoin',
array( 'quotes' => 'USD,EUR' )
);
Free vs paid endpoints
CoinPaprika serves the free tier from https://api.coinpaprika.com/v1 and the paid tiers from https://api-pro.coinpaprika.com/v1. The API key only authorises requests against the pro endpoint. To keep secrets from leaking, this client only attaches the Authorization header when the configured endpoint host matches one of the two recognised CoinPaprika hosts; requests to any other host (eg. a local mock or proxy) are sent without the header.
quotes limit
The /tickers and /tickers/{coin_id} endpoints accept a comma-separated quotes parameter (eg. USD,EUR,BTC), capped at 3 quotes per request. When you need more conversions, issue one request per chunk of three:
foreach ( array_chunk( $fiats, 3 ) as $chunk ) {
$response = $client->tickers()->get( 'btc-bitcoin', array(
'quotes' => implode( ',', $chunk ),
) );
// Aggregate per-chunk responses into your own structure.
}
Coin ID format
CoinPaprika coin IDs follow the pattern {symbol}-{name} (lowercase, hyphens for spaces). Examples: btc-bitcoin, eth-ethereum, usdt-tether, sol-solana. Use $client->tools()->search( $query ) to look up the correct id for any coin.
Coding Standards
This project aims to adhere to the VIP Coding Standards.