API rate limiting
Request → bucket check → allow / throttle / block.
Rendering…
Make it your own.
{
"nodes": [
{ "id":"r","type":"ellipse","label":"Request","x":40,"y":180,"fill":"#dbeafe","stroke":"#2563eb" },
{ "id":"k","type":"rect","label":"Key (IP / token)","x":220,"y":180,"fill":"#fed7aa","stroke":"#c2410c" },
{ "id":"bk","type":"diamond","label":"Tokens left?","x":420,"y":165,"fill":"#fef3c7","stroke":"#a16207" },
{ "id":"al","type":"rect","label":"Allow","x":620,"y":80,"fill":"#dcfce7","stroke":"#15803d" },
{ "id":"th","type":"rect","label":"Throttle (delay)","x":620,"y":260,"fill":"#fed7aa","stroke":"#c2410c" },
{ "id":"bl","type":"ellipse","label":"429 Too many","x":820,"y":260,"fill":"#fee2e2","stroke":"#b91c1c" },
{ "id":"re","type":"rect","label":"Refill bucket","x":820,"y":80,"fill":"#ede9fe","stroke":"#6d28d9" },
{ "id":"ap","type":"rect","label":"App","x":1020,"y":80,"fill":"#dcfce7","stroke":"#15803d" }
],
"edges": [
{ "id":"a","source":"r","target":"k" },
{ "id":"b","source":"k","target":"bk" },
{ "id":"c","source":"bk","target":"al","label":"yes" },
{ "id":"d","source":"bk","target":"th","label":"low" },
{ "id":"e","source":"th","target":"bl" },
{ "id":"f","source":"al","target":"ap" },
{ "id":"g","source":"al","target":"re","label":"−1 token" }
]
}