API is available with Premium or annual subscription only
The API documentation and API access are available only to paying users with a monthly or annual subscription.
Upgrade nowAPI Documentation
Use our API to create and manage links programmatically.
π Authentication
Two options: (a) JWT from the login (ritter-systems.de account) or (b) API key (30 characters, granted to Premium users by the administrator). Programmatic API access is reserved for Premium/Overall-Premium users β Free/Registered users use the web interface.
Authorization: Bearer <JWT from the login>
X-API-Key: <30-character API token (Premium)>
π Create link
Create a new short link.
Request body
{
"target_url": "https://example.com/very/long/url",
"custom_code": "my-link", // Optional, 3-50 chars (Premium)
"payment_type": "free"
}
Response (success)
{
"success": true,
"message": "Link created successfully",
"link": {
"id": 123,
"short_code": "abc123",
"short_url": "https://ritter-systems.de/directlink/r/abc123",
"target_url": "https://example.com/very/long/url",
"payment_type": "free",
"is_paid": false
}
}
π¦ Quotas (Admin 15.09.2026)
| Free (unregistered) | 10 links, each valid for 1 month β then an "expired" page. Notice mail after 21 days (if an email is on file). |
| Registered | 20 links valid permanently. |
| Premium | 100 links valid permanently (β¬2.99/month). |
| Overall Premium | Unlimited links valid permanently (β¬20/month). |
New links are rejected once the quota is exhausted (HTTP 429). Only active links are counted β expired links do not consume quota. Expired links are deactivated daily and marked as "expired" in the overview (no data loss).
π Statistics
Fetch general statistics.
Response
{
"success": true,
"links": 150,
"clicks": 2450,
"users": 42
}
π Fetch my links
Fetch all links of the logged-in user.
Response
{
"success": true,
"links": [
{
"id": 1,
"short_code": "abc123",
"target_url": "https://example.com",
"click_count": 42,
"created_at": "2026-08-27 10:00:00"
}
]
}
π Fetch quota (usage.php)
Active links vs. the quota of your own plan.
Response (success)
{
"success": true,
"plan": "guest",
"usage": { "active": 3, "limit": 10, "remaining": 7 },
"pricing": { ... }
}
ποΈ Delete link (delete.php) β once, soft delete
Request body
{ "code": "abc123" }
Marks the link as "deleted" once (is_deleted): no longer shown in the dashboard, no more redirects, data stays in the database (billing-relevant history).
π Check target validity (check-links.php)
Request body
{ "code": "abc123" } // optional β without code: all own links
Checks every target via HTTP (HEAD, fallback GET, 12 s timeout) and sets last_check/check_status/fail_count. Status: ok (2xx/3xx), invalid (404/410), unreachable (timeout/DNS).
Daily job (05:15): checks all active links, deactivates expired ones, automatically deletes links that failed 3 times in a row.
β οΈ Error codes
| Code | Meaning |
|---|---|
| 400 | Invalid request (missing parameters) |
| 401 | Unauthorized (invalid token) |
| 404 | Link not found |
| 409 | Conflict (e.g. code already taken) |
| 401 | Not logged in (guests use the web interface) |
| 403 | No access (foreign link) |
| 429 | Quota reached (Free 10 Β· Registered 20 Β· Premium 100) |
| 500 | Server error |