Quick start
Zero to a shared Linky
Create anonymously, open the launcher, optionally claim ownership, optionally attach a policy. The whole loop runs without an account.
1. Create a Linky
One POST, two URLs, anonymous. The response gives you back a slug, the public launcher URL, and a claimToken you can use later to bind ownership.
Anonymous create
curl -X POST "https://getalinky.com/api/links" \
-H "content-type: application/json" \
--data-binary '{
"urls": [
"https://example.com",
"https://example.org"
],
"source": "agent"
}'Anonymous creates return claimToken, claimUrl, and a warning. Save them — the token is returned once and cannot be recovered.
2. Open the launcher
Visit /l/<slug> in any browser and click Open All. Popup-blocker fallbacks appear when the browser refuses the batch.
Launch it
open "https://getalinky.com/l/<slug-from-step-1>"More on the launcher (personalized banner, anonymous nudge, popup fallback): Launcher.
3. Claim ownership (optional)
If you created anonymously and want to edit the Linky later, visit the claimUrl. You'll be prompted to sign in, then the Linky gets bound to your Linky account (or your active Linky organization, if one is selected).
Claim it
open "https://getalinky.com/claim/<token-from-step-1>"Full contract (expiry, org-wins rule, one-shot semantics): Claim flow.
4. Personalize (optional)
Attach a resolutionPolicy to route viewers to different tabs. The same URL opens different bundles for different people; the public tab set stays live for anonymous and unmatched viewers.
Attach a policy
curl -X PATCH "https://getalinky.com/api/links/<slug>" \
-H "content-type: application/json" \
--data-binary '{
"resolutionPolicy": {
"version": 1,
"rules": [
{
"name": "Engineering team",
"when": {
"op": "endsWith",
"field": "emailDomain",
"value": "acme.com"
},
"tabs": [
{ "url": "https://linear.app/acme/my-issues" }
]
}
]
}
}'Agents that want a Linky personalized from the very first click should attach the policy at create time — see Create.