> ## Documentation Index > Fetch the complete documentation index at: https://bunny.net/docs/llms.txt > Use this file to discover all available pages before exploring further. # Add Pull Zone ## OpenAPI ````yaml https://core-api-public-docs.b-cdn.net/docs/v3/public.json post /pullzone openapi: 3.0.0 info: title: bunny.net API description: >- bunny.net Logo Learn how to use the [bunny.net](https://bunny.net "bunny.net - The content delivery platform that truly hops.") API. Everything that can be done with the control panel can also be achieved with our API documented on this page. To learn how to use the storage API, have a look at our storage API documentation

Third party API clients:


We currently do not maintain an official API library, but you can use one of the third party ones provided here:

https://github.com/codewithmark/bunnycdn (bunny.net PHP library, thanks to Code With Mark)

Note that third party clients are not maintained or developed by bunny.net so we unfortunately cannot offer support for them. termsOfService: https://bunny.net/tos contact: name: bunny.net url: https://docs.bunny.net email: support@bunny.net version: 1.0.0 servers: - url: https://api.bunny.net description: bunny.net API Server security: - AccessKey: [] tags: - name: Stream Video Library - name: User - name: AuditLog - name: Storage Zone - name: Statistics - name: Search - name: Pull Zone - name: Pricing - name: Load Balancer - name: DNS Zone - name: DNSSEC - name: Billing - name: API Keys - name: Affiliate - name: Countries - name: Purge - name: Region paths: /pullzone: post: tags: - Pull Zone summary: Add Pull Zone operationId: PullZonePublic_Add requestBody: x-name: pullZoneModel description: The Pull Zone that will be added content: application/json: schema: $ref: '#/components/schemas/PullZoneAddModel' required: true x-position: 1 responses: '201': description: The Pull Zone was successfully added '400': description: Failed adding Pull Zone content: application/json: schema: $ref: '#/components/schemas/ApiErrorData' '401': description: The request authorization failed '500': description: Internal Server Error components: schemas: PullZoneAddModel: type: object additionalProperties: false required: - Name properties: OriginUrl: type: string description: Sets the origin URL of the Pull Zone nullable: true AllowedReferrers: type: array description: >- Sets the list of referrer hostnames that are allowed to access the pull zone. Requests containing the header Referer: hostname that is not on the list will be rejected. If empty, all the referrers are allowed nullable: true items: type: string BlockedReferrers: type: array description: >- Sets the list of referrer hostnames that are blocked from accessing the pull zone. nullable: true items: type: string BlockNoneReferrer: type: boolean nullable: true BlockedIps: type: array description: >- Sets the list of IPs that are blocked from accessing the pull zone. Requests coming from the following IPs will be rejected. If empty, all the IPs will be allowed nullable: true items: type: string EnableGeoZoneUS: type: boolean description: >- Determines if the delivery from the North America region should be enabled for this pull zone nullable: true EnableGeoZoneEU: type: boolean description: >- Determines if the delivery from the Europe region should be enabled for this pull zone nullable: true EnableGeoZoneASIA: type: boolean description: >- Determines if the delivery from the Asia / Oceania regions should be enabled for this pull zone nullable: true EnableGeoZoneSA: type: boolean description: >- Determines if the delivery from the South America region should be enabled for this pull zone nullable: true EnableGeoZoneAF: type: boolean description: >- Determines if the delivery from the Africa region should be enabled for this pull zone nullable: true IpFamilyPolicy: description: >- Address-family policy: 0=IPv4Only, 1=DualStack (default, best latency and compatibility), 2=DualStackPreferIPv6, 3=IPv6Only. 0 = IPv4 Only 1 = Dual Stack 2 = Dual Stack (Prefer IPv6) 3 = IPv6 Only nullable: true oneOf: - $ref: '#/components/schemas/IpFamilyPolicy' BlockRootPathAccess: type: boolean description: >- Determines if the zone should block requests to the root of the zone. nullable: true BlockPostRequests: type: boolean description: Determines if the POST requests to this zone should be rejected. nullable: true EnableQueryStringOrdering: type: boolean description: Determines if the query string ordering should be enabled. nullable: true EnableWebpVary: type: boolean description: Determines if the WebP Vary feature should be enabled. nullable: true EnableAvifVary: type: boolean description: Determines if the AVIF Vary feature should be enabled. nullable: true EnableMobileVary: type: boolean description: Determines if the Mobile Vary feature is enabled. nullable: true EnableCountryCodeVary: type: boolean description: Determines if the Country Code Vary feature should be enabled. nullable: true EnableCountryStateCodeVary: type: boolean description: Determines if the Country State Code Vary feature should be enabled. nullable: true EnableHostnameVary: type: boolean description: Determines if the Hostname Vary feature should be enabled. nullable: true EnableCacheSlice: type: boolean description: >- Determines if cache slicing (Optimize for video) should be enabled for this zone nullable: true ZoneSecurityEnabled: type: boolean description: >- Determines if the zone token authentication security should be enabled nullable: true ZoneSecurityIncludeHashRemoteIP: type: boolean description: >- Determines if the token authentication IP validation should be enabled nullable: true IgnoreQueryStrings: type: boolean description: >- Determines if the Pull Zone should ignore query strings when serving cached objects (Vary by Query String) nullable: true MonthlyBandwidthLimit: type: integer description: >- Sets the monthly limit of bandwidth in bytes that the pullzone is allowed to use format: int64 nullable: true AccessControlOriginHeaderExtensions: type: array description: Sets the list of extensions that will return the CORS headers nullable: true items: type: string EnableAccessControlOriginHeader: type: boolean description: Determines if CORS headers should be enabled nullable: true DisableCookies: type: boolean description: >- Determines if the Pull Zone should automatically remove cookies from the responses nullable: true BudgetRedirectedCountries: type: array description: >- Sets the list of two letter Alpha2 country codes that will be redirected to the cheapest possible region nullable: true items: type: string BlockedCountries: type: array description: >- Sets the list of two letter Alpha2 country codes that will be blocked from accessing the zone nullable: true items: type: string CacheControlMaxAgeOverride: type: integer description: Sets the cache control override setting for this zone format: int64 nullable: true CacheControlPublicMaxAgeOverride: type: integer description: Sets the browser cache control override setting for this zone format: int64 nullable: true CacheControlBrowserMaxAgeOverride: type: integer description: >- (Deprecated) Sets the browser cache control override setting for this zone format: int64 nullable: true AddHostHeader: type: boolean description: >- Determines if the zone should forward the requested host header to the origin nullable: true AddCanonicalHeader: type: boolean description: Determines if the canonical header should be added by this zone nullable: true EnableLogging: type: boolean description: Determines if the logging should be enabled for this zone nullable: true LoggingIPAnonymizationEnabled: type: boolean description: Determines if the log anonoymization should be enabled nullable: true PermaCacheStorageZoneId: type: integer description: The ID of the storage zone that should be used as the Perma-Cache format: int64 nullable: true PermaCacheType: description: |- Determines Perma-Cache behavior 0 = Automatic 1 = Manual maximum: 1 minimum: 0 nullable: true oneOf: - $ref: '#/components/schemas/PermaCacheType' AWSSigningEnabled: type: boolean description: Determines if the AWS signing should be enabled or not nullable: true AWSSigningKey: type: string description: Sets the AWS signing key nullable: true AWSSigningRegionName: type: string description: Sets the AWS signing region name nullable: true AWSSigningSecret: type: string description: Sets the AWS signing secret key nullable: true EnableOriginShield: type: boolean description: Determines if the origin shield should be enabled nullable: true OriginShieldZoneCode: type: string description: Determines the zone code where the origin shield should be set up nullable: true EnableTLS1: type: boolean description: Determines if the TLS 1 should be enabled on this zone nullable: true EnableTLS1_1: type: boolean description: Determines if the TLS 1.1 should be enabled on this zone nullable: true TlsSecurityLevel: description: |- The minimum TLS security level enforced on this zone 0 = Legacy 1 = Compatible 2 = Modern Only nullable: true oneOf: - $ref: '#/components/schemas/TlsSecurityLevelType' CacheErrorResponses: type: boolean description: >- Determines if the cache error responses should be enabled on the zone nullable: true VerifyOriginSSL: type: boolean description: >- Determines if the SSL certificate should be verified when connecting to the origin nullable: true LogForwardingEnabled: type: boolean description: Sets the log forwarding token for the zone nullable: true LogForwardingHostname: type: string description: Sets the log forwarding destination hostname for the zone nullable: true LogForwardingPort: type: integer description: Sets the log forwarding port for the zone format: int32 nullable: true LogForwardingToken: type: string description: Sets the log forwarding token for the zone nullable: true LogForwardingProtocol: description: |- Sets the log forwarding protocol type 0 = UDP 1 = TCP 2 = TCP Encrypted 3 = Datadog nullable: true oneOf: - $ref: '#/components/schemas/PullZoneLogForwarderProtocolType' LoggingSaveToStorage: type: boolean description: Determines if the logging permanent storage should be enabled nullable: true LoggingStorageZoneId: type: integer description: >- Sets the Storage Zone id that should contain the logs from this Pull Zone format: int64 nullable: true FollowRedirects: type: boolean description: >- Determines if the zone should follow redirects return by the origin and cache the response nullable: true ConnectionLimitPerIPCount: type: integer description: >- Determines the maximum number of connections per IP that will be allowed to connect to this Pull Zone format: int32 nullable: true RequestLimit: type: integer description: >- Determines the maximum number of requests per second that will be allowed to connect to this Pull Zone format: int32 nullable: true LimitRateAfter: type: number description: >- Determines the amount of traffic transferred before the client is limited format: double nullable: true LimitRatePerSecond: type: integer description: >- Determines the maximum number of requests per second coming from a single IP before it is blocked. format: int32 nullable: true BurstSize: type: integer description: Determines the maximum burst requests before an IP is blocked format: int32 nullable: true ErrorPageEnableCustomCode: type: boolean description: Determines if custom error page code should be enabled. nullable: true ErrorPageCustomCode: type: string description: Contains the custom error page code that will be returned nullable: true ErrorPageEnableStatuspageWidget: type: boolean description: >- Determines if the statuspage widget should be displayed on the error pages nullable: true ErrorPageStatuspageCode: type: string description: The statuspage code that will be used to build the status widget nullable: true ErrorPageWhitelabel: type: boolean description: Determines if the error pages should be whitelabel or not nullable: true OptimizerEnabled: type: boolean description: Determines if the optimizer should be enabled for this zone nullable: true OptimizerTunnelEnabled: type: boolean description: >- Determines if the optimizer origin tunnel system should be enabled for this zone nullable: true OptimizerTunnelActiveProbingEnabled: type: boolean description: >- Determines if the optimizer tunnel system active probing should be enabled for this zone nullable: true OptimizerDesktopMaxWidth: type: integer description: Determines the maximum automatic image size for desktop clients format: int32 maximum: 5000 minimum: 0 nullable: true OptimizerMobileMaxWidth: type: integer description: Determines the maximum automatic image size for mobile clients format: int32 maximum: 5000 minimum: 0 nullable: true OptimizerImageQuality: type: integer description: Determines the image quality for desktop clients format: int32 maximum: 100 minimum: 1 nullable: true OptimizerMobileImageQuality: type: integer description: Determines the image quality for mobile clients format: int32 maximum: 100 minimum: 1 nullable: true OptimizerEnableWebP: type: boolean description: Determines if the WebP optimization should be enabled nullable: true OptimizerPrerenderHtml: type: boolean description: Determines if the SEO HTML prerender should be enabled nullable: true OptimizerHtmlToMarkdown: description: >- Determines if Markdown automatic generation for AI systems is enabled and which pipeline to use 0 = Off 1 = Simple 2 = Prerendered nullable: true oneOf: - $ref: '#/components/schemas/OptimizerHtmlToMarkdownType' OptimizerLlmsTxt: type: boolean description: Determines if the llms.txt file should be served when requested nullable: true OptimizerEnableManipulationEngine: type: boolean description: Determines the image manipulation should be enabled nullable: true OptimizerMinifyCSS: type: boolean description: Determines if the CSS minifcation should be enabled nullable: true OptimizerMinifyJavaScript: type: boolean description: Determines if the JavaScript minifcation should be enabled nullable: true OptimizerWatermarkEnabled: type: boolean description: Determines if image watermarking should be enabled nullable: true OptimizerWatermarkUrl: type: string description: Sets the URL of the watermark image nullable: true OptimizerWatermarkPosition: description: |- Sets the position of the watermark image 0 = Bottom Left 1 = Bottom Right 2 = Top Left 3 = Top Right 4 = Center 5 = Center Stretch nullable: true oneOf: - $ref: '#/components/schemas/OptimizerWatermarkPosition' OptimizerWatermarkOffset: type: number description: Sets the offset of the watermark image format: double nullable: true OptimizerWatermarkMinImageSize: type: integer description: Sets the minimum image size to which the watermark will be added format: int32 nullable: true OptimizerAutomaticOptimizationEnabled: type: boolean description: Determines if the automatic image optimization should be enabled nullable: true OptimizerClasses: type: array description: Determines the list of optimizer classes nullable: true items: $ref: '#/components/schemas/PullZoneOptimizerClassModel' OptimizerForceClasses: type: boolean description: Determines if the optimizer classes should be forced nullable: true OptimizerStaticHtmlEnabled: type: boolean description: Determines whether optimizer static html feature enabled nullable: true OptimizerStaticHtmlWordPressPath: type: string description: >- Wordpress html path which should be bypassed by permacache in edge rule nullable: true OptimizerStaticHtmlWordPressBypassCookie: type: string description: Wordpress cookie which should be bypassed by permacache in edge rule nullable: true Type: description: |- The type of the pull zone 0 = Premium 1 = Volume nullable: true oneOf: - $ref: '#/components/schemas/PullZoneType' OriginRetries: type: integer description: The number of retries to the origin server format: int32 nullable: true OriginConnectTimeout: type: integer description: >- The amount of seconds to wait when connecting to the origin. Otherwise the request will fail or retry. format: int32 nullable: true OriginResponseTimeout: type: integer description: >- The amount of seconds to wait when waiting for the origin reply. Otherwise the request will fail or retry. format: int32 nullable: true UseStaleWhileUpdating: type: boolean description: Determines if we should use stale cache while cache is updating nullable: true UseStaleWhileOffline: type: boolean description: Determines if we should use stale cache while the origin is offline nullable: true OriginRetry5XXResponses: type: boolean description: Determines if we should retry the request in case of a 5XX response. nullable: true OriginRetryConnectionTimeout: type: boolean description: >- Determines if we should retry the request in case of a connection timeout. nullable: true OriginRetryResponseTimeout: type: boolean description: >- Determines if we should retry the request in case of a response timeout. nullable: true OriginRetryDelay: type: integer description: >- Determines the amount of time that the CDN should wait before retrying an origin request. format: int32 nullable: true DnsOriginPort: type: integer description: Determines the origin port of the pull zone. format: int32 nullable: true DnsOriginScheme: type: string description: Determines the origin scheme of the pull zone. nullable: true QueryStringVaryParameters: type: array description: >- Contains the list of vary parameters that will be used for vary cache by query string. Only alphanumeric characters, dashes and underscores are allowed (values that contain other characters are ignorred). If empty, all parameters will be used to construct the key. nullable: true items: type: string OriginShieldEnableConcurrencyLimit: type: boolean description: Determines if the origin shield concurrency limit is enabled. nullable: true OriginShieldMaxConcurrentRequests: type: integer description: >- Determines the number of maximum concurrent requests allowed to the origin. format: int32 maximum: 10000 minimum: 1 nullable: true EnableCookieVary: type: boolean description: Determines if the Cookie Vary feature is enabled. nullable: true CookieVaryParameters: type: array description: >- Contains the list of vary parameters that will be used for vary cache by cookie string.Only alphanumeric characters, dashes and underscores are allowed (values that contain other characters are ignorred). If empty, cookie vary will not be used. nullable: true items: type: string EnableSafeHop: type: boolean nullable: true OriginShieldQueueMaxWaitTime: type: integer description: Determines the max queue wait time format: int32 nullable: true OriginShieldMaxQueuedRequests: type: integer description: >- Determines the max number of origin requests that will remain in the queue format: int32 maximum: 30000 minimum: 0 nullable: true UseBackgroundUpdate: type: boolean description: Determines if cache update is performed in the background. nullable: true EnableAutoSSL: type: boolean description: >- If set to true, any hostnames added to this Pull Zone will automatically enable SSL. nullable: true LogAnonymizationType: description: |- Sets the log anonymization type for this pull zone 0 = One Digit 1 = Drop nullable: true oneOf: - $ref: '#/components/schemas/LogAnonymizationType' StorageZoneId: type: integer description: The ID of the storage zone that will be used as the origin format: int64 nullable: true EdgeScriptId: type: integer description: The ID of the edge script that will be used as the origin format: int64 nullable: true MiddlewareScriptId: type: integer description: The ID of the middleware script format: int64 nullable: true EdgeScriptExecutionPhase: description: |- The execution phase of the edge script 0 = Cache 1 = Load Balancer 2 = Pre-Cache nullable: true oneOf: - $ref: '#/components/schemas/ExecutionPhase' OriginType: description: |- Determine the type of the origin for this Pull Zone 0 = Origin URL 1 = DNS Accelerate 2 = Storage Zone 3 = Load Balancer 4 = Edge Script 5 = Magic Containers 6 = Push Zone nullable: true oneOf: - $ref: '#/components/schemas/PullZoneOriginType' MagicContainersAppId: type: string nullable: true MagicContainersEndpointId: type: string nullable: true LogFormat: description: |- 0 = Plain 1 = JSON nullable: true oneOf: - $ref: '#/components/schemas/PullZoneLogFormat' LogForwardingFormat: description: |- 0 = Plain 1 = JSON nullable: true oneOf: - $ref: '#/components/schemas/PullZoneLogFormat' ShieldDDosProtectionType: description: |- 0 = Detect Only 1 = Active Standard 2 = Active Aggressive nullable: true oneOf: - $ref: '#/components/schemas/ShieldDDosProtectionType' ShieldDDosProtectionEnabled: type: boolean nullable: true OriginHostHeader: type: string description: Sets the host header that will be sent to the origin nullable: true EnableSmartCache: type: boolean nullable: true EnableRequestCoalescing: type: boolean description: Determines if request coalescing is currently enabled. nullable: true RequestCoalescingTimeout: type: integer description: Determines the lock time for coalesced requests. format: int32 nullable: true DisableLetsEncrypt: type: boolean description: >- If set to true, the built-in let's encrypt will be disabled and requests are passed to the origin. nullable: true EnableBunnyImageAi: type: boolean nullable: true BunnyAiImageBlueprints: type: array nullable: true items: $ref: '#/components/schemas/BunnyAiImageBlueprintModel' PreloadingScreenEnabled: type: boolean description: Determines if the preloading screen is currently enabled nullable: true PreloadingScreenCode: type: string description: The custom preloading screen coed nullable: true PreloadingScreenLogoUrl: type: string description: The preloading screen logo URL nullable: true PreloadingScreenShowOnFirstVisit: type: boolean description: >- Determines if the preloading screen is shown on the first load from a user. PreloadingScreenTheme: description: >- The currently configured preloading screem theme. (0 - Light, 1 - Dark) 0 = Light 1 = Dark nullable: true oneOf: - $ref: '#/components/schemas/PreloadingScreenTheme' PreloadingScreenCodeEnabled: type: boolean description: Determines if the custom preloader screen should be enabled nullable: true PreloadingScreenDelay: type: integer description: >- The delay in miliseconds after which the preloading screen will be displayed (0 - 10000ms) format: int32 maximum: 10000 minimum: 0 nullable: true RoutingFilters: type: array description: The list of routing filters enabled for this zone nullable: true items: type: string StickySessionType: description: |- Whether to use a Sticky Session mechanism for this pull zone 0 = Off 1 = On nullable: true oneOf: - $ref: '#/components/schemas/StickySessionType' StickySessionCookieName: type: string description: Sticky Session Cookie Name nullable: true StickySessionClientHeaders: type: string description: A set of comma-separated header names used to identify clients nullable: true OptimizerEnableUpscaling: type: boolean description: Determines if Optimizer is allowed to upscale images nullable: true EnableWebSockets: type: boolean description: Determines if WebSocket connections are allowed for this Pull Zone. nullable: true MaxWebSocketConnections: type: integer description: >- The maximum global simultaneous WebSocket connections allowed for this Pull Zone. Allowed tiers: 500, 1,000, 2,500, 5,000, 10,000, 25,000. If you send a non-tier value, the value is rounded up to the next tier. Values over 25,000 are rejected, please contact sales if required. format: int32 nullable: true CacheKeyHeaders: type: string description: Vary Cache by Request Headers (comma delimited) nullable: true LoadBalancerId: type: integer description: If using a load balancer origin, the ID of the load balancer to use format: int64 nullable: true Name: type: string description: The name of the pull zone. minLength: 1 ApiErrorData: type: object additionalProperties: false properties: ErrorKey: type: string nullable: true Field: type: string nullable: true Message: type: string nullable: true IpFamilyPolicy: type: integer description: |- 0 = IPv4 Only 1 = Dual Stack 2 = Dual Stack (Prefer IPv6) 3 = IPv6 Only x-enumNames: - IPv4Only - DualStack - DualStackPreferIPv6 - IPv6Only enum: - 0 - 1 - 2 - 3 PermaCacheType: type: integer description: |- 0 = Automatic 1 = Manual x-enumNames: - Automatic - Manual enum: - 0 - 1 TlsSecurityLevelType: type: integer description: |- 0 = Legacy 1 = Compatible 2 = Modern Only x-enumNames: - Legacy - Compatible - ModernOnly enum: - 0 - 1 - 2 PullZoneLogForwarderProtocolType: type: integer description: |- 0 = UDP 1 = TCP 2 = TCP Encrypted 3 = Datadog x-enumNames: - UDP - TCP - TCPEncrypted - DataDog enum: - 0 - 1 - 2 - 3 OptimizerHtmlToMarkdownType: type: integer description: |- 0 = Off 1 = Simple 2 = Prerendered x-enumNames: - 'Off' - Simple - Prerendered enum: - 0 - 1 - 2 OptimizerWatermarkPosition: type: integer description: |- 0 = Bottom Left 1 = Bottom Right 2 = Top Left 3 = Top Right 4 = Center 5 = Center Stretch x-enumNames: - BottomLeft - BottomRight - TopLeft - TopRight - Center - CenterStretch enum: - 0 - 1 - 2 - 3 - 4 - 5 PullZoneOptimizerClassModel: type: object additionalProperties: false properties: Name: type: string description: >- The name of the optimizer class that will be used in the query string nullable: true Properties: type: object description: The list of settings and values the class will send to the optimizer nullable: true additionalProperties: type: string PullZoneType: type: integer description: |- 0 = Premium 1 = Volume x-enumNames: - Premium - Volume enum: - 0 - 1 LogAnonymizationType: type: integer description: |- 0 = One Digit 1 = Drop x-enumNames: - OneDigit - Drop enum: - 0 - 1 ExecutionPhase: type: integer description: |- 0 = Cache 1 = Load Balancer 2 = Pre-Cache x-enumNames: - Cache - LoadBalancer - PreCache enum: - 0 - 1 - 2 PullZoneOriginType: type: integer description: |- 0 = Origin URL 1 = DNS Accelerate 2 = Storage Zone 3 = Load Balancer 4 = Edge Script 5 = Magic Containers 6 = Push Zone x-enumNames: - OriginUrl - DnsAccelerate - StorageZone - LoadBalancer - EdgeScript - MagicContainers - PushZone enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 PullZoneLogFormat: type: integer description: |- 0 = Plain 1 = JSON x-enumNames: - Plain - JSON enum: - 0 - 1 ShieldDDosProtectionType: type: integer description: |- 0 = Detect Only 1 = Active Standard 2 = Active Aggressive x-enumNames: - DetectOnly - ActiveStandard - ActiveAggressive enum: - 0 - 1 - 2 BunnyAiImageBlueprintModel: type: object additionalProperties: false properties: Name: type: string nullable: true Properties: type: object nullable: true additionalProperties: type: string PreloadingScreenTheme: type: integer description: |- 0 = Light 1 = Dark x-enumNames: - Light - Dark enum: - 0 - 1 StickySessionType: type: integer description: |- 0 = Off 1 = On x-enumNames: - 'Off' - 'On' enum: - 0 - 1 securitySchemes: AccessKey: type: apiKey description: API Access Key authorization header name: AccessKey in: header ```` This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.