Skip to main content

REST API

Use the REST API for server-side automation or platforms that do not yet have an SDK.

Integration options​

Whenever possible, use the native SDKs so installation tracking, session management, and retries happen automatically:

Direct API integration​

If you are building a backend service or unsupported client, follow the Direct Integration Guide.

Quick reference​

The typed OpenAPI 3.1 specification is available at https://ulink.ly/openapi.json for agents, client generators, and function-calling integrations.

Authentication

X-App-Key: your-api-key
Content-Type: application/json

Base URL

https://api.ulink.ly/v1

Core endpoints

EndpointPurpose
POST /sdk/installations/trackTrack app installations
POST /sdk/sessions/startStart a session
POST /sdk/sessions/{id}/endEnd a session
POST /sdk/linksCreate dynamic/unified links
GET /sdk/resolve?url=…Resolve link data

A link's QR image is also served from a public, no-auth URL you can embed anywhere — see QR Codes.

API key​

Create or rotate keys under Dashboard → API Keys. For direct REST integrations, keep the key on your backend. The current mobile SDK setup also embeds a project key in the app; that key is extractable from the app package and currently authorizes POST /sdk/links as well as SDK tracking requests. Do not treat a key embedded in a mobile app as a secret or use it as the sole authorization for sensitive operations. If your app does not need client-side link creation, keep link creation on your authenticated backend. Key-level capability restrictions are not yet available.

Use the /v1 base for all new integrations. The unversioned base is deprecated but remains compatible; see Versioning and Deprecation.

Runtime contract​

  • Versioning and Deprecation explains major versions plus Deprecation, Sunset, and lifecycle links.
  • Rate Limits documents live RateLimit feedback and Retry-After on 429.
  • Typed Errors defines the RFC 9457 application/problem+json model and stable error codes.

Query-parameter passthrough​

Dynamic links accept an optional allowQueryPassthrough boolean field (default false). When enabled, query params appended to the live link URL are merged into the resolved parameters map delivered to the app, overriding any stored param with the same key. Values always arrive as strings.

See the Query-Parameter Passthrough guide for the full field reference, validation limits, and examples.

Next steps​

  1. Read the Direct Integration Guide for full request/response examples.
  2. Implement installation tracking and session management first; other endpoints depend on that context.