All integrations

Linkly

MARKETING · MARKETING

Short links, their conversions, custom domains, and webhooks in the account they connected.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

linkly_delete_api_v1_link_by_link_id_webhooks_by_hook_idWRITE

Stop sending one link's events to a webhook URL. `hook_id` is the webhook URL itself -- pass it exactly as List a link's webhooks returned it, unencoded; this integration percent-encodes it for the wire via DELETE /api/v1/link/{link_id}/webhooks/{hook_id}

api
linkly_delete_api_v1_workspace_by_workspace_id_domains_by_domain_idWRITE

Remove a custom domain from a workspace. Every short link already published on that domain STOPS RESOLVING -- this is not a soft delete and there is no restore for it via DELETE /api/v1/workspace/{workspace_id}/domains/{domain_id}

api
linkly_delete_api_v1_workspace_by_workspace_id_linksWRITE

Move one or more links, named by id in the body, to the workspace's trash. Recoverable with Restore links via DELETE /api/v1/workspace/{workspace_id}/links

api
linkly_delete_api_v1_workspace_by_workspace_id_links_by_idWRITE

Move one link to the workspace's trash; recoverable with Restore links. Deleting a link already in the trash is a no-op that still answers 200, while an id absent from the workspace answers 404 via DELETE /api/v1/workspace/{workspace_id}/links/{id}

api
linkly_delete_api_v1_workspace_by_workspace_id_webhooks_by_hook_idWRITE

Stop sending a workspace's events to a webhook URL. `hook_id` is the webhook URL itself -- pass it exactly as List a workspace's webhooks returned it, unencoded; this integration percent-encodes it for the wire via DELETE /api/v1/workspace/{workspace_id}/webhooks/{hook_id}

api
linkly_get_api_v1_conversionsREAD

List a workspace's recorded conversions -- purchases, signups and custom events attributed to a link -- most recent first via GET /api/v1/conversions

api
linkly_get_api_v1_get_link_by_idREAD

Read one link by id without naming its workspace, returned wrapped as `{"link": ...}`. Use Get a link when you have the workspace id via GET /api/v1/get_link/{id}

api
linkly_get_api_v1_link_by_idREAD

Read one link in a workspace: destination, short URL, UTM parameters, rules and configuration. Click counts are NOT included -- use Get click analytics for a time series or List links for per-link totals via GET /api/v1/link/{id}

api
linkly_get_api_v1_link_by_link_id_webhooksREAD

List the webhook subscriptions attached to one link. Each subscription's id IS its URL -- pass it back verbatim to unsubscribe via GET /api/v1/link/{link_id}/webhooks

api
linkly_get_api_v1_workspace_by_workspace_id_clicksREAD

Read a workspace's clicks as a time series, filtered by link, date range, country, browser, platform, referer or ISP, and optionally pivoted. Set `format` to `csv` or `tsv` for a non-JSON export via GET /api/v1/workspace/{workspace_id}/clicks

api
linkly_get_api_v1_workspace_by_workspace_id_clicks_counters_by_counterREAD

Aggregate a workspace's clicks by one dimension (country, city, platform, referer, link_id, a UTM field and others), ordered by count descending. At most 10,000 groups are returned, while `total` always counts every click -- so a truncated result's `count` values sum to less than `total` via GET /api/v1/workspace/{workspace_id}/clicks/counters/{counter}

api
linkly_get_api_v1_workspace_by_workspace_id_domainsREAD

List the custom short-link domains configured on a workspace, which links in that workspace may use as their `domain` via GET /api/v1/workspace/{workspace_id}/domains

api
linkly_get_api_v1_workspace_by_workspace_id_links_exportREAD

Export every link in a workspace, as JSON or as CSV. A `csv` export answers with CSV text rather than JSON, which this integration reports under a `raw` key via GET /api/v1/workspace/{workspace_id}/links/export

api
linkly_get_api_v1_workspace_by_workspace_id_list_linksREAD

List a workspace's links with their click totals, paginated and sortable, searchable by text and filterable on exact field matches (domain, slug and the five UTM fields). Pass `deleted=true` to list the trash instead via GET /api/v1/workspace/{workspace_id}/list_links

api
linkly_get_api_v1_workspace_by_workspace_id_webhooksREAD

List the webhook subscriptions attached to a whole workspace. Each subscription's id IS its URL -- pass it back verbatim to unsubscribe via GET /api/v1/workspace/{workspace_id}/webhooks

api
linkly_get_api_v1_workspacesREAD

List every workspace this API key can reach, with its id and name -- the call that supplies the `workspace_id` most other tools take, and the one this integration probes a pasted key with via GET /api/v1/workspaces

api
linkly_patch_api_v1_workspace_by_workspace_id_domains_by_id_faviconWRITE

Set the favicon URL a custom domain serves on its redirect pages via PATCH /api/v1/workspace/{workspace_id}/domains/{id}/favicon

api
linkly_post_api_v1_conversionsWRITE

Report a purchase, signup or custom event that happened after someone clicked a Linkly link. Attribution needs the `linkly_cid` the landing page captured; an unattributable conversion answers 202 with `attributed: false` and is DISCARDED rather than stored, so do not retry it. Pass `event_id` to make reporting idempotent via POST /api/v1/conversions

api
linkly_post_api_v1_domainsWRITE

Add a custom short-link domain to a workspace named in the body. A CNAME record pointing at `domains.linklyhq.com` must already resolve, or Linkly refuses the domain via POST /api/v1/domains

api
linkly_post_api_v1_linkWRITE

Create a short link from `url` plus `workspace_id`, or update an existing one by passing its `id`. Carries custom slugs, UTM parameters, retargeting pixels, Open Graph metadata, expiry and redirect rules via POST /api/v1/link

api
linkly_post_api_v1_link_by_link_id_webhooksWRITE

Send this link's events to a URL: a POST for each `click`, plus `link.updated` and `link.deleted`. Branch on the JSON `event` field via POST /api/v1/link/{link_id}/webhooks

api
linkly_post_api_v1_linksWRITE

Create or update up to 1000 links in one request. The body is a JSON ARRAY whose items use the single-link schema -- include `id` to update, omit it to create, and give each item a `workspace_id`. Answers 200 even when some items fail, so inspect each result's own `status` via POST /api/v1/links

api
linkly_post_api_v1_workspace_by_workspace_id_domainsWRITE

Add a custom short-link domain to the workspace named in the PATH. A CNAME record pointing at `domains.linklyhq.com` must already resolve, or Linkly refuses the domain via POST /api/v1/workspace/{workspace_id}/domains

api
linkly_post_api_v1_workspace_by_workspace_id_linksWRITE

Create a short link in the workspace named in the PATH, or update one by passing its `id`. The same shape as Create or update a link, with the workspace taken from the path instead of the body via POST /api/v1/workspace/{workspace_id}/links

api
linkly_post_api_v1_workspace_by_workspace_id_links_restoreWRITE

Restore soft-deleted links by id, rebuilding each short URL from its preserved `full_url`. A link whose short URL has since been taken by a live link is skipped and reported under `conflicts` via POST /api/v1/workspace/{workspace_id}/links/restore

api
linkly_post_api_v1_workspace_by_workspace_id_webhooksWRITE

Send every link's events in this workspace to a URL: a POST for each `click`, `link.created`, `link.updated` and `link.deleted`. Branch on the JSON `event` field via POST /api/v1/workspace/{workspace_id}/webhooks

api

Put Linkly behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.