Lacuna · Arazzo Workflow

Generate a Lacuna track and collect the audio

Version 1.0.0

Submits a music generation task to the Lacuna Music API, polls it to a terminal state, and returns the hosted audio URL of the first rendered track. Both operationIds are verified against the provider's published OpenAPI.

1 workflow 1 source API 1 provider
View Spec View on GitHub AI MusicMusic GenerationAI Song GeneratorAI Lyrics GeneratorAudioMIDISongwritingGenerative AIMCP ServerAgentSkillA2ADeveloper ToolsArazzoWorkflows

Provider

lacuna

Workflows

generate-and-collect
Submit a generation, poll until ready, return the audio URL.
Credits are deducted synchronously on the submit step and there is no idempotency key, so this workflow must not be re-run blindly on a transport failure.
2 steps inputs: instrumental, lyrics, model, style, title outputs: audioUrl, duration, status, taskId
1
submit
Create the generation task. Returns 202 with a pending GenerationTask.
2
poll
Poll the task until it is terminal. Intended to be repeated on a 5 second interval; typical completion is 60-120 seconds.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Generate a Lacuna track and collect the audio
  version: 1.0.0
  description: >-
    Submits a music generation task to the Lacuna Music API, polls it to a terminal state, and returns
    the hosted audio URL of the first rendered track. Both operationIds are verified against the
    provider's published OpenAPI.
  x-realizes-capability-ids:
  - BC-3700
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-3700
      capability_name: Content Origination & Production Management
      spec: lacuna-music-api-openapi.yml
      confidence: 0.7
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: musicApi
  url: ../openapi/lacuna-music-api-openapi.yml
  type: openapi
workflows:
- workflowId: generate-and-collect
  summary: Submit a generation, poll until ready, return the audio URL.
  description: >-
    Credits are deducted synchronously on the submit step and there is no idempotency key, so this
    workflow must not be re-run blindly on a transport failure.
  inputs:
    type: object
    required: [style, title]
    properties:
      style:
        type: string
        description: Style description, up to 1000 characters.
        default: lofi hip hop, mellow piano, 70 bpm
      title:
        type: string
        description: Track title, up to 200 characters.
        default: Late Night Study
      lyrics:
        type: string
        description: Required unless instrumental is true.
      instrumental:
        type: boolean
        default: true
      model:
        type: string
        description: aether (default) or echo. Do not use nocturne for new integrations.
        default: aether
  steps:
  - stepId: submit
    description: Create the generation task. Returns 202 with a pending GenerationTask.
    operationId: $sourceDescriptions.musicApi.createGeneration
    requestBody:
      contentType: application/json
      payload:
        style: $inputs.style
        title: $inputs.title
        instrumental: $inputs.instrumental
        model: $inputs.model
    successCriteria:
    - condition: $statusCode == 202
    outputs:
      taskId: $response.body#/id
      status: $response.body#/status
      creditsUsed: $response.body#/credits_used
  - stepId: poll
    description: >-
      Poll the task until it is terminal. Intended to be repeated on a 5 second interval; typical
      completion is 60-120 seconds.
    operationId: $sourceDescriptions.musicApi.getGeneration
    parameters:
    - name: id
      in: path
      value: $steps.submit.outputs.taskId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.status == 'ready'
      type: jsonpath
    onFailure:
    - name: retryPoll
      type: retry
      retryAfter: 5
      retryLimit: 120
      criteria:
      - context: $response.body
        condition: $.status == 'pending'
        type: jsonpath
    - name: stopOnFailed
      type: end
      criteria:
      - context: $response.body
        condition: $.status == 'failed'
        type: jsonpath
    outputs:
      status: $response.body#/status
      audioUrl: $response.body#/tracks/0/audio_url
      trackTitle: $response.body#/tracks/0/title
      duration: $response.body#/tracks/0/duration
      creditsRefunded: $response.body#/credits_refunded
  outputs:
    taskId: $steps.submit.outputs.taskId
    status: $steps.poll.outputs.status
    audioUrl: $steps.poll.outputs.audioUrl
    duration: $steps.poll.outputs.duration

Work with this as data

Every workflow 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 arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow 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.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/lacuna-generate-and-collect"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.