curl -X DELETE https://api.bouncy.ai/v1/links/my-slug \
-H "Authorization: Bearer bcy_live_pk_YOUR_API_KEY"
const response = await fetch(
'https://api.bouncy.ai/v1/links/my-slug',
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer bcy_live_pk_YOUR_API_KEY'
}
}
);
const result = await response.json();
console.log(result.message);
import requests
response = requests.delete(
'https://api.bouncy.ai/v1/links/my-slug',
headers={'Authorization': 'Bearer bcy_live_pk_YOUR_API_KEY'}
)
result = response.json()
print(result['message'])
{
"success": true,
"id": "my-slug",
"message": "Link deleted successfully",
"wasActive": true
}
{
"error": "Not Found",
"message": "Deeplink not found. Deletes only match a link id or its full short URL (for example tapmy.social/amy), never the bare slug of a link on another domain. A bouncy.ai link uses its slug as its id."
}
{
"error": "Not Found",
"message": "Deeplink not found"
}
{
"error": "Not Found",
"message": "Deeplink not found. A short URL with '#', a '.' or '..' segment, an encoded '/' or a backslash can name a different link once parsed, so deletes never match it: send the link id from GET /v1/links instead."
}
{
"error": "Forbidden",
"message": "You do not have permission to delete this deeplink"
}
Links
Delete Link
Permanently delete a short link
DELETE
/
v1
/
links
/
{identifier}
curl -X DELETE https://api.bouncy.ai/v1/links/my-slug \
-H "Authorization: Bearer bcy_live_pk_YOUR_API_KEY"
const response = await fetch(
'https://api.bouncy.ai/v1/links/my-slug',
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer bcy_live_pk_YOUR_API_KEY'
}
}
);
const result = await response.json();
console.log(result.message);
import requests
response = requests.delete(
'https://api.bouncy.ai/v1/links/my-slug',
headers={'Authorization': 'Bearer bcy_live_pk_YOUR_API_KEY'}
)
result = response.json()
print(result['message'])
{
"success": true,
"id": "my-slug",
"message": "Link deleted successfully",
"wasActive": true
}
{
"error": "Not Found",
"message": "Deeplink not found. Deletes only match a link id or its full short URL (for example tapmy.social/amy), never the bare slug of a link on another domain. A bouncy.ai link uses its slug as its id."
}
{
"error": "Not Found",
"message": "Deeplink not found"
}
{
"error": "Not Found",
"message": "Deeplink not found. A short URL with '#', a '.' or '..' segment, an encoded '/' or a backslash can name a different link once parsed, so deletes never match it: send the link id from GET /v1/links instead."
}
{
"error": "Forbidden",
"message": "You do not have permission to delete this deeplink"
}
Request
Headers
Path Parameters
string
required
One of:
- the link
idreturned by GET /v1/links (e.g.,my-linkortapmy.social__my-link); a bouncy.ai link’sidis its slug - the full short URL, URL-encoded (e.g.,
tapmy.social%2Fmy-linkorhttps%3A%2F%2Ftapmy.social%2Fmy-link)
my-link deletes the link whose id is my-link (bouncy.ai/my-link) and nothing else; if there is no such link the response is 404, even when tapmy.social/my-link exists. So a retried delete (for example after a timeout) can never remove a different link that shares the slug: it gets 404 once the first delete went through.Delete also only matches the link you named, never a similar one:- An
idmatches exactly as listed. Any case works for bouncy.ai, system-domain and custom-domain root links; a custom-domain path link’sidkeeps the case of its path (brand.com__Promoandbrand.com__promocan be two links), so send it as listed. - A short URL matches a link only on that link’s own domain and path. On a custom domain the path must match exactly, case included (
https://brand.com/Promonever deletesbrand.com/promo, andhttps://brand.com/a/bnever deletes a link whose path isa_b); bouncy.ai and system-domain slugs match in any case.https://www.brand.com/...names a link onbrand.comonly whenbrand.comis connected and nothing exists underwww.brand.com. - A short URL with
#, a.or..path segment, an encoded/(%2F) or a backslash gets 404: once parsed it could name a different link (https://brand.com/promo/..is the domain root). Delete those links byid.
id or short URL. Links owned by another account are refused with 403.bulk (in any case) is not a link identifier here: DELETE /v1/links/bulk is always Bulk Delete Links. Delete the link whose id is bulk by its short URL (https%3A%2F%2Fbouncy.ai%2Fbulk).This action is permanent and cannot be undone. The short URL will immediately stop working and the slug will become available for reuse.
- contacts collected by the page’s Collect or email-gated blocks are deleted with it;
- on a custom domain, the domain is redeployed so the removed path stops serving (or, when it was the domain’s last link, the domain goes back to its holding page; the domain itself stays connected);
- the deletion is recorded in the account’s activity log, and in the team’s log when a team member deletes the owner’s link.
Response
boolean
Whether the operation succeeded
string
ID of the deleted link
string
Success message
boolean
Whether the link was active (and counted toward the active limit) before it was deleted
curl -X DELETE https://api.bouncy.ai/v1/links/my-slug \
-H "Authorization: Bearer bcy_live_pk_YOUR_API_KEY"
const response = await fetch(
'https://api.bouncy.ai/v1/links/my-slug',
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer bcy_live_pk_YOUR_API_KEY'
}
}
);
const result = await response.json();
console.log(result.message);
import requests
response = requests.delete(
'https://api.bouncy.ai/v1/links/my-slug',
headers={'Authorization': 'Bearer bcy_live_pk_YOUR_API_KEY'}
)
result = response.json()
print(result['message'])
{
"success": true,
"id": "my-slug",
"message": "Link deleted successfully",
"wasActive": true
}
{
"error": "Not Found",
"message": "Deeplink not found. Deletes only match a link id or its full short URL (for example tapmy.social/amy), never the bare slug of a link on another domain. A bouncy.ai link uses its slug as its id."
}
{
"error": "Not Found",
"message": "Deeplink not found"
}
{
"error": "Not Found",
"message": "Deeplink not found. A short URL with '#', a '.' or '..' segment, an encoded '/' or a backslash can name a different link once parsed, so deletes never match it: send the link id from GET /v1/links instead."
}
{
"error": "Forbidden",
"message": "You do not have permission to delete this deeplink"
}