diff --git a/build.yaml b/build.yaml
index f5c86b6e34756b95c0f87eb1e5c087385c911d25..7248753bca7d3ff159737a0d79dc9b9b417a9214 100644
--- a/build.yaml
+++ b/build.yaml
@@ -1130,6 +1130,7 @@ targets:
   - gpr
   corpus_dirs:
   - test/core/end2end/fuzzers/api_fuzzer_corpus
+  dict: test/core/end2end/fuzzers/api_fuzzer.dictionary
   maxlen: 2048
 - name: bin_encoder_test
   build: test
diff --git a/test/core/end2end/fuzzers/api_fuzzer.dictionary b/test/core/end2end/fuzzers/api_fuzzer.dictionary
new file mode 100644
index 0000000000000000000000000000000000000000..c8dcc56dd15930dc6752cee1d1b3af9380d4ba61
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer.dictionary
@@ -0,0 +1,27 @@
+# tracers
+"api\x00"
+"channel\x00"
+"channel_stack_builder\x00"
+"connectivity_state\x00"
+"flowctl\x00"
+"http\x00"
+"http1\x00"
+"round_robin\x00"
+"secure_endpoint\x00"
+"tcp\x00"
+"transport_security\x00"
+
+# channel args
+"\x00grpc.census\x00"
+"\x00grpc.max_concurrent_streams\x00"
+"\x00grpc.max_message_length\x00"
+"\x00grpc.http2.initial_sequence_number\x00"
+"\x00grpc.http2.lookahead_bytes\x00"
+"\x00grpc.http2.hpack_table_size.decoder\x00"
+"\x00grpc.http2.hpack_table_size.encoder\x00"
+"\x01grpc.default_authority\x00"
+"\x01grpc.primary_user_agent\x00"
+"\x01grpc.secondary_user_agent\x00"
+"\x00grpc.max_reconnect_backoff_ms\x00"
+"\x01grpc.ssl_target_name_override\x00"
+
diff --git a/tools/fuzzer/runners/api_fuzzer.sh b/tools/fuzzer/runners/api_fuzzer.sh
index 35214894704274050ad225e376553eade551ba8d..d1c1e7da0d5c6e95ebd3c330c8863f65c53a8e42 100644
--- a/tools/fuzzer/runners/api_fuzzer.sh
+++ b/tools/fuzzer/runners/api_fuzzer.sh
@@ -31,6 +31,7 @@
 
 flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
 
+flags="$flags -dict=test/core/end2end/fuzzers/api_fuzzer.dictionary"
 
 if [ "$jobs" != "1" ]
 then