PHPackages                             corbpie/bunny-cdn-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. corbpie/bunny-cdn-api

ActiveLibrary[HTTP &amp; Networking](/categories/http)

corbpie/bunny-cdn-api
=====================

Bunny net CDN API class for handling pull zones, storage zones, video streaming and DNS.

v1.9.7(2y ago)51122.0k↓20.4%14[3 issues](https://github.com/cp6/BunnyCDN-API/issues)MITPHPPHP ^8.2

Since Oct 27Pushed 2y ago3 watchersCompare

[ Source](https://github.com/cp6/BunnyCDN-API)[ Packagist](https://packagist.org/packages/corbpie/bunny-cdn-api)[ RSS](/packages/corbpie-bunny-cdn-api/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)DependenciesVersions (13)Used By (0)

BunnyNET CDN API Class
======================

[](#bunnynet-cdn-api-class)

The most comprehensive, feature-packed and easy to use PHP class for [bunny.net](https://bunny.net?ref=qxdxfxutxf) ( BunnyCDN) pull, video streaming, DNS and storage zones [API](https://docs.bunny.net/reference/bunnynet-api-overview).

This class whilst having a main focus on storage zone interaction includes pull zone features, DNS, Video streaming and more. Combining API with FTP managing and using your BunnyNet storage zones just got easier.

![Generic badge](https://camo.githubusercontent.com/c5bfe97b910114efc8395bfd47b0736b558ab659d4e0724eaae73a6804f10d53/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d312e392e372d626c75652e737667)![Generic badge](https://camo.githubusercontent.com/4c1075d837760399f232818ad93676a87921fc7d94e5cadf41f9012f324c6a1f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322d707572706c652e737667)

Table of contents
-----------------

[](#table-of-contents)

- [Features](#features)
- [Installing &amp; usage](#installing)
    - [Setting API key](#setting-api-key)
- [Pullzone](#pullzone)
    - [List all pullzones](#list-pullzones)
    - [List a pullzone](#list-pullzone)
    - [Purge pullzone](#purge-pullzone)
    - [Delete pullzone](#delete-pullzone)
    - [List pullzone hostnames](#hostnames-pullzone)
    - [Add hostname to pullzone](#add-hostname-pullzone)
    - [Remove hostname from pullzone](#remove-hostname-pullzone)
    - [Change ssl status for pullzone](#ssl-pullzone)
    - [Add IP block for pullzone](#ip-block-pullzone)
    - [Remove IP block for pullzone](#ip-unblock-pullzone)
    - [List blocked IPs for pullzone](#ip-blocked-pullzone)
    - [Purge cache for a URL](#purge-url-pullzone)
    - [Pullzone logs are array](#logs-pullzone)
- [Storage](#storage)
    - [Connect to storage zone](#storagezone-connect)
    - [List all storage zones](#storagezone-list)
    - [Add storage zone](#add-storagezone)
    - [Delete storage zone](#delete-storagezone)
    - [Get directory size](#get-directory-size)
    - [Return current directory](#current-directory)
    - [Change directory](#change-directory)
    - [Check folder exists](#folder-exists)
    - [Check file exists](#file-exists)
    - [Move to parent directory](#move-to-parent-directory)
    - [Create folder in current directory](#create-folder)
    - [Delete folder](#delete-folder)
    - [Delete file](#delete-file)
    - [Delete all files in a folder](#delete-all-files)
    - [Rename a file](#rename-file)
    - [Move a file](#move-file)
    - [Download a file](#download-file)
    - [Download all files in a directory](#download-all-files)
    - [Upload a file](#upload-file)
    - [Upload all files from a local folder](#upload-all-files)
    - [Return storage zone files and folder data](#return-file-folder-data)
    - [Return storage zone directory files formatted](#return-files-formatted)
    - [Return storage zone directory folders formatted](#return-folders-formatted)
    - [Return storage zone directory file and folders formatted](#return-file-folders-formatted)
- [Video streaming](#video)
    - [Set video library](#set-video-library)
    - [Get video collections](#get-video-collection)
    - [Set video collection GUID](#get-video-collection)
    - [Get streams for collection](#get-streams-collection)
    - [Update stream collection](#update-stream-collection)
    - [Delete stream collection](#delete-stream-collection)
    - [Create stream collection](#create-stream-collection)
    - [List videos in library](#list-videos-library)
    - [Get video information](#get-video)
    - [Delete video](#delete-video)
    - [Create video](#create-video)
    - [Create video for collection](#create-video-collection)
    - [Upload video](#upload-video)
    - [Set thumbnail](#set-thumbnail)
    - [Get video resolutions](#video-resolutions)
    - [Get video size](#video-size)
    - [Add captions](#add-captions)
    - [Delete captions](#delete-captions)
- [DNS](#dns)
    - [Get all DNS zones](#get-dns-zones)
    - [Get DNS zone](#get-dns-zone)
    - [Add DNS zone](#add-dns)
    - [Add DNS zone full](#add-dns-full)
    - [Delete DNS zone](#delete-dns)
    - [Get DNS zone statistics](#get-dns-stats)
    - [Update DNS zone nameservers](#update-nameservers)
    - [Update DNS zone SOA email](#update-soa-email)
    - [Add DNS record](#add-dns-record)
    - [Add DNS A record](#add-a-record)
    - [Add DNS AAAA record](#add-aaaa-record)
    - [Add DNS CNAME record](#add-cname-record)
    - [Add DNS MX record](#add-mx-record)
    - [Add DNS TXT record](#add-txt-record)
    - [Add DNS NS record](#add-ns-record)
    - [Add DNS redirect record](#add-redirect)
    - [Update DNS A record](#updated-a-record)
    - [Update DNS AAAA record](#update-aaaa-record)
    - [Disable DNS record](#disable-dns)
    - [Enable DNS record](#enable-dns)
    - [Delete DNS record](#delete-dns)
- Misc

### 1.9.7 changes

[](#197-changes)

#### 14th May 2024

[](#14th-may-2024)

- Fixed dirSize() needing a slash
- Fixed createFolder() throwing warning messages
- Added fileExists()

### Requirements

[](#requirements)

- PHP 8.2

For Pull zone, billing and statistics API interaction you will need your BunnyNet API key, this is found in your dashboard in the My Account section.

The video streaming API you need the video stream library access key which is found in the settings for the library at bunny.net.

If you want to interact with storage zones you will need your BunnyCDN API key set and the name of the storage zone.

You can get this with `listStorageZones()` as it returns all the storage zone data/info for the account.

Features &amp; abilities
------------------------

[](#features--abilities)

- List storage zones
- Add/create storage zone
- Delete storage zone
- Create folder in storage zone
- Delete folder in storage zone
- Delete file in storage zone
- Delete all files in a folder in storage zone
- Download a file from storage zone
- Download a file from storage zone with progress percentage
- Download all files in a folder from storage zone
- Upload file to storage zone
- Upload file to storage zone with progress percentage
- Upload all files in a folder to storage zone
- Rename file or folder in storage zone
- Move file in storage zone
- Get file size in storage zone
- Get directory size in storage zone
- Navigate/List directories in storage zone
- List all from storage zone directory
- List all files formatted from storage zone directory
- List all folders formatted from storage zone directory
- List all formatted from storage zone directory
- Create, edit and delete videos
- Create, edit and delete DNS zones
- Get usage statistics
- Get billing data
- View balance
- View monthly charge
- View monthly charge breakdown
- Apply coupon code
- List pull zones
- Get pull zone
- Add pull zone
- Update pull zone
- Delete pull zone
- Purge pull zone
- Add hostname to pull zone
- Remove hostname from pull zone
- Set force SSL for pull zone
- List pull zone HTTP access logs
- Calculate costs

Usage
-----

[](#usage)

Install with composer:

```
composer require corbpie/bunny-cdn-api

```

Use like:

```
require __DIR__ . '/vendor/autoload.php';

use Corbpie\BunnyCdn\BunnyAPIPull;

$bunny = new BunnyAPIPull();//Initiate the class

echo $bunny->listPullZones();
```

#### Setting API key:

[](#setting-api-key)

**option 1 (preferred)**

Line 12 `bunnyAPI.php`

```
const API_KEY = 'XXXX-XXXX-XXXX';
```

**option 2**

With `apiKey()` (needs setting with each calling of class)

```
$bunny->apiKey('XXXX-XXXX-XXXX');//Bunny api key
```

---

### Storage zone interaction

[](#storage-zone-interaction)

```
require __DIR__ . '/vendor/autoload.php';

use Corbpie\BunnyCdn\BunnyAPIStorage;

$bunny = new BunnyAPIStorage();
```

---

Storage zone name and access key for storage zone interaction (**not needed if just using pull zone functions**)

Set `$access_key = ''` to obtain key automatically (storage name must be accurate)

```
$bunny->zoneConnect($storagename, $access_key);
```

`$storagename` name of storage zone `string`

`$access_key` key/password to storage zone `string` **optional**

---

List storage zones

```
$bunny->listStorageZones();
```

returns `array`

---

Add a storage zone

```
$bunny->addStorageZone($newstoragezone);
```

`$newstoragezone` name of storage zone to create `string`

---

Delete a storage zone

```
$bunny->deleteStorageZone($id);
```

`$id` id of storage zone to delete `int`

---

Get directory size

```
$dir = "media/images/dogs";

$bunny->dirSize($dir);
```

`$dir` directory to get size of `string`

---

Return current directory

```
$bunny->currentDir();
```

returns `string`

---

Change directory

```
$dir = "media/images/dogs";

$bunny->changeDir($dir);
```

`$dir` directory navigation (FTP rules) `string`

---

Check folder exists

```
$bunny->folderExists($path);
```

`$path` the folder path `string`

Returns `bool`

---

Check file exists

```
$file = "media/images/dogs/collie.jpg";

$bunny->fileExists($file);
```

`$file` the full file path including the filename `string`

Returns `bool`

---

Move to the parent directory

```
$bunny->moveUpOne();
```

---

Create a folder in the current directory

```
$new_folder = "dogs"

$bunny->createFolder($new_folder);
```

`$new_folder` Create a folder in the current directory `string`

---

Delete folder

```
$bunny->deleteFolder($folder_name);
```

`$folder_name` Name of the folder to delete (folder must be empty) `string`

---

Delete a file

```
$bunny->deleteFile($name);
```

`$name` Name of file to delete `string`

---

Delete all files in a folder

```
$bunny->deleteAllFiles($dir);
```

`$dir` Directory to delete all files in `string`

---

Rename a file

BunnyCDN does not allow for ftp\_rename so file copied to a new name and then the old file is deleted.

```
$directory = "media/images/dogs";
$old_file_name = "collie.jpg";
$new_file_name = "poodle.jpg";

$bunny->renameFile($directory, $old_file_name, $new_file_name);
```

`$directory` Directory that contains the file `string`

`$old_name` Object that is being renamed `string`

`$new_name` New name for object `string`

---

Move a file

```
$bunny->moveFile($file, $move_to);
```

`$file` File to move `string`

`$move_to` Directory to move file to `string`

---

Download a file

```
$bunny->downloadFile($save_as, $get_file, $mode);
```

`$save_as` Save file as `string`

`$get_file` File to download `string`

`$mode` FTP mode to use `INT`

---

Download all files in a directory

```
$bunny->downloadAll($dir_dl_from, $dl_into, $mode);
```

`$dir_dl_from` Directory to download all from `string`

`$dl_into` Download into `string`

`$mode` FTP mode to use `INT`

---

Upload a file

```
$bunny->uploadFile($upload, $upload_as, $mode);
```

`$upload` File to upload `string`

`$upload_as` Upload as `string`

`$mode` FTP mode to use `INT`

---

Upload all files from a local folder

```
$bunny->uploadAllFiles($dir, $place, $mode);
```

`$dir` Upload all files from this directory `string`

`$place` Upload to `string`

`$mode` FTP mode to use `INT`

---

Return storage zone files and folder data (Original)

```
$bunny->listAllOG();
```

returns `array`

---

Return storage zone directory files formatted

```
$bunny->listFiles($location);
```

`$location` Directory to get and return data `string`

returns `array`

---

Return storage zone directory folders formatted

```
$bunny->listFolders($location);
```

`$location` Directory to get and return data `string`

returns `array`

---

Return storage zone directory file and folders formatted

```
$bunny->listAll($location);
```

`$location` Directory to get and return data `string`

returns `array`

---

List all pull zones and data

```
$bunny->listPullZones();
```

returns `array`

---

List pull zones data for id

```
$bunny->pullZoneData($id);
```

`$id` Pull zone to get data from `int`

returns `array`

---

Purge pull zone data

```
$bunny->purgePullZone($id);
```

`$id` Pull zone to purge `int`

---

Delete pull zone data

```
$bunny->deletePullZone($id);
```

`$id` Pull zone to delete `int`

---

Lists pullzone hostnames and amount

```
$bunny->pullZoneHostnames($pullzone_id);
```

---

Add hostname to pull zone

```
$bunny->addHostnamePullZone($id, $hostname);
```

`$id` Pull zone hostname will be added to `int`

`$hostname` Hostname to add `string`

---

Remove a hostname from pull zone

```
$bunny->removeHostnamePullZone($id, $hostname);
```

`$id` Pull zone hostname be removed from `int`

`$hostname` Hostname to remove `string`

---

Change force SSL status for pull zone

```
$bunny->forceSSLPullZone($id, $hostname, $force_ssl);
```

`$id` Pull zone hostname change status `int`

`$hostname` Affected hostname `string`

`$force_ssl` True = on, FALSE = off `bool`

---

Add ip to block for pullzone

```
$bunny->addBlockedIpPullZone($pullzone_id, $ip, $db_log = false);
```

---

Un block an ip for pullzone

```
$bunny->unBlockedIpPullZone($pullzone_id, $ip, $db_log = false);
```

---

List all blocked ip's for pullzone

```
$bunny->listBlockedIpPullZone($pullzone_id);
```

---

Purge cache for a URL

```
$bunny->purgeCache($url, $async = false);
```

`$url` Purge cache for this url `string`

`$async` Dont wait for the purge before returning result `bool`

---

Pull zone logs as formatted array

```
$bunny->pullZoneLogs($id, $date);
```

`$id` Pull zone id `int`

`$date` Date for logs, only past 3 days (mm-dd-yy) `string`

---

Get usage statistics

```
$bunny->getStatistics();
```

returns `array`

---

Get billing data

```
$bunny->getBilling();
```

returns `array`

---

Get account balance

```
$bunny->balance();
```

returns `float`

---

Get monthly charge

```
$bunny->monthCharges();
```

returns `float`

---

Get monthly charge breakdown for region

```
$bunny->monthChargeBreakdown();
```

returns `array`

---

Lists total billing amount and first date time

```
$bunny->totalBillingAmount();
```

returns `array`

---

Apply a coupon code

```
$bunny->applyCoupon($code);
```

---

Set Json header

```
$bunny->jsonHeader();
```

---

Convert/format bytes to other data types

```
$bunny->convertBytes($bytes, $convert_to = 'GB', $format = true, $decimals = 2);
```

---

Convert bool to int value

```
$bunny->boolToInt($bool);
```

returns `int`

---

Close connection (Optional)

```
$bunny->closeConnection();
```

---

### Video streaming zone interaction

[](#video-streaming-zone-interaction)

Calling and setting stream library access key

```
require __DIR__ . '/vendor/autoload.php';

use Corbpie\BunnyCdn\BunnyAPIStream;

$bunny = new BunnyAPIStream();

$bunny->streamLibraryAccessKey('XXXX-XXXXX-XXXX-XXXX');

//Or set stream library access key at line 14 in BunnyAPI.php
```

---

**You can only get the video library id from your bunny.net stream library page**Set video stream library id

```
$bunny->setStreamLibraryId($library_id);
```

`$library_id` stream library id `int`

---

Get video collections

Requires `setStreamLibraryId()` to be set.

```
$bunny->getVideoCollections();
```

---

Set video collection guid

```
$bunny->setStreamCollectionGuid($collection_guid);
```

`$collection_guid` video collection guid `string`

---

Set video guid

```
$bunny->setStreamVideoGuid($video_guid);
```

`$video_guid` video guid `string`

---

Get video collections for library id

Requires `setStreamLibraryId()` to be set.

```
$bunny->getStreamCollections($page, $items_pp,$order_by);
```

`$page` page number `int`

`$items_pp` items to show `int`

`$order_by` order by `string`

---

Get streams for a collection

Requires `setStreamLibraryId()` and `setStreamCollectionGuid()` to be set.

```
$bunny->getStreamForCollection();
```

---

Update stream collection

Requires `setStreamLibraryId()` and `setStreamCollectionGuid()` to be set.

```
$bunny->updateCollection($updated_collection_name);
```

`$updated_collection_name` the name to update video collection to `string`

---

Delete stream collection

Requires `setStreamLibraryId()` and `setStreamCollectionGuid()` to be set.

```
$bunny->deleteCollection();
```

---

Create stream collection

Requires `setStreamLibraryId()` to be set.

```
$bunny->createCollection($new_collection_name);
```

`$new_collection_name` the name for your new video collection `string`

---

List videos for library

Requires `setStreamLibraryId()` to be set.

```
$bunny->listVideos($collection_guid);
```

`$collection_guid` video collection guid `string`

---

Get video information

Requires `setStreamLibraryId()` to be set.

```
$bunny->getVideo($collection_guid);
```

`$collection_guid` video collection guid `string`

---

Delete video

Requires `setStreamLibraryId()` to be set.

```
$bunny->deleteVideo($collection_guid);
```

`$library_id` library id `int`

`$collection_guid` video collection guid `string`

---

Create video

Requires `setStreamLibraryId()` to be set.

```
$bunny->createVideo($video_title);
```

`$video_title` video title `string`

---

Create video for collection

Requires `setStreamLibraryId()` and `setStreamCollectionGuid()` to be set.

```
$bunny->createVideoForCollection($video_title);
```

`$video_title` video title `string`

---

Upload video

Requires `setStreamLibraryId()` to be set.

Need to use `createVideo()` first to get video guid

```
$bunny->uploadVideo($video_guid, $video_to_upload);
```

`$video_guid` video guid `string`

`$video_to_upload` video filename `string`

---

Set thumbnail for video

Requires `setStreamLibraryId()` to be set.

```
$bunny->setThumbnail($video_guid, $thumbnail_url);
```

`$video_guid` video guid `string`

`$thumbnail_url` image url `string`

---

Get video resolutions

Requires `setStreamLibraryId()` to be set.

```
$bunny->videoResolutionsArray($video_guid);
```

---

Get video size

Requires `setStreamLibraryId()` to be set.

```
$bunny->videoSize($video_guid);
```

---

Add captions

Requires `setStreamLibraryId()` to be set.

```
$bunny->addCaptions($video_guid, $collection_guid, $label, $captions_file);
```

`$video_guid` video guid `string`

`$srclang` caption srclang `string`

`$label` label for captions `string`

`$captions_file` caption file URL `string`

---

Delete captions

Requires `setStreamLibraryId()` to be set.

```
$bunny->deleteCaptions($library_id, $video_guid, $srclang);
```

`$video_guid` video guid `string`

`$srclang` captions srclang `string`

---

### DNS zone interaction

[](#dns-zone-interaction)

```
require __DIR__ . '/vendor/autoload.php';

use Corbpie\BunnyCdn\BunnyAPIDNS;

$bunny = new BunnyAPIDNS();
```

---

Get DNS all zones

```
$bunny->getDNSZones();
```

`$library_id` stream library id `int`

---

Get DNS zone

```
$bunny->getDNSZone($zone_id);
```

`$zone_id` DNS zone id `int`

---

Add a DNS zone

```
$bunny->addDNSZone($domain, $logging);
```

`$domain` domain name `string``$logging` use logging `bool`

---

Add a DNS zone full

```
$parameters = array(
    'Domain' => 'zonedomain.com', 'NameserversDetected' => true, 'CustomNameserversEnabled' => true,
    'Nameserver1' => 'customns1.com', 'Nameserver2' => 'customns2.com', 'SoaEmail' => 'contact@zonedomain.com',
    'DateModified' => '2022-08-18 23:59:59', 'DateCreated' => '2022-08-18 23:59:59', 'NameserversNextCheck' => '2022-08-28 23:59:59',
    'LoggingEnabled' => true, 'LoggingIPAnonymizationEnabled' => true
);
$bunny->addDNSZoneFull($parameters);
```

`$parameters` parameters to create `array`

---

Delete DNS zone

```
$bunny->deleteDNSZone($zone_id);
```

`$zone_id` DNS zone id `int`

---

DNS zone statistics

```
$bunny->getDNSZoneStatistics($zone_id);
```

`$zone_id` DNS zone id `int`

---

Update DNS nameservers

```
$bunny->updateDNSZoneNameservers($zone_id, $custom_ns, $ns_one, $ns_two);
```

`$zone_id` DNS zone id `int``$custom_ns` use custom nameservers `bool``$ns_one` NS one `string``$ns_two` NS two `string`

---

Update DNS SOA email

```
$bunny->updateDNSZoneNameservers($zone_id, $soa_email);
```

`$zone_id` DNS zone id `int``$soa_email` NS one `string`

---

Add a DNS record by using parameters [https://docs.bunny.net/reference/dnszonepublic\_addrecord](https://docs.bunny.net/reference/dnszonepublic_addrecord)

```
$parameters = array('Type' => 0, 'Ttl' => 120, 'Accelerated' => true, 'Weight' => 200);
$bunny->addDNSRecord($zone_id, $name, $value, $parameters);
```

`$zone_id` DNS zone id `int``$name` name `string``$value` IP address `string``$parameters` `array`

---

Add DNS A record

```
$bunny->addDNSRecordA($zone_id, $hostname, $ipv4);
```

`$zone_id` DNS zone id `int``$hostname` hostname `string``$ipv4` IPv4 address `string`

---

Add DNS AAAA record

```
$bunny->addDNSRecordAAAA($zone_id, $hostname, $ipv6);
```

`$zone_id` DNS zone id `int``$hostname` hostname `string``$ipv6` IPv6 address `string`

---

Add DNS CNAME record

```
$bunny->addDNSRecordCNAME($zone_id, $hostname, $target);
```

`$zone_id` DNS zone id `int``$hostname` hostname `string``$target` `string`

---

Add DNS MX record

```
$bunny->addDNSRecordMX($zone_id, $hostname, $mail, $priority);
```

`$zone_id` DNS zone id `int``$hostname` hostname `string``$mail` mail server `string``$priority` `int`

---

Add DNS TXT record

```
$bunny->addDNSRecordTXT($zone_id, $hostname, $content);
```

`$zone_id` DNS zone id `int``$hostname` hostname `string``$content` txt contents `string`

---

Add DNS NS record

```
$bunny->addDNSRecordNS($zone_id, $hostname, $target);
```

`$zone_id` DNS zone id `int``$hostname` hostname `string``$target` `string`

---

Add DNS redirect

```
$bunny->addDNSRecordRedirect($zone_id, $hostname, $url);
```

`$zone_id` DNS zone id `int``$hostname` hostname `string``$url` redirect to `string`

---

Update DNS A record

```
$bunny->updateDNSRecordA($zone_id, $dns_id, $hostname, $ipv4);
```

`$zone_id` DNS zone id `int``$dns_id` DNS record id `int``$hostname` hostname `string``$ipv4` ipv4 address `string`

---

Update DNS AAAA record

```
$bunny->updateDNSRecordAAAA($zone_id, $dns_id, $hostname, $ipv6);
```

`$zone_id` DNS zone id `int``$dns_id` DNS record id `int``$hostname` hostname `string``$ipv6` ipv6 address `string`

---

Disable DNS record

```
$bunny->disableDNSRecord($zone_id, $dns_id);
```

`$zone_id` DNS zone id `int``$dns_id` DNS record id `int`

---

Enable DNS record

```
$bunny->enableDNSRecord($zone_id, $dns_id);
```

`$zone_id` DNS zone id `int``$dns_id` DNS record id `int`

---

Delete DNS record

```
$bunny->deleteDNSRecord($zone_id, $dns_id);
```

`$zone_id` DNS zone id `int``$dns_id` DNS record id `int`

---

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity46

Moderate usage in the ecosystem

Community16

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 90.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~118 days

Recently: every ~149 days

Total

12

Last Release

735d ago

PHP version history (4 changes)v1.2PHP &gt;=7.4

v1.6PHP &gt;=8.0

v1.9.2PHP &gt;=8.1

v1.9.5PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/d10a4771b8a6b05a8892e38d902bd35e3f05b0009b58360edf158cda1b1c221b?d=identicon)[corbpie](/maintainers/corbpie)

---

Top Contributors

[![cp6](https://avatars.githubusercontent.com/u/9095402?v=4)](https://github.com/cp6 "cp6 (104 commits)")[![macbookandrew](https://avatars.githubusercontent.com/u/784333?v=4)](https://github.com/macbookandrew "macbookandrew (10 commits)")[![Xarex](https://avatars.githubusercontent.com/u/756808?v=4)](https://github.com/Xarex "Xarex (1 commits)")

---

Tags

bunnybunnycdnbunnycdn-apibunnycdn-storagebunnynethacktoberfestpullzone

### Embed Badge

![Health badge](/badges/corbpie-bunny-cdn-api/health.svg)

```
[![Health](https://phpackages.com/badges/corbpie-bunny-cdn-api/health.svg)](https://phpackages.com/packages/corbpie-bunny-cdn-api)
```

###  Alternatives

[friendsofsymfony/rest-bundle

This Bundle provides various tools to rapidly develop RESTful API's with Symfony

2.8k73.3M319](/packages/friendsofsymfony-rest-bundle)[php-http/discovery

Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations

1.3k309.5M1.2k](/packages/php-http-discovery)[pusher/pusher-php-server

Library for interacting with the Pusher REST API

1.5k94.8M293](/packages/pusher-pusher-php-server)[react/http

Event-driven, streaming HTTP client and server implementation for ReactPHP

78026.4M414](/packages/react-http)[php-http/curl-client

PSR-18 and HTTPlug Async client with cURL

48347.0M384](/packages/php-http-curl-client)[smi2/phpclickhouse

PHP ClickHouse Client

84310.1M71](/packages/smi2-phpclickhouse)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
