--- name: bunny description: Integrate Bunny.net services (CDN, Storage, Stream, DNS, Edge Scripting, Shield, Magic Containers, Optimizer, Database). Use when building with Bunny.net APIs, deploying to Bunny CDN, uploading files to Edge Storage, managing video streaming, configuring DNS zones, writing edge scripts, setting up WAF/DDoS protection, deploying containers, or optimizing images. Triggers on "bunny", "bunnycdn", "b-cdn", "pull zone", "edge storage", "bunny stream". --- # Bunny.net Integration Integrate with Bunny.net's cloud platform: CDN, Storage, Stream, DNS, Edge Scripting, Shield (WAF/DDoS), Magic Containers, Optimizer, and Database. **Scope:** This skill handles Bunny.net API integration, configuration, and deployment. Does NOT handle other CDN providers (Cloudflare, Fastly, AWS CloudFront). ## Authentication Three credential types — each API uses its own key via `AccessKey` header: | Credential | Used For | Where to Find | |-----------|----------|---------------| | Account API Key | Core API (Pull Zones, DNS, Statistics) | Dashboard → Account Settings | | Storage Zone Password | Edge Storage API | Dashboard → Storage Zone → FTP & API Access | | Stream Library API Key | Stream API | Dashboard → Stream → API | ```bash # All APIs use the same header format curl -H "AccessKey: YOUR_KEY" -H "Content-Type: application/json" https://api.bunny.net/... ``` ## API Base URLs | Service | Base URL | |---------|----------| | Core (CDN, DNS, Zones) | `https://api.bunny.net` | | Edge Storage | `https://{region}.bunnycdn.com` | | Stream | `https://video.bunnycdn.com` | | Shield | `https://api.bunny.net` (via Core) | | Edge Scripting | `https://api.bunny.net` (via Core) | Storage regions: `storage` (Falkenstein), `uk`, `ny`, `la`, `sg`, `se`, `br`, `jh`, `syd` ## Quick Reference — Common Workflows ### 1. CDN Pull Zone Setup ```bash # Create pull zone curl -X POST https://api.bunny.net/pullzone \ -H "AccessKey: $BUNNY_API_KEY" -H "Content-Type: application/json" \ -d '{"Name":"my-cdn","OriginUrl":"https://origin.example.com"}' # Add custom hostname curl -X POST https://api.bunny.net/pullzone/{id}/addHostname \ -H "AccessKey: $BUNNY_API_KEY" -H "Content-Type: application/json" \ -d '{"Hostname":"cdn.example.com"}' # Purge cache curl -X POST https://api.bunny.net/pullzone/{id}/purgeCache \ -H "AccessKey: $BUNNY_API_KEY" # Purge single URL curl -X POST "https://api.bunny.net/purge?url=https://cdn.example.com/file.js" \ -H "AccessKey: $BUNNY_API_KEY" ``` ### 2. Edge Storage (File Operations) ```bash # Upload file (raw binary body, no encoding) curl -X PUT https://storage.bunnycdn.com/{zone}/{path}/file.jpg \ -H "AccessKey: $STORAGE_PASSWORD" \ -H "Content-Type: application/octet-stream" \ --upload-file ./file.jpg # Download file curl -X GET https://storage.bunnycdn.com/{zone}/{path}/file.jpg \ -H "AccessKey: $STORAGE_PASSWORD" -o file.jpg # List directory curl https://storage.bunnycdn.com/{zone}/{path}/ \ -H "AccessKey: $STORAGE_PASSWORD" # Delete file curl -X DELETE https://storage.bunnycdn.com/{zone}/{path}/file.jpg \ -H "AccessKey: $STORAGE_PASSWORD" ``` ### 3. Stream Video ```bash # Create video entry curl -X POST https://video.bunnycdn.com/library/{libId}/videos \ -H "AccessKey: $STREAM_API_KEY" -H "Content-Type: application/json" \ -d '{"title":"My Video"}' # Upload video (raw binary) curl -X PUT https://video.bunnycdn.com/library/{libId}/videos/{videoId} \ -H "AccessKey: $STREAM_API_KEY" \ --data-binary '@video.mp4' # Fetch from URL curl -X POST https://video.bunnycdn.com/library/{libId}/videos/fetch \ -H "AccessKey: $STREAM_API_KEY" -H "Content-Type: application/json" \ -d '{"url":"https://example.com/video.mp4"}' # Embed: