Skip to main content

Generate MIDI from Audio

Convert separated audio tracks into MIDI format with detailed note information for each instrument.

Usage Guide

  • Convert separated audio tracks into structured MIDI data containing pitch, timing, and velocity information
  • Requires a completed vocal separation task ID (from the Vocal Removal API)
  • Generates MIDI note data for multiple detected instruments including drums, bass, guitar, keyboards, and more
  • Ideal for music transcription, notation, remixing, or educational analysis
  • Best results on clean, well-separated audio tracks with clear instrument parts

Prerequisites

You must first use the Vocal & Instrument Stem Separation API to separate your audio before generating MIDI.

Parameter Reference

NameTypeDescription
taskIdstringRequired. Task ID from a completed vocal separation
callBackUrlstringRequired. URL to receive MIDI generation completion notifications

Developer Notes

  • The callback will contain detailed note data for each detected instrument
  • Each note includes: pitch (MIDI note number), start (seconds), end (seconds), velocity (0-1)
  • Not all instruments may be detected - depends on audio content
  • Billing: Check current per-call credit costs at https://app.apikley.ru/billing
Rate limits and quotas are enforced by Apikley and may differ from upstream providers.

OpenAPI

suno-api/suno-api.json post /api/v1/midi/generate
openapi: 3.0.0
info:
  title: Suno API
  description: Apikley Suno API Documentation
  version: 1.0.0
  contact:
    name: Technical Support
    email: [email protected]
servers:
  - url: https://api.apikley.ru
    description: API Server
security:
  - BearerAuth: []
paths:
  /api/v1/midi/generate:
    post:
      summary: Generate MIDI from Audio
      description: >-
        Convert separated audio tracks into MIDI format with detailed note
        information for each instrument.


        ### Usage Guide

        - Convert separated audio tracks into structured MIDI data containing
        pitch, timing, and velocity information

        - Requires a completed vocal separation task ID (from the Vocal Removal
        API)

        - Generates MIDI note data for multiple detected instruments including
        drums, bass, guitar, keyboards, and more

        - Ideal for music transcription, notation, remixing, or educational
        analysis

        - Best results on clean, well-separated audio tracks with clear
        instrument parts


        ### Prerequisites

        - You must first use the Vocal & Instrument Stem Separation API with
        `type: split_stem` to separate your audio before generating MIDI


        ### Parameter Details

        - `taskId` identifies a completed vocal separation task 

        - `callBackUrl` receives MIDI generation completion notifications


        ### Developer Notes

        - MIDI generation typically takes 30-90 seconds depending on audio
        length and complexity

        - The callback will contain detailed note data for each detected
        instrument

        - Each note includes: pitch (MIDI note number), start (seconds), end
        (seconds), velocity (0-1)

        - Not all instruments may be detected - depends on audio content

        - Generated MIDI data is retained for 14 days
      operationId: generate-midi
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - taskId
                - callBackUrl
              properties:
                taskId:
                  type: string
                  description: >-
                    Task ID from a completed vocal separation. This should be
                    the taskId returned from the Vocal & Instrument Stem
                    Separation endpoint.
                  example: 5c79****be8e
                callBackUrl:
                  type: string
                  format: uri
                  description: >-
                    The URL to receive MIDI generation task completion updates.
                    Required for all MIDI generation requests.


                    - System will POST task status and MIDI note data to this
                    URL when generation completes

                    - Callback includes detailed note information for each
                    detected instrument with pitch, timing, and velocity

                    - Your callback endpoint should accept POST requests with
                    JSON payload containing MIDI data

                    - For detailed callback format and implementation guide, see
                    [MIDI Generation
                    Callbacks](https://docs.apikley.ru/suno-api/generate-midi-callbacks)

                    - Alternatively, use the Get MIDI Generation Details
                    endpoint to poll task status
                  example: https://example.callback
      responses:
        '200':
          description: MIDI generation task created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Response status code
                    example: 200
                  msg:
                    type: string
                    description: Response message
                    example: success
                  data:
                    type: object
                    description: Response data containing task information
                    properties:
                      taskId:
                        type: string
                        description: >-
                          Unique identifier for the MIDI generation task. Use
                          this to query task status or receive callback results.
                        example: 5c79****be8e
              example:
                code: 200
                msg: success
                data:
                  taskId: 5c79****be8e
        '500':
          $ref: '#/components/responses/Error'
components:
  responses:
    Error:
      description: Server Error
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        All APIs require authentication via Bearer Token.


        Get API Key:

        1. Visit [API Key Management Page](https://app.apikley.ru/keys) to get your
        API Key


        Usage:

        Add to request header:

        Authorization: Bearer APIKLEY_API_KEY


        Note:

        - Keep your API Key secure and do not share it with others

        - If you suspect your API Key has been compromised, reset it immediately
        in the management page


To find navigation and other pages in this documentation, fetch the llms.txt file at: https://docs.apikley.ru/llms.txt