Apicurio Registry vs. Confluent Schema Registry

Apicurio Registry and Confluent Schema Registry both store and version schemas for Apache Kafka. Apicurio Registry is an Apache 2.0 licensed CNCF project that also manages API definitions and AI artifacts, and it implements the Confluent Schema Registry API, so most applications that use Confluent serializers can switch by changing one URL.

At a glance

Apicurio RegistryConfluent Schema Registry
LicenseApache License 2.0Confluent Community License for the self-managed component
GovernanceCNCF Sandbox project, open communityDeveloped by Confluent, Inc.
Schema formatsAvro, Protobuf, JSON SchemaAvro, Protobuf, JSON Schema
Other artifact typesOpenAPI, AsyncAPI, GraphQL, Kafka Connect, OpenRPC, Thrift, WSDL, XML, XSD, A2A agent cards, MCP tools, prompt templates, model schemas, and custom typesNot applicable
StoragePostgreSQL, Apache Kafka, in-memory H2, read-only GitOps and KubernetesOps (experimental)Kafka topic
Confluent client compatibilityConfluent Schema Registry API v7 and v8 under /apis/ccompat/Native
Native APIApicurio Registry REST API v3 with groups, branches and labelsNot applicable
Web consoleIncludedPart of Confluent Control Center or Confluent Cloud
KubernetesOperator for Kubernetes and OpenShiftConfluent for Kubernetes

Confluent product details change over time; check Confluent's documentation for the current state.

Using Confluent clients with Apicurio Registry

Apicurio Registry serves the Confluent Schema Registry API at /apis/ccompat/v7 and /apis/ccompat/v8. The schemas, subjects, compatibility, config, mode and contexts APIs are supported, with full support for Avro, JSON Schema and Protobuf. Point existing Confluent serializers at it:

schema.registry.url=http://my-registry:8080/apis/ccompat/v7

When no compatibility rule is configured, the compatibility check endpoint defaults to BACKWARD, as Confluent does. Schema registration only enforces compatibility once you configure a rule with PUT /config or PUT /config/{subject}.

What is not supported through the Confluent API

Confluent featureBehavior in Apicurio RegistryAlternative
Schema Linking and exportersGET /exporters returns an empty list; other exporter operations return an errorImport/export API, Kafka storage replication, or GitOps
Client-side field level encryption keys (KEKs, DEKs)Endpoints not presentApplication-level encryption or external key management
Cluster metadata API/v1/metadata/* not presentApicurio Registry system API
Data contract rule enforcementmetadata and ruleSet are accepted but neither stored nor enforcedNative data contracts (apicurio.contracts.enabled=true)

When to choose which

  • Choose Apicurio Registry if you want an Apache 2.0 licensed, vendor-neutral registry; if you need to govern API definitions or AI agent artifacts alongside Kafka schemas; or if you want to store schemas in PostgreSQL or Git rather than a Kafka topic.
  • Stay on Confluent Schema Registry if you depend on Schema Linking, client-side field level encryption or Confluent's data contract rule execution, or you use Confluent Cloud and want a fully managed service from the same vendor.

Migrating from Confluent Schema Registry

  1. Export your schemas with the Confluent export tool and import them into Apicurio Registry.
  2. Point your clients' schema.registry.url at /apis/ccompat/v7. Review the apicurio.ccompat.legacy-id-mode.enabled setting: the default maps Confluent schema IDs to content IDs, as Confluent does.
  3. Optionally move clients to the Apicurio Registry SerDes to use the native API.

Learn more