Lacuna · AsyncAPI Specification
Lacuna Webhooks
Version
View Spec
View on GitHub
AI MusicMusic GenerationAI Song GeneratorAI Lyrics GeneratorAudioMIDISongwritingGenerative AIMCP ServerAgentSkillA2ADeveloper ToolsAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-09'
method: derived
source: openapi/lacuna-music-openapi-original.json
spec_type: Webhooks
note: >-
Lacuna publishes no AsyncAPI document (/asyncapi.yaml and /api/asyncapi.json both 404, and nothing in
the GitHub org). It does, however, describe its event surface natively in the OpenAPI 3.1 `webhooks`
block with full JSON Schema payloads — four outbound events, a shared envelope, and a documented HMAC
signature scheme. This artifact is the derived catalog of that surface; it is NOT an AsyncAPI and is
not offered as one.
transport: HTTPS POST to a subscriber-configured endpoint
subscribe_at: https://www.lacuna.fm/profile/api
envelope:
schema: '#/components/schemas/WebhookEnvelope'
required: [id, type, created, data]
fields:
- {name: id, type: string, example: evt_abc123}
- {name: type, type: string, description: Event name.}
- {name: created, type: integer, description: Unix timestamp in seconds.}
- {name: data, type: object, description: Event-specific payload.}
security:
signature_header: X-Lacuna-Signature
format: 't=<unix-seconds>,v1=<hex>'
algorithm: HMAC-SHA256
signed_payload: '`${timestamp}.${rawBody}`'
verification: >-
Recompute the HMAC with the endpoint secret and compare; reject if the timestamp is more than five
minutes old or the signatures do not match.
helpers: 'lacuna-sdk ships packages/sdk/src/webhooks.ts'
delivery:
ack: Any 2xx response prevents retry.
retry_policy: not published
events:
- name: job.completed
summary: Music generation completed
description: Sent when a task transitions to `ready`. `tracks` carries the final hosted audio URLs.
schema: '#/components/schemas/JobCompletedEvent'
data_fields: [task_id, status, tracks, credits_used, created_at]
related_operation: openapi/lacuna-music-openapi-original.json#getGeneration
- name: job.failed
summary: Music generation failed
description: Sent when the task transitions to `failed`. Credits are refunded automatically.
schema: '#/components/schemas/JobFailedEvent'
data_fields: [task_id, status, error, credits_refunded, created_at]
- name: credits.low
summary: Credit balance dropped below threshold
description: >-
Edge-triggered — fires once when the balance crosses below `creditAlertThreshold` and will not
re-fire until the balance rises above the threshold and crosses again.
schema: '#/components/schemas/CreditsLowEvent'
data_fields: [threshold, balance, subscription_credits, onetime_credits]
- name: key.expiring
summary: API key expiring within 24 hours
description: Sent once per key, 24 hours before expiry.
schema: '#/components/schemas/KeyExpiringEvent'
data_fields: [api_key_id, prefix, name, expires_at, days_until_expiry]
ui_events_not_webhooks:
note: >-
The August 9 2026 changelog adds in-product completion notifications for stem splits, mastering,
artwork and mixdowns. Those are product notifications, not documented webhook event types — only the
four events above appear in the OpenAPI webhooks block.
gaps:
- No AsyncAPI document is published for this event surface.
- No retry/backoff policy is documented for failed deliveries.
- Event types are limited to the music-generation product; the other tools emit no webhooks.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/lacuna-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.