Binary Serialisation
Encoding messages compactly using a schema rather than as self-describing text, trading readability for size and parse speed.
JSON is self-describing, human-readable and universally supported, and it is verbose — field names repeat in every message — and slow to parse relative to binary formats. For most APIs that is entirely acceptable.
Protobuf encodes by field number against a compiled schema. Compact, fast, strongly typed, with mechanical compatibility rules. Requires code generation and tooling to inspect.
Avro carries the schema separately (usually via a registry) and supports both reader and writer schemas, which makes it particularly good for long-lived data at rest — the common choice for event streams and analytical storage.
The decision turns on volume and lifetime. High-throughput internal traffic and retained event logs justify binary; a public API used by third parties usually should not, because the debugging and onboarding cost falls on people you cannot help.