PHP API Client

PHP integration handles uploads and file operations by wrapping Uploadcare Upload API and REST API. This comprehensive API client lets you use most of the Uploadcare features from within your PHP app.


Check out an example project that we created as a showcase for various usage scenarios and tasks that you can resolve.


Upload features:

  • Upload files from local storage and URLs (up to 5 TB)
  • Multipart uploading for large files
  • Uploading network to speed uploading jobs (like CDN)

File management features:

  • Get file info and perform various operations (store/delete/copy) with them
  • Work with groups of files
  • Get info about account project
  • Manage webhooks
  • Convert documents
  • Encode and transform videos

Security features:

  • Secure authentication
  • Secure uploads (signed uploads)
  • Secure delivery (signed URLs)
  • Secure webhooks (signing secret)


  • PHP 7.1 or later
  • php-curl
  • php-json

How to check PHP version via CLI:

php -vbash

How to check modules:

php -mbash

You should see curl and json in the list:

workstation:home user$ php -m
[PHP Modules]

[Zend Modules]bash


Prior to installing uploadcare-php, get the Composer dependency manager for PHP to simplify installation.

1. Update composer.json:

"require": {
    "uploadcare/uploadcare-php": "^3.0"

2. Run Composer:

php composer.phar updatebash

3. Define Uploadcare API keys:

Add API keys to your configuration object. For example:

# config.php
$_ENV['UPLOADCARE_PUBLIC_KEY'] = '<your public key>';
$_ENV['UPLOADCARE_PRIVATE_KEY'] = '<your private key>';php

4. Include Composer's autoload file:

require_once 'vendor/autoload.php';php

5. Create a configuration object

There're a few ways to create a configuration object. We recommend that you use this static method of the Uploadcare\Configuration class:

$configuration = Uploadcare\Configuration::create($_ENV['UPLOADCARE_PUBLIC_KEY'], $_ENV['UPLOADCARE_SECRET_KEY']);php

Alternatively, you can create a Security signature, HTTP client, and Serializer classes explicitly. After that, you can create a configuration object:

$sign = new \Uploadcare\Security\Signature('<your private key>', 3600); // Must be an instance of \Uploadcare\Interfaces\SignatureInterface
$client = \Uploadcare\Client\ClientFactory::createClient(); // Must be an instance of \GuzzleHttp\ClientInterface
$serializer = new \Uploadcare\Serializer\Serializer(new \Uploadcare\Serializer\SnackCaseConverter()); // Must be an instance of \Uploadcare\Interfaces\Serializer\SerializerInterface

$configuration = new \Uploadcare\Configuration('<your public key>', $sign, $client, $serializer);php

As you can see, the factory method is more convenient for standard usage.

That's it! All further operations will use this configuration object.

Usage example

Now that you have Uploadcare PHP API client up and running, you can do the following: