## Create an IP Access rule `client.firewall.accessRules.create(AccessRuleCreateParamsparams, RequestOptionsoptions?): AccessRuleCreateResponse` **post** `/{accounts_or_zones}/{account_or_zone_id}/firewall/access_rules/rules` Creates a new IP Access rule for an account or zone. The rule will apply to all zones in the account or zone. Note: To create an IP Access rule that applies to a single zone, refer to the [IP Access rules for a zone](#ip-access-rules-for-a-zone) endpoints. ### Parameters - `params: AccessRuleCreateParams` - `configuration: AccessRuleIPConfiguration | IPV6Configuration | AccessRuleCIDRConfiguration | 2 more` Body param: The rule configuration. - `AccessRuleIPConfiguration` - `target?: "ip"` The configuration target. You must set the target to `ip` when specifying an IP address in the rule. - `"ip"` - `value?: string` The IP address to match. This address will be compared to the IP address of incoming requests. - `IPV6Configuration` - `target?: "ip6"` The configuration target. You must set the target to `ip6` when specifying an IPv6 address in the rule. - `"ip6"` - `value?: string` The IPv6 address to match. - `AccessRuleCIDRConfiguration` - `target?: "ip_range"` The configuration target. You must set the target to `ip_range` when specifying an IP address range in the rule. - `"ip_range"` - `value?: string` The IP address range to match. You can only use prefix lengths `/16` and `/24` for IPv4 ranges, and prefix lengths `/32`, `/48`, and `/64` for IPv6 ranges. - `ASNConfiguration` - `target?: "asn"` The configuration target. You must set the target to `asn` when specifying an Autonomous System Number (ASN) in the rule. - `"asn"` - `value?: string` The AS number to match. - `CountryConfiguration` - `target?: "country"` The configuration target. You must set the target to `country` when specifying a country code in the rule. - `"country"` - `value?: string` The two-letter ISO-3166-1 alpha-2 code to match. For more information, refer to [IP Access rules: Parameters](https://developers.cloudflare.com/waf/tools/ip-access-rules/parameters/#country). - `mode: "block" | "challenge" | "whitelist" | 2 more` Body param: The action to apply to a matched request. - `"block"` - `"challenge"` - `"whitelist"` - `"js_challenge"` - `"managed_challenge"` - `account_id?: string` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. - `notes?: string` Body param: An informative summary of the rule, typically used as a reminder or explanation. ### Returns - `AccessRuleCreateResponse` - `id: string` The unique identifier of the IP Access rule. - `allowed_modes: Array<"block" | "challenge" | "whitelist" | 2 more>` The available actions that a rule can apply to a matched request. - `"block"` - `"challenge"` - `"whitelist"` - `"js_challenge"` - `"managed_challenge"` - `configuration: AccessRuleIPConfiguration | IPV6Configuration | AccessRuleCIDRConfiguration | 2 more` The rule configuration. - `AccessRuleIPConfiguration` - `target?: "ip"` The configuration target. You must set the target to `ip` when specifying an IP address in the rule. - `"ip"` - `value?: string` The IP address to match. This address will be compared to the IP address of incoming requests. - `IPV6Configuration` - `target?: "ip6"` The configuration target. You must set the target to `ip6` when specifying an IPv6 address in the rule. - `"ip6"` - `value?: string` The IPv6 address to match. - `AccessRuleCIDRConfiguration` - `target?: "ip_range"` The configuration target. You must set the target to `ip_range` when specifying an IP address range in the rule. - `"ip_range"` - `value?: string` The IP address range to match. You can only use prefix lengths `/16` and `/24` for IPv4 ranges, and prefix lengths `/32`, `/48`, and `/64` for IPv6 ranges. - `ASNConfiguration` - `target?: "asn"` The configuration target. You must set the target to `asn` when specifying an Autonomous System Number (ASN) in the rule. - `"asn"` - `value?: string` The AS number to match. - `CountryConfiguration` - `target?: "country"` The configuration target. You must set the target to `country` when specifying a country code in the rule. - `"country"` - `value?: string` The two-letter ISO-3166-1 alpha-2 code to match. For more information, refer to [IP Access rules: Parameters](https://developers.cloudflare.com/waf/tools/ip-access-rules/parameters/#country). - `mode: "block" | "challenge" | "whitelist" | 2 more` The action to apply to a matched request. - `"block"` - `"challenge"` - `"whitelist"` - `"js_challenge"` - `"managed_challenge"` - `created_on?: string` The timestamp of when the rule was created. - `modified_on?: string` The timestamp of when the rule was last modified. - `notes?: string` An informative summary of the rule, typically used as a reminder or explanation. - `scope?: Scope` All zones owned by the user will have the rule applied. - `id?: string` Defines an identifier. - `email?: string` The contact email address of the user. - `type?: "user" | "organization"` Defines the scope of the rule. - `"user"` - `"organization"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const accessRule = await client.firewall.accessRules.create({ configuration: {}, mode: 'challenge', account_id: 'account_id', }); console.log(accessRule.id); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "id": "92f17202ed8bd63d69a66b86a49a8f6b", "allowed_modes": [ "whitelist", "block", "challenge", "js_challenge", "managed_challenge" ], "configuration": { "target": "ip", "value": "198.51.100.4" }, "mode": "challenge", "created_on": "2014-01-01T05:20:00.12345Z", "modified_on": "2014-01-01T05:20:00.12345Z", "notes": "This rule is enabled because of an event that occurred on date X.", "scope": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "email": "user@example.com", "type": "user" } }, "success": true } ```