POST /api/v1/shorten
Crea uno short link per il proprietario della API key.
Body JSON
{"url":"https://example.com","title":"Landing","campaign":"spring-2026","custom_code":"promo26"}
Regola piano: su piano Free il campo custom_code viene ignorato e il sistema genera automaticamente uno short code casuale.
Risposta 201
{"short_code":"Ab3xK9q","short_url":"https://tapy.cc/Ab3xK9q","destination_url":"https://example.com"}
GET /api/v1/links
Ritorna tutti i link creati dall'utente della API key.
Risposta 200
{"data":[{"short_code":"abc123","destination_url":"https://example.com","campaign":"spring-2026","clicks":10}]}
PHP smoke example
Esempio completo in stile smoke-test (inserisci la tua API key nel placeholder).
<?php
declare(strict_types=1);
$baseUrl = 'https://tapy.cc';
$apiKey = 'YOUR_API_KEY'; // replace with your key
function request_json(string $method, string $url, string $apiKey, ?array $payload = null): array
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$headers = [
'Accept: application/json',
'X-API-Key: ' . $apiKey,
];
if ($payload !== null) {
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload, JSON_UNESCAPED_SLASHES));
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$raw = curl_exec($ch);
$status = (int) curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
return [$status, json_decode((string) $raw, true) ?: ['raw' => $raw]];
}
[$createStatus, $createBody] = request_json('POST', $baseUrl . '/api/v1/shorten', $apiKey, [
'url' => 'https://example.com',
'title' => 'Landing',
'campaign' => 'spring-2026',
]);
echo "POST /api/v1/shorten => HTTP {$createStatus}\n";
print_r($createBody);
if (!isset($createBody['short_code'])) {
exit(1);
}
$code = (string) $createBody['short_code'];
[$statsStatus, $statsBody] = request_json('GET', $baseUrl . '/api/v1/stats/' . rawurlencode($code), $apiKey);
echo "GET /api/v1/stats/{$code} => HTTP {$statsStatus}\n";
print_r($statsBody);
[$linksStatus, $linksBody] = request_json('GET', $baseUrl . '/api/v1/links', $apiKey);
echo "GET /api/v1/links => HTTP {$linksStatus}\n";
print_r($linksBody);