Permanently delete a short URL. This action cannot be undone. The short code will become available for reuse.
Permanent Action: Deleting a short URL will:
- Remove the redirect permanently
- Delete all associated analytics data
- Make the short code available for reuse by others
If you want to disable a link temporarily, consider using the Update Short URL endpoint to set an expiration date instead.
Path Parameters
The UUID, short code, or custom alias of the short URL to delete.Examples: 550e8400-e29b-41d4-a716-446655440000, abc123, my-campaign
Request Examples
cURL
Node.js
TypeScript
Python
PHP
Go
Java
By UUID
By Short Code
By Custom Alias
curl -X DELETE "https://jmpy.me/api/v1/short-urls/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer YOUR_API_KEY"
curl -X DELETE "https://jmpy.me/api/v1/short-urls/abc123" \
-H "Authorization: Bearer YOUR_API_KEY"
curl -X DELETE "https://jmpy.me/api/v1/short-urls/my-campaign" \
-H "Authorization: Bearer YOUR_API_KEY"
const fetch = require('node-fetch');
const id = '550e8400-e29b-41d4-a716-446655440000'; // UUID, short code, or alias
const response = await fetch(`https://jmpy.me/api/v1/short-urls/${id}`, {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const data = await response.json();
if (data.success) {
console.log('Short URL deleted successfully');
}
import axios from 'axios';
interface DeleteResponse {
success: boolean;
data: {
message: string;
id: string;
};
}
const id = '550e8400-e29b-41d4-a716-446655440000';
const response = await axios.delete<DeleteResponse>(
`https://jmpy.me/api/v1/short-urls/${id}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
console.log(response.data.data.message);
import requests
id = "550e8400-e29b-41d4-a716-446655440000" # UUID, short code, or alias
response = requests.delete(
f"https://jmpy.me/api/v1/short-urls/{id}",
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
result = response.json()
if result["success"]:
print("Short URL deleted successfully")
<?php
$id = '550e8400-e29b-41d4-a716-446655440000'; // UUID, short code, or alias
$client = new GuzzleHttp\Client();
$response = $client->request('DELETE', "https://jmpy.me/api/v1/short-urls/{$id}", [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY'
]
]);
$data = json_decode($response->getBody(), true);
if ($data['success']) {
echo "Short URL deleted successfully";
}
?>
package main
import (
"fmt"
"net/http"
)
func main() {
id := "550e8400-e29b-41d4-a716-446655440000" // UUID, short code, or alias
url := fmt.Sprintf("https://jmpy.me/api/v1/short-urls/%s", id)
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
if resp.StatusCode == 200 {
fmt.Println("Short URL deleted successfully")
}
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.URI;
import java.net.http.HttpResponse;
String id = "550e8400-e29b-41d4-a716-446655440000"; // UUID, short code, or alias
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://jmpy.me/api/v1/short-urls/" + id))
.header("Authorization", "Bearer YOUR_API_KEY")
.DELETE()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Response Examples
200 Success
404 Not Found
403 Access Denied
401 Unauthorized
{
"success": true,
"data": {
"message": "Short URL deleted successfully"
},
"timestamp": "2024-01-15T10:30:00.000Z"
}
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Short URL not found"
}
}
{
"success": false,
"error": {
"code": "ACCESS_DENIED",
"message": "You do not have permission to delete this URL"
}
}
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
}
Use Cases
Delete multiple expired or unused links:const fetch = require('node-fetch');
async function cleanupExpiredLinks() {
// First, list expired URLs
const listResponse = await fetch(
'https://jmpy.me/api/v1/short-urls?status=expired&limit=100',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const { data: urls } = await listResponse.json();
// Delete each expired URL
for (const url of urls) {
await fetch(`https://jmpy.me/api/v1/short-urls/${url.id}`, {
method: 'DELETE',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
console.log(`Deleted: ${url.short_url}`);
}
}
Delete all links from a specific campaign:import requests
API_KEY = "YOUR_API_KEY"
CAMPAIGN_ID = "campaign-uuid-here"
# List all URLs in the campaign
response = requests.get(
f"https://jmpy.me/api/v1/short-urls?campaign_id={CAMPAIGN_ID}&limit=100",
headers={"Authorization": f"Bearer {API_KEY}"}
)
urls = response.json()["data"]
# Delete each URL
for url in urls:
requests.delete(
f"https://jmpy.me/api/v1/short-urls/{url['id']}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
print(f"Deleted: {url['short_url']}")
Get Short URL
View URL details before deleting
Update Short URL
Set an expiration instead of deleting
List Short URLs
Find URLs to delete
URL Analytics
Export analytics before deleting