API Documentation
Build integrations with the Sendo API. Available on Pro plans and above.
🔑 Getting Started: Get your API key from Settings → API in your dashboard. Keep it secure and never share it publicly.
Base URL
https://api.sndo.app/v1
Authentication
All API requests require authentication using your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Rate Limits
| Plan | Rate Limit |
|---|---|
| Pro | 50,000 requests/month |
| Business | 250,000 requests/month |
| Enterprise | Custom (unlimited available) |
Endpoints
POST /links
Create a new short link.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
url |
string | Yes | The original URL to shorten |
customCode |
string | No | Custom short code (3-20 characters) |
title |
string | No | Link title/description |
domain |
string | No | Custom domain (Pro+) |
expiresAt |
datetime | No | Expiration date (ISO 8601) |
Example Request
curl -X POST https://api.sndo.app/v1/links \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/very-long-url",
"customCode": "example",
"title": "My Example Link"
}'
Example Response
{
"id": 123,
"shortCode": "example",
"shortUrl": "https://sndo.app/example",
"originalUrl": "https://example.com/very-long-url",
"title": "My Example Link",
"clicks": 0,
"createdAt": "2026-01-10T12:00:00Z"
}
GET /links
List all your short links.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page |
integer | Page number (default: 1) |
limit |
integer | Results per page (max: 100, default: 50) |
search |
string | Search by title or URL |
Example Request
curl -X GET "https://api.sndo.app/v1/links?page=1&limit=50" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /links/:id
Get details of a specific link.
Example Request
curl -X GET https://api.sndo.app/v1/links/123 \
-H "Authorization: Bearer YOUR_API_KEY"
GET /links/:id/stats
Get analytics for a specific link.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
from |
date | Start date (ISO 8601) |
to |
date | End date (ISO 8601) |
Example Response
{
"totalClicks": 1250,
"uniqueClicks": 890,
"clicksByCountry": {
"US": 450,
"GB": 280,
"DE": 190
},
"clicksByDevice": {
"desktop": 620,
"mobile": 580,
"tablet": 50
},
"clicksByBrowser": {
"Chrome": 750,
"Safari": 320,
"Firefox": 180
}
}
DELETE /links/:id
Delete a short link.
Example Request
curl -X DELETE https://api.sndo.app/v1/links/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Error Responses
The API uses standard HTTP status codes:
| Status Code | Description |
|---|---|
| 200 | Success |
| 201 | Created successfully |
| 400 | Bad request (invalid parameters) |
| 401 | Unauthorized (invalid API key) |
| 403 | Forbidden (plan limit exceeded) |
| 404 | Not found |
| 429 | Rate limit exceeded |
| 500 | Server error |
Error Response Format
{
"error": "Invalid API key",
"code": "UNAUTHORIZED",
"status": 401
}
Webhooks (Business+)
Configure webhooks to receive real-time notifications for events:
link.created- New link createdlink.clicked- Link received a clicklink.deleted- Link was deleted
Configure webhooks in Settings → Webhooks in your dashboard.
SDKs and Libraries
Official SDKs coming soon for:
- JavaScript/Node.js
- Python
- PHP
- Ruby
Support
Need help with the API? Contact us:
- Email: api@sndo.app
- Support: Help Center