Documentation
Developer API
Create short links from approved integrations with a developer API key.
Developer API
Use the Developer API when an approved backend service needs to create, organize, update, measure, or automate URLNow short links.
The Developer API uses a developer API key from the Developer console. Store the key server-side and restrict access to authorized systems.
API capability
The Developer API supports short-link creation plus v2 Power Tools workflows for campaigns, bulk operations, conversions, webhooks, saved dashboard views, and reporting.
Use Dashboard for manual link creation. Use Power Tools and the developer endpoints below for approved automation and integrations.
Before you start
- Create a URLNow account from Register.
- Open the Developer console.
- Submit a developer access request.
- Wait for approval.
- Create a developer API key.
- Store the key securely on your server.
Do not place developer API keys in browser JavaScript, mobile apps, public repositories, or any place users can inspect.
Base URL
https://urlnow.me/api
Send this header with requests:
Accept: application/json
Authorization: Bearer YOUR_DEVELOPER_KEY
Create a short link
POST /api/short-url
curl -X POST https://urlnow.me/api/short-url \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_DEVELOPER_KEY" \
-d "long_url=https://example.com/product" \
-d "alias=product-launch"
Request fields
| Field | Required | Notes |
|---|---|---|
long_url |
Yes | Destination URL. If no scheme is provided, URLNow adds https://. |
alias |
No | Custom ending. Use 3 to 64 letters, numbers, hyphens, or underscores. |
If alias is left blank, URLNow creates a custom ending automatically.
Successful response
{
"success": true,
"url": {
"long_url": "https://example.com/product",
"alias": "product-launch",
"shorten_url": "https://urlnow.me/product-launch"
}
}
Power Tools API v2
The v2 surface keeps the same base URL and bearer key, then adds business workflows for listing, organizing, measuring, and automating links. Approved developers can also manage these workflows from the Power Tools console at /app/developer/power-tools.
Short URL lifecycle
| Method | Endpoint | Scope |
|---|---|---|
GET |
/api/short-urls |
links:read |
GET |
/api/short-urls/{id} |
links:read |
PATCH |
/api/short-urls/{id} |
links:write |
DELETE |
/api/short-urls/{id} |
links:write |
GET |
/api/short-urls/{id}/analytics |
analytics:read |
GET /api/short-urls supports page, per_page, campaign, campaign_id, tag, source, search, include_archived, and archived=only.
Campaigns and bulk actions
| Method | Endpoint | Notes |
|---|---|---|
GET |
/api/campaigns |
Lists campaign folders with link and conversion counts. |
POST |
/api/campaigns |
Creates a campaign folder. |
GET |
/api/campaigns/{id} |
Returns campaign analytics: clicks, conversions, countries, and referrers. |
POST |
/api/short-urls/bulk |
Supports move, tag, archive, and unarchive. |
GET |
/api/short-urls/export |
Streams matching links as CSV. |
POST |
/api/short-urls/import |
Imports CSV rows with long_url, alias, campaign, and tags columns. |
Bulk move example:
curl -X POST https://urlnow.me/api/short-urls/bulk \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_DEVELOPER_KEY" \
-d "action=move" \
-d "campaign_id=123" \
-d "ids[]=456"
Conversion tracking
Use POST /api/conversions for server-side conversion events and /api/conversion-pixel/{alias}.gif for browser pixel tracking.
Server-side conversion example:
curl -X POST https://urlnow.me/api/conversions \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_DEVELOPER_KEY" \
-d "alias=product-launch" \
-d "event_name=signup" \
-d "event_id=signup-123" \
-d "value=49" \
-d "currency=USD"
event_id is idempotent. Send the same event ID on retries to avoid duplicate conversion rows.
Pixel example:
<img src="https://urlnow.me/api/conversion-pixel/product-launch.gif?event_name=lead" width="1" height="1" alt="">
Webhooks
Webhook endpoints receive queued delivery records for link.created, link.updated, link.clicked, link.disabled, and conversion.created.
| Method | Endpoint | Notes |
|---|---|---|
GET |
/api/webhooks |
Lists configured endpoints. |
POST |
/api/webhooks |
Creates an endpoint and returns its signing secret once. Supports event_filters and max_attempts. |
POST |
/api/webhooks/{id}/test |
Queues a test delivery log. |
GET |
/api/webhook-deliveries |
Searches delivery logs by event, status, and search. |
POST |
/api/webhook-deliveries/{id}/retry |
Requeues a failed delivery. |
GET |
/api/dead-letters |
Lists unresolved reliability events by source. |
GET |
/api/worker-health |
Returns pending/failed webhook and dead-letter counts. |
Automation and growth
Phase 2 adds automation and team workflow endpoints while pricing remains disabled.
| Method | Endpoint | Scope | Notes |
|---|---|---|---|
PATCH |
/api/campaigns/{id}/automation |
links:write |
Sets campaign start/end dates, auto-archive windows, template keys, and automation settings. |
GET / POST |
/api/campaign-templates |
links:read / links:write |
Saves reusable campaign templates. |
GET / POST |
/api/utm-presets |
links:read / links:write |
Saves reusable UTM presets. |
POST |
/api/short-urls/{id}/approval |
links:write |
Moves links through draft, pending, approved, or rejected. |
GET / POST |
/api/short-urls/{id}/comments |
links:read / links:write |
Adds team notes to links. |
GET |
/api/activity |
links:read |
Returns the workspace activity timeline. |
GET / POST |
/api/dashboard-views |
analytics:read |
Lists and saves per-user analytics dashboard views. |
PATCH / DELETE |
/api/dashboard-views/{id} |
analytics:read |
Updates or removes a saved dashboard view. Only one default view is kept per user/workspace/scope. |
POST |
/api/insights/generate |
analytics:read |
Generates best-campaign, anomaly, and traffic-quality insights. |
GET |
/api/insights |
analytics:read |
Lists generated insights, optionally filtered by type. |
POST |
/api/alert-channels |
links:write |
Creates Slack or Discord alert destinations. |
PATCH |
/api/profiles/{id}/growth |
links:write |
Updates profile theme presets, conversion settings, and featured links. |
The Power Tools console can create read-only analytics share links. Public share URLs are served under /share/analytics/{token}, are marked noindex, can expire, and can be revoked from the console. Anyone with the share URL can view the report until it expires or is revoked.
Scheduled automation is handled by powertools:run-automation. Webhook delivery is handled by powertools:deliver-webhooks. Weekly digest generation uses powertools:weekly-digest, and worker health checks use powertools:worker-health or GET /api/worker-health. Webhook deliveries include X-URLNow-Signature, X-URLNow-Timestamp, X-URLNow-Event, and X-URLNow-Delivery headers.
Custom ending rules
Custom endings:
- Must be unique.
- Must use 3 to 64 characters.
- May contain letters, numbers, hyphens, and underscores.
- Cannot use reserved platform words such as
app,api,login,register,pricing,features,organizations,qr-code-generator, ordocs.
Choose custom endings that are short, readable, and meaningful for your campaign or workflow.
Link safety
URLNow validates destinations before creating short links. A request may be rejected if the destination is:
- Missing or invalid.
- A private or local address.
- Blocked by safety checks.
- Too long.
Developer key approval
Developer keys work only when the account's developer access request is approved.
If access is pending, rejected, or revoked, requests with that key will not create short links.
Common errors
| Status | Meaning |
|---|---|
403 |
The developer profile is not approved for this API key. |
404 |
The developer API key was not found. |
422 |
The destination URL or custom ending is invalid. |
500 |
URLNow could not complete the request. Try again later. |
Integration checklist
- Request approval before launching an integration.
- Keep the developer API key on your server only.
- Validate destination URLs in your app before sending them to URLNow.
- Handle
403,404,422, and500responses. - Rotate the key from the developer console if it may have been exposed.
- Use descriptive custom endings for campaign and customer-facing links.