POST /v1/logs are rate-limited per API key, not per IP address. That means sharing an IP with other services — for example, multiple applications behind the same NAT gateway — never affects your quota, and the limit travels with the key no matter where it is used. The default limit is 100 requests per 60-second sliding window per key.
When you hit the limit
When you exceed 100 requests in a 60-second window, Peeng responds with a429:
429 is always retryable — it is a transient condition, not a permanent failure. Both the JavaScript and Python SDKs detect it automatically and back off with exponential backoff before retrying. If you are calling the HTTP API directly, check for a Retry-After header in the response and honor it if present; if the header is absent, fall back to exponential backoff. See Errors for a full breakdown of retryable vs. non-retryable status codes.
The rate limit is a request-count limit, not a log-entry-count limit. A single request can carry up to 500 log entries and still counts as just one request against your quota. Effective throughput is therefore much higher than the raw 100 req/min figure suggests — up to 50,000 log entries per minute on the default plan.
Staying under the limit
Follow these practices in order of impact:-
Batch your logs. One request carrying 100 log entries consumes the same quota as one request carrying a single entry. Both SDKs buffer log calls in memory and flush automatically once the buffer reaches
maxBatchSize(default: 100 entries, maximum: 500 entries). Let the SDK batch on your behalf rather than sending each log call as its own request. -
Do not disable the SDK’s background batching. Calling
flush()after every individuallog()call opts back into one-request-per-log behavior and eliminates the batching benefit entirely. Reserve explicitflush()calls for graceful shutdown or other intentional drain points — not for every log line.
If your traffic genuinely needs a higher request limit than the default allows, reach out to Peeng support to discuss a limit increase. Rate limits are not self-serve adjustable from the dashboard.