# LISNR > LISNR transmits data between devices over inaudible high-frequency audio instead of radio. Its Radius SDKs turn a speaker and a microphone into a proximity data channel for contactless payment, identification, confirmation and device-pairing transactions on iOS, Android, React Native, Linux and Windows. LISNR exposes one public HTTP API — the Tones Service API, which generates an ultrasonic audio tone from a hexadecimal payload — plus a Portal API that manages accounts, applications and the two classes of token that gate everything else. Generated by the API Evangelist enrichment pipeline on 2026-07-19 from the artifacts in this repository. LISNR does not publish an llms.txt of its own; this file is generated, not harvested. ## Key facts - Two HTTP surfaces: the Tones Service API at `https://tones.lisnr.com/` (one operation, OpenAPI published) and the Portal API at `https://api.lisnr.com` (v2, no published specification). - Authentication on both is a JWT in the `Authorization` header behind the literal prefix `JWT ` — not `Bearer`. There is no OAuth and no OIDC. - Two token classes, both minted per LISNR application in the Portal: an **API Token** (calls the Tones Service API) and an **SDK Token** (initializes the Radius object inside a client SDK). - Tone creation is **not idempotent**. Each accepted call mints a new artifact and returns a new signed URL valid for twenty-four hours. - Client SDKs are **not** on npm, PyPI, Maven Central, RubyGems or crates.io. They are gated downloads behind the Portal, filtered by the account's licensed products. - LISNR publishes no status page, no deprecation policy, no changelog, no CLI, no security.txt, no trust center and no MCP server. ## APIs - [LISNR Tones Service API](https://portal.lisnr.com/assets/tones-docs/tones-docs.html): POST a hexadecimal payload and a tone profile, get back a signed URL to a 24-bit WAV or MP3. Supports AES-256 payload encryption and ToneLock pairing. - [LISNR Portal API](https://portal.lisnr.com/developer-resources/api): authenticates portal users and manages accounts, users, applications, API tokens, SDK tokens, SDK releases and invoices. ## Specs - [Tones Service OpenAPI 3.0.1 (LISNR-published, verbatim)](openapi/lisnr-tones-openapi-original.json) - [Portal API OpenAPI 3.0.3 (derived, observed — not authoritative)](openapi/lisnr-portal-openapi-derived.json) - [Tones overlay — repairs the malformed component refs, adds operationId, tags and version](overlays/lisnr-tones-overlay.yaml) - [Portal overlay — records conventions and credential sensitivity](overlays/lisnr-portal-overlay.yaml) ## Semantics - [API conventions](conventions/lisnr-conventions.yml): auth style, cursor pagination (`limit` + `starting_after`), the `{ "result": ... }` Portal envelope, versioning, rate-limit signalling, tone payload byte limits. - [Authentication profile](authentication/lisnr-authentication.yml): the three credential types and how each is obtained. - [Error catalog](errors/lisnr-problem-types.yml): 400, 401, 403, 429 and 500 on the Tones Service, plus the Portal error envelope. Not RFC 9457. - [Data model](data-model/lisnr-data-model.yml): Account, User, App, APIToken, SDKToken, SDKRelease, Invoice, Tone and how they relate. - [Lifecycle](lifecycle/lisnr-lifecycle.yml): versioning, SDK generations, and what LISNR does not publish. - [Conformance](conformance/lisnr-conformance.yml): which standards the surfaces meet. ## Tone profiles Available profiles depend on the app's SDK generation. Payload is always a hexadecimal byte string, so the character count is twice the byte count. | Profile | SDK generation | Byte limit | | --- | --- | --- | | `standard`, `compression` | legacy | 255 | | `standard2`, `standard2_wideband` | radius | 255 | | `pkab2`, `pkab2_wideband` | radius | 3000 | | `zone66` | radius3 | 255 | | `zone266`, `point1000`, `point2000` | radius3 | 3000 | When `encrypt` is true the usable payload shrinks by 2 bytes for `zone66` and by 4 bytes for every other profile. ## Agent skills - [Generate an ultrasonic tone](skills/lisnr-generate-tone.md) - [Provision a LISNR application and its tokens](skills/lisnr-provision-app-tokens.md) ## Developer resources - [LISNR Portal](https://portal.lisnr.com/) — sign in, mint tokens, Tone Creator, tone-speed calculator - [Developer Resources](https://portal.lisnr.com/developer-resources/) — SDKs and sample projects per platform - [Help Center](https://portal.lisnr.com/help-center/) and [getting started](https://portal.lisnr.com/help-center/getting-started/) - [Support service desk](https://lisnr1.atlassian.net/servicedesk/customer/portals) — techsupport@lisnr.com - [GitHub organization](https://github.com/lisnr) — one public repository, unrelated to the SDKs - [Website](https://lisnr.com/) ## Caveats for agents - The Developer Resources and Help Center pages, `GET /v2/sdk-releases`, and the whole Portal API require an authenticated LISNR account. Only the Tones Service reference at `portal.lisnr.com/assets/tones-docs/tones-docs.html` is readable anonymously. - `lisnr.com` is behind a bot challenge and returns HTTP 202 with a captcha redirect to every automated request; do not treat that as content. - LISNR's published Tones OpenAPI is structurally non-conformant — it `$ref`s `#/components/APITokenHeader` and `#/components/PayloadProperty`, which sit at the root of `components`. Apply the overlay before generating clients. - Never place a LISNR API Token in a browser or any other public client; LISNR documents them as being as sensitive as passwords.