Skip to main content

Bunny.net

Bunny.net is a global edge platform that combines content delivery networking (CDN), cloud storage, video streaming, and edge computing into a single high-performance service. With a network backbone exceeding 250 Tbps and over 119 points of presence worldwide, bunny.net accelerates the delivery of websites, applications, media files, and APIs. Its platform includes pull zones for CDN acceleration, Edge Storage for distributed object storage, Bunny Stream for video hosting and transcoding, scriptable DNS, and DDoS protection. Bunny.net is used by content publishers, e-commerce platforms, media companies, and SaaS providers seeking cost-effective, low-latency global content delivery.

Bunny.net icon

Power end-to-end data operations for your Bunny.net API with Nexla. Our bi-directional Bunny.net connector is purpose-built for Bunny.net, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Bunny.net or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Bunny.net workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

To connect Nexla to Bunny.net, you need a Bunny.net account API key. Bunny.net uses API key-based authentication for all Core API requests — the key is passed as the AccessKey HTTP header with each request to https://api.bunny.net.

Bunny.net Account Requirements

  • An active bunny.net account. Sign up at bunny.net if you do not already have one.
  • Access to the bunny.net dashboard at dash.bunny.net.

Retrieve Your Bunny.net Account API Key

Each bunny.net account has a single Account API Key that provides access to the Core API. This key is used for managing pull zones, storage zones, DNS, statistics, billing, and other account-level resources.

  1. Sign in to the bunny.net dashboard.

  2. Click on your account name or profile icon in the upper right corner of the dashboard.

  3. Select Account Settings from the dropdown menu.

  4. In the Account Settings page, scroll down to the API section.

  5. Your Account API Key is displayed in the API section. Click the Show button or the copy icon to reveal and copy the key value.

Important

Your Account API Key provides full access to your bunny.net account. Store it in a secure location such as a password manager or secrets vault. Never share the key publicly or include it in client-side code.

Bunny.net uses different access keys for different services. The Account API Key is used for the Core API (api.bunny.net). Edge Storage zones use a separate Storage Zone Password, and Bunny Stream video libraries use a Stream API Key. For Nexla integrations with the Core API, use the Account API Key. For complete information, refer to the bunny.net authentication documentation.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter your bunny.net Account API Key in the API Key Value field. This is the key you copied from the bunny.net dashboard. The key is passed as the AccessKey HTTP header with every API request Nexla makes to the bunny.net Core API on your behalf.

    The Account API Key authenticates all Core API operations, including reading pull zone configurations, retrieving statistics, and managing DNS zones. Ensure you are using the Account API Key (found in Account Settings), not a Storage Zone Password or Stream API Key.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Bunny.net connector tile, then select the credential that will be used to connect to the Bunny.net instance, and click Next; or, create a new Bunny.net credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Bunny.net endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.

List Accounts

Returns a paginated list of all accounts in the Bunny organization. Use this endpoint to retrieve account-level records from your Bunny.net instance via the GraphQL API.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.accounts.nodes[*]; use this path in the Path to Data field to extract individual account records.

Your Bunny.net subdomain is configured in your Bunny.net credential. This endpoint uses GraphQL — the POST body contains the query, which is pre-configured in the template.

List Account Balances

Returns a paginated list of account balance records. Use this endpoint to track financial balances across accounts in your Bunny.net organization.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.accountBalances.nodes[*]; use this path in the Path to Data field.

This endpoint returns balance history records. Use pagination parameters in the GraphQL query to retrieve large datasets incrementally.

List Contacts

Returns a paginated list of contacts. Use this endpoint to retrieve contact records stored in your Bunny.net organization.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.contacts.nodes[*]; use this path in the Path to Data field.

Contact records include customer and business contact details. Pagination is handled via GraphQL cursor-based pagination in the query.

List Entities

Returns a paginated list of legal entities. Use this endpoint to retrieve entity records representing the legal structures within your Bunny.net organization.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.entities.nodes[*]; use this path in the Path to Data field.

Legal entity records typically include name, registration details, and associated accounts.

List Invoices

Returns a paginated list of invoices. Use this endpoint to retrieve invoice records for billing and financial reporting purposes.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.invoices.nodes[*]; use this path in the Path to Data field.

Invoice records include amounts, dates, line items, and payment status. For large invoice histories, use GraphQL pagination to retrieve data incrementally.

List Invoice Items

Returns a paginated list of invoice line items. Use this endpoint to retrieve granular line-item detail from invoices for detailed billing analysis.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.invoiceItems.nodes[*]; use this path in the Path to Data field.

