Sirv REST API – PHP examples
The Sirv REST API can be used to perform more than 40 commands on your Sirv account.
You can either write your own PHP scripts or use the Sirv PHP class below.
PHP Class
The Sirv team has written a PHP class with 10 of the most popular API commands. Each command is described below. In all cases, first you must connect to the API.
Visit GitHub for the latest version of the PHP Class: https://github.com/sirv/sirv-rest-api-php/
Connect to Sirv with PHP
-
Create an API client in your Sirv account. You'll receive a client ID and client Secret.
-
Add the Sirv PHP Class package:
composer require sirv/sirv-rest-api-php
-
Initialize the class to get a token (CLIENT_ID):
$sirv = new SirvAPIClient( 'CLIENT_ID', 'SECRET_ID', '', '', 'Sirv PHP client' ); // Check if client has successfully connected: echo 'Is connected: '.$sirv->isConnected(); echo '<br/>'; // Get token and its expiry time $token = $sirv->getToken(); $tokenExpireTime = $sirv->getTokenExpireTime(); echo 'Token: '.$token; echo '<br/>'; echo 'Token expire time: '.$tokenExpireTime;
-
If you already have a valid token from a previous connection, skip step 4 and use this instead:
$token = 'ENTER_YOUR_TOKEN_HERE'; $tokenExpireTime = 'ENTER_EXPIRY_TIME_HERE'; $sirv = new SirvAPIClient( 'CLIENT_ID', 'SECRET_ID', $token, $tokenExpireTime, 'Sirv PHP client' );
Now you can perform over 40 Sirv REST API methods.
Upload file
Upload a local file to Sirv your Sirv account:
$sirv->uploadFile('example/local-file.jpg', 'example-folder/file-on-sirv.jpg');
A successful upload will return the following response headers in JSON format. There is no body. A response code of 200 means success:
HTTP/2 200 date: Sat, 02 May 2020 16:57:19 GMT content-length: 0 x-ratelimit-limit: 2000 x-ratelimit-remaining: 1992 x-ratelimit-reset: 1588441712 x-ratelimit-type: rest:post:files:upload access-control-allow-origin: * access-control-expose-headers: * cache-control: no-cache server: Sirv.API strict-transport-security: max-age=31536000
To upload many files, use $sirv->uploadFile in a loop:
$images = array( array('example/local-file-1.jpg', 'example-folder/file-on-sirv-1.jpg'), array('example/local-file-2.jpg', 'example-folder/file-on-sirv-2.jpg'), array('example/local-file-3.jpg', 'example-folder/file-on-sirv-3.jpg'), array('example/local-file-4.jpg', 'example-folder/file-on-sirv-4.jpg'), ... ); foreach($images as $image) { $sirv->uploadFile($image[0], $image[1]); }
Convert video to spin
$client = new httpClient; $request = new httpClientRequest; $body = new httpMessageBody; $body->append('{ "filename": "/path/to/video/Example.mp4" }'); $request->setRequestUrl('https://api.sirv.com/v2/files/video2spin'); $request->setRequestMethod('POST'); $request->setBody($body); $request->setHeaders(array( 'authorization' => 'Bearer RECEIVED_TOKEN_HERE', 'content-type' => 'application/json' )); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody();
Fetch image from URL
- Endpoint: https://api.sirv.com/v2/files/fetch
- Documentation: https://apidocs.sirv.com/#fetch-url
Fetch remote images via URL and save them to your Sirv account:
$images = array( array( 'url' => 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Castle_Mountain.jpg/800px-Castle_Mountain.jpg', 'filename' => '/Folder-on-Sirv/file-1.jpg', 'wait' => true ), array( 'url' => 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Castle_Mountain.jpg/800px-Castle_Mountain.jpg', 'filename' => '/Folder-on-Sirv/file-2.jpg', 'wait' => true ), ); $sirv->fetchImage($images);
Get folder contents
- Endpoint: https://api.sirv.com/v2/files/readdir
- Documentation: https://apidocs.sirv.com/#read-folder-contents
Fetch a list of folder contents:
$contents = $sirv->getFolderContents('ExampleFolder'); print_r($contents);
Delete file / folder
To delete a folder, it must be empty.
- Endpoint: https://api.sirv.com/v2/files/delete
- Documentation: https://apidocs.sirv.com/#delete-file-or-empty-directory
$sirv->deleteFile('ExampleFolder/file.jpg');
Get file info
- Endpoint: https://api.sirv.com/v2/files/stat
- Documentation: https://apidocs.sirv.com/#get-file-info
$info = $sirv->getFileStat('ExampleFolder/file-on-sirv.jpg');
Folder options
- Endpoint: https://api.sirv.com/v2/files/options
- Documentation: https://apidocs.sirv.com/#get-folder-options
Get folder options:
$f_options = $sirv->getFolderOptions('ExampleFolder');
Set folder options:
$f_options = array( 'scanSpins' => false, 'nameSpinsAfterFolder' => true, 'allowListing' => false ); $sirv->setFolderOptions('folderName', $f_options);
Get account info
- Endpoint: https://api.sirv.com/v2/account
- Documentation: https://apidocs.sirv.com/#get-account-info
$info = $sirv->getAccountInfo();
Get usage info
$info = $sirv->getStorageInfo();
Configure CDN
$sirv->configCDN( true, // true - activate CDN, false - disable 'account-name-here' );