Skip to content

Instantly share code, notes, and snippets.

@slayer
Last active September 19, 2024 10:48
Show Gist options
  • Save slayer/442fa2fffed57f8409e0b23bd0673a92 to your computer and use it in GitHub Desktop.
Save slayer/442fa2fffed57f8409e0b23bd0673a92 to your computer and use it in GitHub Desktop.
Delete all DNS records for specified zone
#!/bin/bash
TOKEN="xxxxxxxxxxxxxxxxxxx"
ZONE_ID=2222222222222222222222222
# EMAIL=me@gmail.com
# KEY=11111111111111111111111111
# Replace with
# -H "X-Auth-Email: ${EMAIL}" \
# -H "X-Auth-Key: ${KEY}" \
# for old API keys
curl -s -X GET https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?per_page=500 \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" | jq .result[].id | tr -d '"' | (
while read id; do
curl -s -X DELETE https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${id} \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json"
done
)
@EML-github
Copy link

Worked a treat; thanks. But note that almost nobody will have 'jq' installed, or have even heard of it. On Deb/Ubuntu, 'apt install jq'.

@mkostrikin
Copy link

Initial code has jq so I've used as well. But agree that extra tool could be missed at user's shell.

@kylefmohr
Copy link

do you have script to delete specific domain ?

@pr4ns sure, I wrote this for you based on the Cloudflare REST API docs here

#!/bin/bash


# permission needed: #zone:edit
TOKEN="xxxxxxxxxxxxxxxxxxx"
ZONE_ID=2222222222222222222222222


# EMAIL=me@gmail.com
# KEY=11111111111111111111111111
# Replace with 
#     -H "X-Auth-Email: ${EMAIL}" \
#     -H "X-Auth-Key: ${KEY}" \
# for old API keys

curl -X DELETE "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}" \
     -H "Authorization: Bearer ${TOKEN}" \
     -H "Content-Type: application/json"

Tested and working 👍

@yuriybeck
Copy link

thanks a lot. it works for me

@artembokhan
Copy link

Thanks

@bjzhush
Copy link

bjzhush commented Apr 28, 2023

works perfect and thanks a lot !

@aianus
Copy link

aianus commented Jul 23, 2023

Thank you! Ridiculous that you can't add a new zone without copying all the old DNS records from the previous domain owner.

@dev-AshishRanjan
Copy link

Thanks,
The code works like a charm on wsl ubuntu
It took 3min to remove 600+ dns records

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment