Settings Structure
Logging
Control whether runtime logs are captured for flow executions.| Setting | Type | Default | Description |
|---|---|---|---|
logging.enabled | boolean | true | Enable/disable runtime logging for all flows |
log field, but this project-level setting takes precedence when set to false.
Rate Limiting
Protect your APIs from abuse by limiting request rates.| Setting | Type | Default | Description |
|---|---|---|---|
rate_limit.enabled | boolean | false | Enable/disable rate limiting |
rate_limit.requests_per_min | number | 1000 | Maximum requests per minute per IP |
rate_limit.burst_size | number | 100 | Additional burst capacity above the limit |
How Rate Limiting Works
Rate limits are applied per project + IP address combination. When a client exceeds the limit, subsequent requests receive a429 Too Many Requests response until the rate limit window resets.
Rate Limit Response
When the rate limit is exceeded:| Header | Description |
|---|---|
X-RateLimit-Limit | The rate limit ceiling |
X-RateLimit-Remaining | Remaining requests in current window |
X-RateLimit-Reset | Unix timestamp when the limit resets |
Retry-After | Seconds until requests are allowed again |
CORS
Configure Cross-Origin Resource Sharing headers for browser-based API access.| Setting | Type | Default | Description |
|---|---|---|---|
cors.enabled | boolean | false | Enable/disable CORS headers |
cors.allowed_origins | string[] | ["*"] | Allowed origins (supports wildcards) |
cors.allowed_methods | string[] | Standard methods | Allowed HTTP methods |
cors.allowed_headers | string[] | Standard headers | Allowed request headers |
cors.allow_credentials | boolean | false | Allow credentials in requests |
cors.max_age | number | 86400 | Preflight cache duration (seconds) |
Wildcard Origins
You can use wildcards inallowed_origins:
Default Headers
When CORS is enabled, these are the default allowed values: Methods:GET, POST, PUT, PATCH, DELETE, OPTIONS
Headers: Origin, Content-Type, Accept, Authorization
Log Filters
Mask sensitive data in logs to protect user privacy and comply with security requirements.| Setting | Type | Default | Description |
|---|---|---|---|
log_filters.masked_keywords | string[] | [] | Field names to mask in logs |
How Masking Works
Any field matching a keyword inmasked_keywords will have its value replaced with [MASKED] in logs. Masking is:
- Case-insensitive:
passwordmatchesPassword,PASSWORD, etc. - Recursive: Works on nested objects and arrays
- Non-destructive: Only affects logged data, not actual execution
Example
Configuration:Common Keywords to Mask
Consider masking these common sensitive fields:password,passwd,pwdapi_key,apikey,api_secrettoken,access_token,refresh_tokensecret,secret_keyauthorization,authcredit_card,card_number,cvvssn,social_security
Caching
Project settings are cached in Redis with a 5-minute TTL. When you update settings via the API, the cache is automatically invalidated and new settings take effect immediately.Examples
Enable Rate Limiting
Configure CORS for a Frontend App
Mask Sensitive Fields in Logs
Disable Logging for High-Volume Project
Related
- Secrets - Store API keys and credentials securely
- Nodes Overview - Node-level logging control
- Pricing - Plan limits and features