LazyListen Zapier API Reference
OAuth 2.0 and REST endpoints used by the official LazyListen integration for Zapier. The API creates private episode jobs and permits owner-scoped retrieval only.
Overview
https://lazylisten.comAuthorizationOAuth 2.0 authorization code grant with refresh tokensScopezapier:episodesRequest formatJSON for API calls; form-encoded token requestsAccess-token lifeOne hourAll API responses use JSON. Every episode job and completed episode is bound to the authenticated LazyListen owner. Unknown request fields are rejected.
OAuth 2.0
GET/oauth/authorize
Begins authorization. A signed-in LazyListen user sees an explicit consent page. Approval requires a same-origin, CSRF-protected POST; the browser session does not auto-authorize.
codeclient_idIssued confidential-client identifierredirect_uriMust exactly match a registered Zapier redirect URIscopezapier:episodesstateOpaque Zapier state value, returned unchangedPOST/oauth/token
Exchanges a one-time authorization code or a refresh token. The confidential client authenticates with its client ID and client secret.
authorization_code or refresh_tokenAuthorization codeSingle use and short livedRefresh tokenRotated on every successful refresh{
"access_token": "…",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "…",
"scope": "zapier:episodes"
}Account test
GET/api/integrations/zapier/me
Validates the connection and returns the authenticated LazyListen account’s public identity fields. Requires Authorization: Bearer <access_token>.
Episode jobs
POST/api/integrations/zapier/episode-jobs
Creates a private episode-generation job. Send exactly one of url or text.
{ "url": "https://example.com/newsletter/story" }or
{ "text": "Text to turn into an episode…" }GET/api/integrations/zapier/episode-jobs/:id
Returns an owner-scoped job with status pending, processing, ready, or failed. Jobs owned by another account are never exposed.
GET/api/integrations/zapier/episodes/:jobId
Returns the completed private episode for a ready job, including title, transcript excerpt, private episode page, authenticated audio link, duration, and completion time. A job that is not ready produces a non-success response.
Errors and limits
zapier:episodes.404Job does not exist for the authenticated owner.409Completed episode requested before the job is ready.429Rate limit exceeded; retry with backoff.5xxTemporary service or generation failure.Security and data handling
LazyListen validates redirect URIs against an exact allowlist, stores client secrets and refresh tokens only as hashes, rotates refresh tokens, limits CORS, rejects internal-network source URLs, redacts URL query strings and fragments from logs, and enforces owner-only reads. See the privacy policy and terms.
Support: support@lazylisten.com