Invoice items represent individual charges within an invoice and may include product, quantity, unit price, and tax information.

List Payments

Returns a paginated list of payment records. Use this endpoint to track payments received and reconcile payment activity in your Bunny.net organization.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.payments.nodes[*]; use this path in the Path to Data field.

Payment records include amount, date, method, and associated invoice references.

List Products

Returns a paginated list of products. Use this endpoint to retrieve the product catalog defined in your Bunny.net organization.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.products.nodes[*]; use this path in the Path to Data field.

Product records include name, description, pricing, and availability details.

List Plans

Returns a paginated list of subscription plans. Use this endpoint to retrieve the subscription plan catalog configured in your Bunny.net organization.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.plans.nodes[*]; use this path in the Path to Data field.

Plan records include pricing tiers, billing cycles, and included features.

List Quotes

Returns a paginated list of sales quotes. Use this endpoint to retrieve quote records for sales pipeline reporting and revenue forecasting.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.quotes.nodes[*]; use this path in the Path to Data field.

Quote records include status, expiration date, line items, and associated contact and account information.

List Quote Charges

Returns a paginated list of quote charge line items. Use this endpoint to retrieve the individual charges associated with sales quotes.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.quoteCharges.nodes[*]; use this path in the Path to Data field.

Quote charge records detail the pricing breakdown within a quote, including quantity, unit price, and discount information.

List Subscriptions

Returns a paginated list of customer subscriptions. Use this endpoint to retrieve active and historical subscription records for revenue reporting and churn analysis.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.subscriptions.nodes[*]; use this path in the Path to Data field.

Subscription records include plan details, billing cycle, start and end dates, and associated account information.

List Subscription Charges

Returns a paginated list of subscription charge records. Use this endpoint to retrieve individual billing charges generated from customer subscriptions.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.subscriptionCharges.nodes[*]; use this path in the Path to Data field.

Subscription charge records include amount, billing date, status, and links to the originating subscription.

List Transactions

Returns a paginated list of financial transactions. Use this endpoint to retrieve a comprehensive record of all financial transactions within your Bunny.net organization.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.transactions.nodes[*]; use this path in the Path to Data field.

Transaction records include type, amount, date, and references to related invoices or payments.

List Tenants

Returns a paginated list of tenants. Use this endpoint to retrieve tenant records in multi-tenant Bunny.net deployments.

  • Issues a POST request to https://{subdomain}.bunny.com/graphql using a GraphQL query.
  • Response data is located at $.data.tenants.nodes[*]; use this path in the Path to Data field.

Tenant records include tenant identification and configuration details. This endpoint is relevant for Bunny.net instances operating in a multi-tenant architecture.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Bunny.net data sources can also be manually configured to ingest data from any valid Bunny.net API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or sources that require custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

The bunny.net Core API base URL is https://api.bunny.net; append the resource path to target a specific endpoint (e.g., /pullzone, /storagezone, /dnszone, /statistics, /billing, /videolibrary). Many Bunny.net list endpoints wrap results in an Items property — use $.Items[*] as the Path to Data to extract individual records. Date/time macros are particularly useful for the /statistics endpoint, which accepts dateFrom and dateTo query parameters for rolling reporting windows. You do not need to add the AccessKey authentication header; Nexla includes it automatically from your Bunny.net credential. Additional information about available endpoints is available in the bunny.net Core API reference.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Bunny.net data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Bunny.net destination, and select the Send to Destination option from the menu. Select the Bunny.net connector from the list of available destination connectors, then select the credential that will be used to connect to the Bunny.net organization, and click Next; or, create a new Bunny.net credential for use in this flow.

Manual configuration

Bunny.net destinations can be manually configured to send data to any valid Bunny.net API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks. You can also configure Nexla to automatically send the response received from the Bunny.net API after each call to a new Nexla webhook data source.

The Bunny.net Core API expects request bodies in JSON format for all write operations. For update/upsert operations, include the ID of the object to be updated at the end of the URL (e.g., https://api.bunny.net/pullzone/{id}). You do not need to add the AccessKey authentication header or the Content-Type: application/json header — Nexla includes both automatically. The Core API processes most resources individually, but some endpoints such as PUT /dnszone/{id}/records accept an array of record objects, making record batching appropriate in that case. For the complete list of endpoints and required request body structures, see the bunny.net Core API reference.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Bunny.net endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to the Bunny.net API until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.