Supported KIPs
Kafka Improvement Proposals (KIPs) describe the protocol and feature changes that ship in each Apache Kafka release. This page tracks how kafka-python covers the client-facing KIPs. The KIP set and the Kafka-release column follow the excellent list maintained by the franz-go project.
Because the wire protocol is generated from the upstream Kafka JSON schemas
(kafka/protocol/schemas/resources/), the protocol classes track many KIPs
automatically. The Status column reflects client-facing behavior in
kafka-python – whether the feature is actually usable through
KafkaProducer, KafkaConsumer, or KafkaAdminClient – not merely
whether the wire format exists. Note that kafka-python is a client library:
broker- and controller-internal protocols (KRaft, inter-broker replication,
etc.) are intentionally out of scope.
This table layout was borrowed from franz-go because we liked it so much! It was originally constructed here by Claude, but it is maintained with a caring human touch.
Status legend
Supported – usable through the kafka-python client or admin API.
Partial – partially implemented; the status links to the notes below.
Protocol only – wire/protocol classes exist under
kafka/protocol/but the client does not yet drive or expose the feature.--– not implemented / not supported.
KIPs
KIP |
Title |
Kafka release |
Status |
kafka-python release |
|---|---|---|---|---|
Disallow acks > 1 |
0.8.3 |
Supported |
1.0.0 |
|
Flush method on Producer |
0.8.3 |
Supported |
1.0.0 |
|
Basic Admin APIs |
0.9.0 |
Supported |
1.0.0 |
|
SASL & SSL |
0.9.0 |
Supported |
1.1.0 |
|
Throttling (on broker) |
0.9.0 |
Supported |
2.1.0 |
|
Producer close with a timeout |
0.9.0 |
Supported |
1.0.0 |
|
Request timeouts |
0.9.0 |
Supported |
1.0.0 |
|
Custom partitioners |
0.9.0 |
Supported |
1.0.0 |
|
ListGroups and DescribeGroups |
0.9.0 |
Supported |
1.4.4 |
|
Relative offsets in message sets |
0.10.0 |
Supported |
1.2.0 |
|
Timestamps in message set v1 |
0.10.0 |
Supported |
1.2.0 |
|
ApiVersion |
0.10.0 |
Supported |
1.3.0 |
|
max.poll.records |
0.10.0 |
Supported |
1.0.0 |
|
Producer & consumer interceptors |
0.10.0 |
– |
– |
|
SASL PLAIN & handshake |
0.10.0 |
Supported |
1.3.0 |
|
Interoperable lz4 framing |
0.10.0 |
Supported |
1.2.0 |
|
background heartbeats & improvements |
0.10.1 |
Supported |
1.4.0 |
|
On{Assigned,Revoked} |
0.10.1 |
Supported |
2.1.3 |
|
Fetch response size limits |
0.10.1 |
Supported |
2.1.3 |
|
ClusterID in Metadata |
0.10.1 |
Supported |
1.3.3 |
|
List offsets for times |
0.10.1 |
Supported |
1.3.4 |
|
Bound fetch memory usage |
0.10.1 |
1.0.0 |
||
SASL SCRAM |
0.10.2 |
Supported |
2.0.0 |
|
SASL Callbacks |
0.10.2 |
1.4.6 |
||
OffsetFetch for admins |
0.10.2 |
Supported |
1.3.3 |
|
Backwards compat for old brokers |
0.10.2 |
Supported |
1.0.0 |
|
Consumer close timeouts |
0.10.2 |
Supported |
1.0.0 |
|
CreateTopic validate only field |
0.10.2 |
Supported |
2.0.0 |
|
Sticky partitioning |
0.11.0 |
Supported |
2.0.2 |
|
Record headers |
0.11.0 |
Supported |
1.4.0 |
|
EOS |
0.11.0 |
Supported |
2.2.0 |
|
OffsetForLeaderEpoch v0 |
0.11.0 |
Supported |
1.4.0 |
|
DeleteRecords |
0.11.0 |
Supported |
2.1.0 |
|
Admin client |
0.11.0 |
Supported |
1.4.4 |
|
Request rate quotas |
0.11.0 |
Supported |
2.1.0 |
|
Ensure proper batch size after compression |
0.11.0 |
Supported |
1.0.0 |
|
Describe & Alter configs |
0.11.0 |
Supported |
2.0.0 |
|
ACLs |
0.11.0 |
Supported |
1.4.7 |
|
Broker reconnect backoff |
0.11.0 |
Supported |
1.3.4 |
|
Broker request protocol changes |
1.0 |
Supported |
1.4.4 |
|
LogDir requests |
1.0 |
Supported |
1.4.4 |
|
More SASL; SASLAuthenticate |
1.0 |
Supported |
2.1.0 |
|
Idempotency is default |
1.0 |
Supported |
2.2.0 |
|
Cleaner idempotence semantics |
1.0 |
Supported |
2.2.0 |
|
CreatePartitions |
1.0 |
Supported |
1.4.4 |
|
Delegation tokens |
1.1 |
– |
– |
|
DeleteRecords via admin API |
1.1 |
Supported |
2.1.0 |
|
Describe configs v1 |
1.1 |
Supported |
2.0.0 |
|
Incremental fetch |
1.1 |
Supported |
2.1.0 |
|
DeleteGroups |
1.1 |
Supported |
2.0.2 |
|
Client-side throttling |
2.0 |
Supported |
2.1.0 |
|
Group operations via admin API |
2.0 |
Supported |
1.4.4 |
|
Delegation tokens in admin API |
2.0 |
– |
– |
|
SASL OAUTHBEARER |
2.0 |
Supported |
1.4.6 |
|
Fix indefinite consumer timeouts |
2.0 |
1.0.0 |
||
OffsetForLeaderEpoch bump |
2.0 |
Supported |
3.0.0 |
|
TLS verification |
2.0 |
Supported |
1.4.6 |
|
Intuitive producer timeouts |
2.1 |
Supported |
2.2.0 |
|
zstd |
2.1 |
Supported |
2.0.2 |
|
Use multiple addrs for resolved hostnames |
2.1 |
Supported |
2.0.0 |
|
Fetcher: detect log truncation |
2.1 |
Supported |
3.0.0 |
|
DeleteTopics disabled error code |
2.1 |
Supported |
2.1.0 |
|
OAUTHBEARER extensions |
2.1 |
Supported |
1.4.6 |
|
List ACLs per principal via admin API |
2.1 |
Supported |
1.4.7 |
|
Configurable compression level |
2.1 |
– |
– |
|
Elect preferred leaders |
2.2 |
Supported |
2.1.0 |
|
New error in ListOffsets |
2.2 |
Supported |
2.3.0 |
|
Default group.id to null |
2.2 |
Supported |
2.2.0 |
|
Periodically reauthenticate SASL |
2.2 |
Supported |
3.0.0 |
|
Group max size error |
2.2 |
Supported |
2.1.0 |
|
Require member.id for initial join request |
2.2 |
Supported |
2.2.0 |
|
IncrementalAlterConfigs |
2.3 |
Supported |
3.0.0 |
|
Sticky group bugfix |
2.3 |
Supported |
2.0.3 |
|
Allow disable auto topic creation |
2.3 |
Supported |
2.1.0 |
|
Authorized ops in DescribeGroups |
2.3 |
Supported |
2.3.0 |
|
Static group membership |
2.4 |
Supported |
2.3.0 |
|
An always round robin produce partitioner |
2.4 |
– |
– |
|
Closest replica fetching w/ rack |
2.4 |
Supported |
3.0.0 |
|
Commit offsets manually |
2.4 |
Supported |
2.0.0 |
|
Dynamic log levels w/ IncrementalAlterConfigs |
2.4 |
Supported |
3.0.0 |
|
Consumer incremental rebalance |
2.4 |
Supported |
3.0.0 |
|
Replica reassignment API |
2.4 |
Supported |
3.0.0 |
|
Leader election API |
2.4 |
Supported |
2.1.0 |
|
CreateTopic defaults |
2.4 |
Supported |
2.0.0 |
|
Per-record error codes when producing |
2.4 |
Supported |
2.3.0 |
|
Sticky partition producing |
2.4 |
Supported |
3.0.0 |
|
Tagged fields (KAFKA-8885) |
2.4 |
Supported |
3.0.0 |
|
OffsetDelete admin command |
2.4 |
Supported |
3.0.0 |
|
Client name/version in ApiVersions request |
2.4 |
Supported |
2.1.3 |
|
Bounded Flush |
2.4 |
Supported |
1.0.0 |
|
CreateTopics v5 returns configs |
2.4 |
Supported |
2.0.0 |
|
Safe epoch bumping for |
2.5 |
Supported |
3.0.0 |
|
Producer scalability for EOS |
2.5 |
Supported |
3.0.0 |
|
Reduce metadata lookups |
2.5 |
Supported |
2.0.0 |
|
Default API timeout (total time, not per request) |
2.5 |
1.0.0 |
||
Client Quota APIs |
2.5 |
Protocol only |
– |
|
Protocol info in sync/join |
2.5 |
Supported |
3.0.0 |
|
List groups by state |
2.6 |
Supported |
3.0.0 |
|
Configurable SSL “engine” |
2.6 |
Supported |
2.0.0 |
|
Explicit rebalance triggering on the consumer |
2.6 |
– |
– |
|
Docs & type in DescribeConfigs |
2.6 |
Supported |
3.0.0 |
|
Exponential backoff |
2.6 |
Supported |
3.0.0 |
|
Versioning scheme for features |
2.6 |
Supported |
3.0.0 |
|
Use all resolved addrs by default |
2.6 |
Supported |
2.0.0 |
|
Broker side SCRAM APIs |
2.7 |
Supported |
3.0.0 |
|
Producer recovery from txn timeout |
2.7 |
Supported |
3.0.0 |
|
New APIs for raft protocol |
2.7 |
Supported |
3.0.0 |
|
Throttling on create/delete topic/partition |
2.7 |
Supported |
2.1.0 |
|
Configurable socket connection timeout |
2.7 |
Supported |
3.0.0 |
|
Support PEM |
2.7 |
Supported |
2.0.0 |
|
Aborted txns with unflushed data is not fatal |
2.7 |
Supported |
2.3.0 |
|
Topic IDs |
2.8 |
Supported |
3.0.0 |
|
DescribeCluster |
2.8 |
Supported |
3.0.0 |
|
Admin API for DescribeProducers |
3.0 |
Supported |
3.0.0 |
|
Strongest producer guarantee by default |
3.0 |
Supported |
3.0.0 |
|
Batch FindCoordinators |
3.0 |
Supported |
3.0.0 |
|
Batch OffsetFetch |
3.0 |
Supported |
3.0.0 |
|
Support MaxTimestamp in ListOffsets |
3.0 |
Supported |
3.0.0 |
|
Bump default session timeout |
3.0 |
Supported |
3.0.0 |
|
Extend SASL/OAUTHBEARER support for OIDC |
3.1 |
1.4.6 |
||
Add ErrorCode to DescribeLogDirs response |
3.1 |
Supported |
3.0.0 |
|
Reason in Join/Leave group |
3.1 |
Supported |
3.0.0 |
|
SkipAssignment for static group leaders |
3.1 |
3.0.0 |
||
Users can create delegation tokens for others |
3.3 |
– |
– |
|
Better sticky partitioning |
3.3 |
3.0.0 |
||
|
3.3 |
Supported |
3.0.0 |
|
|
3.3 |
Supported |
3.0.0 |
|
|
3.3 |
3.0.0 |
||
Generation field in consumer group protocol |
3.4 |
Supported |
3.0.0 |
|
Kafka Tiered Storage |
3.5 |
Supported |
3.0.0 |
|
Rack-aware consumer partition assignment |
3.5 |
– |
– |
|
Nullable structs in the protocol |
3.5 |
Supported |
3.0.0 |
|
Stale broker epoch fencing |
3.5 |
Protocol only |
– |
|
Client Metrics |
3.7 |
– |
– |
|
Next gen consumer rebalance protocol |
3.7 |
– |
– |
|
Admin client to KRaft, Controller registration |
3.7 |
– |
– |
|
Leader discovery optimizations |
3.7 |
Protocol only |
– |
|
Eligible leader replicas (protocol) |
3.7 |
Supported |
3.0.0 |
|
ListClientMetricsResources |
3.7 |
– |
– |
|
Transactions server side defense |
3.8, 4.0 |
– |
||
Allow clients to rebootstrap |
3.8 |
– |
– |
|
List/Describe transactions enhancements |
3.8 |
– |
– |
|
Add replica directory ID for replica fetchers |
3.9 |
Supported |
3.0.0 |
|
ListOffsets w. Timestamp -5 |
3.9 |
Supported |
3.0.0 |
|
URL-encode clientID/secret in OAuth auth header |
3.9 |
1.4.6 |
||
Formatting changes for features |
4.0 |
Supported |
3.0.0 |
|
Administration of groups |
4.0 |
Supported |
3.0.0 |
|
DescribeCluster.IsFenced |
4.0 |
Protocol only |
– |
|
TimeoutMillis on ListOffsets |
4.0 |
Protocol only |
– |
|
User provided client metrics |
4.0 |
– |
– |
|
ClientID in the next-gen rebalancer |
4.0 |
– |
– |
|
RebootstrapRequired |
4.0 |
– |
– |
|
Oauth JWT bearer grant |
4.0 |
1.4.6 |
||
Client side AlterPartitionAssignments RF change guard |
4.1 |
Supported |
3.0.0 |
|
Share groups (queues) |
4.1 |
– |
– |
|
ListConfigResources |
4.1 |
Supported |
3.0.0 |
|
ListTransactions.TransactionalIDPattern |
4.1 |
– |
– |
|
ListOffsets earliest pending upload offset |
4.2 |
– |
– |
|
Streams group protocol |
4.2 |
– |
– |
|
Per-broker supported features in ApiVersions |
4.2 |
Protocol only |
– |
|
ShareFetch strict record limit |
4.2 |
– |
– |
|
Share consumer renew acknowledgements |
4.2 |
– |
– |
|
Share partition lag in DescribeShareGroupOffsets |
4.2 |
– |
– |
|
Rack ID in (Share)MemberDescription |
4.2 |
– |
– |
|
OAuth client assertion in client_credentials grant |
4.3 |
1.4.6 |
||
Max bound on reads |
WIP |
Supported |
3.0.0 |
Notes
Partial entries – KIP-81 (fetch memory is bounded by
fetch_max_bytes/max_partition_fetch_bytesrather than a global buffer); KIP-86 and KIP-768 / KIP-1025 / KIP-1139 / KIP-1258 (SASL/OAUTHBEARER is driven by a user-suppliedAbstractTokenProvider, so OIDC, JWT-bearer, and client assertion grants are the application’s responsibility); KIP-266 / KIP-533 (per-call timeouts exist, but there is nodefault.api.timeout.ms); KIP-794 / KIP-814 (the sticky producer partitioner and cooperative-sticky assignor are implemented, but not these specific refinements); KIP-890 (transaction RPCs are capped atAddPartitionsToTxn/EndTxn/TxnOffsetCommitv3 andProducev9, below the KIP-890 versions).Not supported (shown as
--in the table) – notable client-facing gaps include KIP-42 (interceptors), KIP-48 / KIP-249 / KIP-373 (delegation tokens), KIP-369 (round-robin partitioner), KIP-568 (explicit rebalance trigger), KIP-714 / KIP-1000 / KIP-1076 (client telemetry), KIP-848 / KIP-1082 (next-generation consumer group protocol), KIP-881 (rack-aware assignment), KIP-899 / KIP-1102 (client re-bootstrap), and KIP-932 / KIP-1071 / KIP-1206 / KIP-1222 (share and streams groups).