Developer API

A simple REST API for every OpenMyLink asset.

Authenticate with a bearer API key, hit a clean REST surface for links, QR codes, branded domains, campaigns, channels, pixels, files, splash pages, and overlays — and ship.

At a glance

Everything you need to automate OpenMyLink.

API key auth

Bearer-token authentication. Each registered user gets an API key from the dashboard; send it as Authorization: Bearer <key> on every request.

OAuth 2.0

An authorization-code flow is available for apps that act on behalf of other users. Tokens are valid for one year and exchangeable at /api/oauth/token.

30 req/min rate limit

Default limit is 30 requests per minute. Limits may change with subscribed plan. Headers X-RateLimit-Limit, -Remaining, and -Reset are returned with every response.

JSON in, JSON out

All endpoints accept and return JSON. Success responses include "error": 0; errors include a non-zero error and a message.

Sample code in 5 languages

Every endpoint in the reference ships with copy-paste examples for cURL, PHP, Node.js, Python, and C#.

Admin endpoints

Admin users can list plans, list users, create users, delete users, subscribe a user to a plan, and generate one-time SSO login URLs.

Shorten a link

One POST and you're measuring.

Send a JSON body to /api/url/add with the long URL and any optional parameters — custom alias, custom domain, password, expiry, geo / device / language targeting, pixels, channel, campaign, deep-link mapping, and meta tags. You get back the short URL and its ID.

30 req/min Bearer auth OAuth 2.0 5 sample languages
cURLPHPNode.jsPythonC#
Copy
  # Shorten a link with custom alias, channel & campaign
curl --location --request POST 'https://openmy.link/api/url/add' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "url":      "https://acme.com/spring",
    "custom":   "spring",
    "domain":   "go.acme.com",
    "type":     "direct",
    "channel":  1,
    "campaign": 1,
    "metatitle": "Acme Spring 2026"
  }'

# → success
{
  "error": 0,
  "id": 3,
  "shorturl": "https://openmy.link/spring"
}
Endpoints

The full REST surface.

Every endpoint is documented with parameters and example responses at openmy.link/developers.

Account
GET/api/accountGet account info
PUT/api/account/updateUpdate account
Links
GET/api/urlsList links (filter by date, clicks, keyword)
GET/api/url/:idGet one link with stats
POST/api/url/addShorten a link
PUT/api/url/:id/updateUpdate a link
DELETE/api/url/:id/deleteDelete a link
QR codes
GET/api/qrList QR codes
GET/api/qr/:idGet one QR with stats
POST/api/qr/addCreate a QR code
PUT/api/qr/:id/updateUpdate a QR code
DELETE/api/qr/:id/deleteDelete a QR code
Branded domains
GET/api/domainsList branded domains
POST/api/domain/addCreate a branded domain
PUT/api/domain/:id/updateUpdate domain
DELETE/api/domain/:id/deleteDelete domain
Campaigns & channels
GET/api/campaignsList campaigns
POST/api/campaign/addCreate a campaign
POST/api/campaign/:cid/assign/:lidAssign a link to a campaign
GET/api/channelsList channels
GET/api/channel/:idList items in a channel
POST/api/channel/addCreate a channel
POST/api/channel/:cid/assign/:type/:iidAssign item to channel
Pixels
GET/api/pixelsList pixels
POST/api/pixel/addCreate a pixel
PUT/api/pixel/:id/updateUpdate a pixel
DELETE/api/pixel/:id/deleteDelete a pixel
Files & overlays
GET/api/filesList uploaded files
POST/api/files/upload/:filenameUpload a file (binary body)
GET/api/overlayList CTA overlays
GET/api/splashList custom splash pages

Admin-only endpoints

Available to accounts with admin privileges.

GET/api/plansList all plans
PUT/api/plan/:pid/user/:uidSubscribe a user to a plan
GET/api/usersList users (filter by admin / free / pro / email)
GET/api/user/:idGet a single user
POST/api/user/addCreate a user
DELETE/api/user/:id/deleteDelete a user
GET/api/user/login/:idGenerate a one-time SSO login URL (valid 1 hour)
OAuth 2.0

For apps that act on other users' behalf.

1

Create app

Create an OAuth application in your admin dashboard. You'll get a Client ID and Client Secret.

2

Authorize

Redirect users to /oauth/authorize with your clientid and a registered redirect URI.

3

Callback

After approval the user returns to your redirect URI with ?code=AUTHORIZATION_CODE.

4

Exchange

POST /api/oauth/token with the code and your secret to get an access_token valid for one year.

Access tokens are presented the same way as API keys: Authorization: Bearer YOUR_ACCESS_TOKEN. The full OAuth reference, including parameter details and example responses, is at openmy.link/developers.

FAQ

Frequently asked questions

Sign in to your OpenMyLink dashboard — an API key is generated automatically when your account is created. You can regenerate it from the same page. Send it as Authorization: Bearer <key> on every request.
The default rate limit is 30 requests per minute. Your subscribed plan may adjust this; the active values are returned on every response via X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
Every success response contains "error": 0 plus the relevant data (IDs, URLs, pagination, etc). Errors return a non-zero error field and a message.
The full reference at openmy.link/developers contains copy-paste examples in cURL, PHP, Node.js, Python, and C# for every endpoint.
Yes — create an OAuth application in your admin dashboard, send users through /oauth/authorize, and exchange the resulting code at /api/oauth/token for a token valid for one year.
Send a message from /contact.html with topic API & developer support. Include the endpoint, HTTP method, response status, request timestamp (UTC), whether you authenticated with an API key or OAuth token, and — only if relevant — the last 4 characters of the key. Never paste a full API key into a support message.
Free to start · no credit card

Build with the OpenMyLink API.

Create a free account, grab your API key, and ship your first integration in minutes.