Pavel on AsyncAPI
By an AsyncAPI Technical Steering Committee member

AsyncAPI tools and reference, from one of its maintainers

Write, validate and generate AsyncAPI documents with a JetBrains plugin, keep them in step with live brokers with Kurkik, and look up every protocol binding, schema format and security scheme in plain language.

brokers with bindings docs
20
JSON Schemas for validation
600+
AsyncAPI versions covered
2.x & 3.x
asyncapi: 3.0.0
info:
  title: Orders
  version: 1.0.0
channels:
  orderCreated:
    address: orders.created
    bindings:
      kafka:
        partitions: 12
    messages:
      orderCreated:
        payload:
          schemaFormat: application/vnd.apache.avro;version=1.9.0
          schema:
            $ref: './order.avsc'
        bindings:
          kafka:
            key:
              type: string
operations:
  sendOrderCreated:
    action: send
    channel:
      $ref: '#/channels/orderCreated'
Kafka channel and message bindingsAvro payload in a Multi-Format Schema

What are you working on?

Start from the task. Each card goes to the page that answers it.

  • Describe a broker

    Kafka topics and keys, AMQP exchanges and queues, MQTT QoS, SQS and SNS: every binding field, with examples.

    Bindings for 20 brokers
  • Define message payloads

    JSON Schema, Avro, Protobuf and more: how the Schema and Multi-Format Schema objects describe what you send.

    Schema formats
  • Secure the API

    Bearer tokens, API keys, OAuth 2.0 flows, SASL PLAIN, SCRAM and GSSAPI, X.509: which scheme fits, and how to write it.

    Security schemes
  • Write and validate in the IDE

    An AsyncAPI editor inside IntelliJ IDEA and other JetBrains IDEs: completion, live validation, preview, linting.

    JetBrains plugin
  • Generate from Spring code

    Turn @KafkaListener, JMS, SNS, SQS, Pulsar and STOMP code into an AsyncAPI document instead of writing it twice.

    Spring Messaging support
  • Validate in CI or with AI agents

    Point editors, pipelines and LLM agents at a schema URL for your AsyncAPI version and bindings.

    JSON Schema registry
Tools

AsyncAPI tools for the IDE, the JVM and live brokers

From writing the first document to keeping it true years later: the declaration and the systems it describes should not drift apart.

  • An AsyncAPI editor for IntelliJ IDEA and every JetBrains IDE, that also generates documents from Spring code and live brokers

    • Live validation, completion and preview for AsyncAPI 2.0.0 to 3.1.0
    • Generate AsyncAPI documents from Spring code: Kafka, Pulsar, SQS, SNS and JMS
    • Export AsyncAPI from a live Kafka or Pulsar cluster, or an SNS or SQS account
  • AsyncAPI support for VS Code, Zed and Sublime Text

    • Errors and warnings highlighted as you type
    • Context-aware completion
    • Quick documentation on hover
  • Kurkik

    Early Access Program

    Catch drift between your AsyncAPI document and the brokers and queues that actually run

    • Document an existing Apache Kafka, Apache Pulsar, Amazon SNS or Amazon SQS estate
    • Detect drift between your AsyncAPI document and the live system
    • Apply changes as a reviewed plan, with the risky ones kept out of the default approval
  • JAsyncAPI

    Free & open source

    Read, create and write AsyncAPI documents from Java and Kotlin

    • AsyncAPI 2.0.0, 2.6.0 and 3.0.0
    • 19 protocol bindings, from Kafka and AMQP to MQTT, NATS, SNS and SQS
    • All security scheme types
Free reference

AsyncAPI bindings, schemas and security schemes

Plain-language docs for the parts of the specification people search for most, with examples you can copy. Every page is also available as Markdown for AI tools.

Protocol bindings for 20 brokers

What bindings are and how to use them

JSON Schema registry for editors, CI and AI agents

Machine-readable schemas for AsyncAPI 3.0 and 3.1 documents, every binding version and every security scheme. Paste a URL into your IDE, your pipeline or an agent's prompt.

https://schemas.asyncapi.pavelon.dev/draft-07/schemas/v3.0.0/asyncapi
Self-maintaining AsyncAPI

Drift, caught from both sides

An AsyncAPI document is a promise. Code changes, topics get added, queues get reconfigured, and the promise quietly stops being true. These tools compare the declaration with what actually runs.

  1. From source code

    JetBrains plugin

    Generates the AsyncAPI document from Spring Messaging code and flags listener mistakes in the editor. When the code changes, you review the difference.

    See the plugin
  2. The contract

    One AsyncAPI document

    The single place that says what your system does, validated against the AsyncAPI JSON Schemas by editors, CI pipelines and AI agents.

    Use the schema registry
  3. From brokers and queues

    Kurkik

    Reads a live Kafka, Pulsar, SNS or SQS system, shows where it differs from the document, and applies fixes only as a plan you approve.

    Read about Kurkik
AsyncAPI questions

Frequently asked questions

What is AsyncAPI?

AsyncAPI is an open specification for describing message-driven APIs: which servers (brokers) an application connects to, which channels (topics, queues, routing keys) it uses, which messages it sends or receives and what their payloads look like. It does for Kafka, MQTT, AMQP, WebSocket and other protocols what OpenAPI does for HTTP request-response APIs, and documents are written in YAML or JSON.

What is the difference between AsyncAPI and OpenAPI?

OpenAPI describes request-response HTTP APIs: paths, methods and responses. AsyncAPI describes event-driven APIs: channels, the messages on them and whether an application sends or receives them, over protocols such as Kafka, AMQP, MQTT or WebSocket. Both describe payloads with JSON Schema, and AsyncAPI can reuse OpenAPI schemas through the Multi-Format Schema Object.

What is an AsyncAPI binding?

A binding adds protocol-specific details that the core specification does not cover, at server, channel, operation or message level: for example a Kafka topic’s partitions and the message key, an AMQP exchange and queue, or MQTT QoS. Each broker has its own binding with its own versions. Bindings for 20 brokers are documented here with examples.

Is AsyncAPI the same as JSON Schema?

No. JSON Schema describes the shape of a piece of data; AsyncAPI describes a whole messaging API and uses a schema for each message payload. The AsyncAPI Schema Object is a superset of JSON Schema draft-07, and other formats such as Avro or Protobuf can be used through the Multi-Format Schema Object.

How do I use an Avro or Protobuf schema in AsyncAPI?

In AsyncAPI 3.0, set the message payload to a Multi-Format Schema Object: schemaFormat names the format, for example application/vnd.apache.avro;version=1.9.0, and schema holds the schema itself or a $ref to it. In AsyncAPI 2.x, put schemaFormat on the message next to payload. Protobuf uses application/vnd.google.protobuf;version=3, which not every tool supports. Avro examples.

How do I add message examples to an AsyncAPI document?

Use the examples field of the Message Object: a list of examples, each with optional name, summary, headers and payload. Examples should validate against the message’s payload and headers schemas.

How do I describe a Kafka message key in AsyncAPI?

Use the Kafka message binding: its key field holds the schema of the record key, next to the message payload. Topic settings such as partitions and replicas go in the Kafka channel binding, and consumer group and client IDs in the operation binding. Kafka binding reference.

Is there an AsyncAPI editor for IntelliJ IDEA?

Yes. The AsyncAPI plugin for JetBrains IDEs adds completion, live validation for AsyncAPI 2.x and 3.x, a preview, Spectral and Redocly linting, and generation of AsyncAPI documents from Spring Messaging code. It works in IntelliJ IDEA, WebStorm, PyCharm, Android Studio and other JetBrains IDEs, with a free core and paid extras.

How do I validate an AsyncAPI document?

Validate as you type in the JetBrains plugin, or validate against the AsyncAPI JSON Schemas from the schema registry in any editor and in CI, for example with check-jsonschema. Add Spectral or Redocly rules for style and conventions.

How can an AI agent or LLM write valid AsyncAPI?

Give the agent the schema URL for your AsyncAPI version and binding from the registry. It can read the structure from the schema, generate a document or a single binding, then validate the result against the same schema and fix what it reports.

How do I keep an AsyncAPI document in sync with the code and the brokers?

From the code side, the JetBrains plugin regenerates the document from Spring Messaging code so you review what changed. From the broker side, Kurkik compares the document with a live Kafka, Pulsar, SNS or SQS system, reports drift and applies changes only after you approve them.

About

Built by an AsyncAPI maintainer

I'm Pavel Bodiachevskii, a member of the AsyncAPI Technical Steering Committee and a maintainer in the AsyncAPI ecosystem, including the JAsyncAPI library used by Springwolf, the Quarkus AsyncAPI extension and Specmatic. The tools and docs here come from daily work with the specification, brokers and real event-driven systems.

Like the free docs, JAsyncAPI and the plugin's free core? Sponsor them on GitHub, or tell me how you use them.

From the blog

All posts