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.
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.
Bearer-token authentication. Each registered user gets an API key from the dashboard; send it as Authorization: Bearer <key> on every request.
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.
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.
All endpoints accept and return JSON. Success responses include "error": 0; errors include a non-zero error and a message.
Every endpoint in the reference ships with copy-paste examples for cURL, PHP, Node.js, Python, and C#.
Admin users can list plans, list users, create users, delete users, subscribe a user to a plan, and generate one-time SSO login URLs.
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.
# 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" }
Every endpoint is documented with parameters and example responses at openmy.link/developers.
Available to accounts with admin privileges.
| GET | /api/plans | List all plans |
| PUT | /api/plan/:pid/user/:uid | Subscribe a user to a plan |
| GET | /api/users | List users (filter by admin / free / pro / email) |
| GET | /api/user/:id | Get a single user |
| POST | /api/user/add | Create a user |
| DELETE | /api/user/:id/delete | Delete a user |
| GET | /api/user/login/:id | Generate a one-time SSO login URL (valid 1 hour) |
Create an OAuth application in your admin dashboard. You'll get a Client ID and Client Secret.
Redirect users to /oauth/authorize with your clientid and a registered redirect URI.
After approval the user returns to your redirect URI with ?code=AUTHORIZATION_CODE.
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.
Authorization: Bearer <key> on every request.X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset."error": 0 plus the relevant data (IDs, URLs, pagination, etc). Errors return a non-zero error field and a message./oauth/authorize, and exchange the resulting code at /api/oauth/token for a token valid for one year.Create a free account, grab your API key, and ship your first integration in minutes.