curl --request GET \
--url https://jmpy.me/api/v1/short-urls/{id} \
--header 'Authorization: Bearer <token>'{
"id": "<string>",
"short_code": "<string>",
"short_url": "<string>",
"original_url": "<string>",
"name": "<string>",
"clicks": 123,
"tracking_enabled": true,
"url_type": "<string>",
"subdomain": "<string>",
"branded_domain": "<string>",
"campaign_id": "<string>",
"expires_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}Retrieve a specific short URL by ID
curl --request GET \
--url https://jmpy.me/api/v1/short-urls/{id} \
--header 'Authorization: Bearer <token>'{
"id": "<string>",
"short_code": "<string>",
"short_url": "<string>",
"original_url": "<string>",
"name": "<string>",
"clicks": 123,
"tracking_enabled": true,
"url_type": "<string>",
"subdomain": "<string>",
"branded_domain": "<string>",
"campaign_id": "<string>",
"expires_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}550e8400-e29b-41d4-a716-446655440000, abc123, my-campaignstandard, subdomain, or branded.subdomain). See List Subdomains.branded). See List Branded Domains.curl -X GET "https://jmpy.me/api/v1/short-urls/550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer YOUR_API_KEY"
curl -X GET "https://jmpy.me/api/v1/short-urls/abc123" \
-H "Authorization: Bearer YOUR_API_KEY"
curl -X GET "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}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const { data } = await response.json();
console.log(`URL: ${data.short_url}`);
console.log(`Clicks: ${data.clicks}`);
console.log(`Type: ${data.url_type}`);
import axios from 'axios';
interface ShortUrl {
id: string;
short_code: string;
short_url: string;
original_url: string;
clicks: number;
url_type: 'standard' | 'subdomain' | 'branded';
subdomain?: string;
branded_domain?: string;
campaign_id?: string;
}
interface ApiResponse {
success: boolean;
data: ShortUrl;
}
const id = '550e8400-e29b-41d4-a716-446655440000';
const response = await axios.get<ApiResponse>(
`https://jmpy.me/api/v1/short-urls/${id}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const { data } = response.data;
console.log(`Clicks: ${data.clicks}`);
import requests
id = "550e8400-e29b-41d4-a716-446655440000" # UUID, short code, or alias
response = requests.get(
f"https://jmpy.me/api/v1/short-urls/{id}",
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = response.json()["data"]
print(f"URL: {data['short_url']}")
print(f"Clicks: {data['clicks']}")
print(f"Type: {data['url_type']}")
<?php
$id = '550e8400-e29b-41d4-a716-446655440000'; // UUID, short code, or alias
$client = new GuzzleHttp\Client();
$response = $client->request('GET', "https://jmpy.me/api/v1/short-urls/{$id}", [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY'
]
]);
$data = json_decode($response->getBody(), true)['data'];
echo "URL: " . $data['short_url'] . "\n";
echo "Clicks: " . $data['clicks'] . "\n";
?>
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
)
type ShortUrl struct {
ID string `json:"id"`
ShortUrl string `json:"short_url"`
Clicks int `json:"clicks"`
UrlType string `json:"url_type"`
}
type Response struct {
Success bool `json:"success"`
Data ShortUrl `json:"data"`
}
func main() {
id := "550e8400-e29b-41d4-a716-446655440000"
url := fmt.Sprintf("https://jmpy.me/api/v1/short-urls/%s", id)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var result Response
json.Unmarshal(body, &result)
fmt.Printf("Clicks: %d\n", result.Data.Clicks)
}
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")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"short_code": "abc123",
"short_url": "https://jmpy.me/abc123",
"original_url": "https://example.com/landing-page",
"name": "Q1 Marketing Campaign",
"custom_alias": null,
"clicks": 1542,
"tracking_enabled": true,
"url_type": "standard",
"subdomain": null,
"branded_domain": null,
"campaign_id": "660e8400-e29b-41d4-a716-446655440000",
"utm_source": "newsletter",
"utm_medium": "email",
"utm_campaign": "q1-promo",
"expires_at": null,
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-20T14:22:00.000Z"
}
}
{
"success": true,
"data": {
"id": "660e8400-e29b-41d4-a716-446655440000",
"short_code": "promo",
"short_url": "https://acme.jmpy.me/promo",
"original_url": "https://example.com/summer-sale",
"name": "Summer Promo",
"custom_alias": "promo",
"clicks": 832,
"tracking_enabled": true,
"url_type": "subdomain",
"subdomain": "acme",
"branded_domain": null,
"campaign_id": null,
"expires_at": "2024-08-31T23:59:59.000Z",
"created_at": "2024-06-01T10:00:00.000Z",
"updated_at": "2024-06-15T14:22:00.000Z"
}
}
{
"success": true,
"data": {
"id": "770e8400-e29b-41d4-a716-446655440000",
"short_code": "careers",
"short_url": "https://go.mycompany.com/careers",
"original_url": "https://mycompany.com/about/careers",
"name": "Careers Page",
"custom_alias": "careers",
"clicks": 2145,
"tracking_enabled": true,
"url_type": "branded",
"subdomain": null,
"branded_domain": "go.mycompany.com",
"campaign_id": null,
"expires_at": null,
"created_at": "2024-01-01T00:00:00.000Z",
"updated_at": "2024-01-20T14:22:00.000Z"
}
}
{
"success": true,
"data": {
"multiple": true,
"count": 2,
"urls": [
{
"id": "550e8400-...",
"short_code": "promo",
"short_url": "https://jmpy.me/promo",
"original_url": "https://example.com/standard-landing",
"url_type": "standard"
},
{
"id": "660e8400-...",
"short_code": "promo",
"short_url": "https://branding.jmpy.me/promo",
"original_url": "https://example.com/subdomain-landing",
"url_type": "subdomain",
"subdomain": "branding"
}
]
}
}
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Short URL not found"
}
}
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
}
Display Link Stats
async function displayLinkStats(shortCode) {
const response = await fetch(
`https://jmpy.me/api/v1/short-urls/${shortCode}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const { data } = await response.json();
console.log(`📊 Link Stats for ${data.short_url}`);
console.log(` Destination: ${data.original_url}`);
console.log(` Total Clicks: ${data.clicks}`);
console.log(` Type: ${data.url_type}`);
console.log(` Created: ${new Date(data.created_at).toLocaleDateString()}`);
if (data.expires_at) {
console.log(` Expires: ${new Date(data.expires_at).toLocaleDateString()}`);
}
}
Check Expiration Status
import requests
from datetime import datetime, timezone
def check_link_status(short_code):
response = requests.get(
f"https://jmpy.me/api/v1/short-urls/{short_code}",
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = response.json()["data"]
if not data.get("expires_at"):
return "No expiration set"
expires = datetime.fromisoformat(data["expires_at"].replace("Z", "+00:00"))
now = datetime.now(timezone.utc)
if expires < now:
return "EXPIRED"
elif (expires - now).days < 7:
return f"Expiring in {(expires - now).days} days"
else:
return "Active"
# Check status
status = check_link_status("my-promo")
print(f"Link status: {status}")
Verify Domain Configuration
async function getDomainInfo(shortCode) {
const response = await fetch(
`https://jmpy.me/api/v1/short-urls/${shortCode}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const { data } = await response.json();
switch (data.url_type) {
case 'standard':
return { type: 'Standard', domain: 'jmpy.me' };
case 'subdomain':
// See: /api-reference/domains/list-subdomains
return { type: 'Subdomain', domain: `${data.subdomain}.jmpy.me` };
case 'branded':
// See: /api-reference/domains/list-branded
return { type: 'Branded', domain: data.branded_domain };
}
}