// changelog
What's new
Product updates, new features, and improvements to the Alloy platform.
Bulk Decisions API
You can now submit up to 1,000 decisions in a single API call using the new bulk decisions endpoint.
Endpoint: POST /decisions/bulk
This is especially useful for backfill scenarios, migration workflows, and batch processing pipelines where submitting decisions individually would hit rate limits.
{
"decisions": [
{
"application_token": "app_abc123",
"outcome": "approved",
"reason_codes": ["CLEAN_IDENTITY"]
}
]
}
Rate limits apply per batch, not per individual decision within the batch. See the API reference for full details.
Improved Webhook Retry Logic
Outbound webhooks now use exponential backoff with jitter for retries, replacing the previous fixed-interval retry schedule.
Before: Retries at 30s, 60s, 120s intervals
After: Exponential backoff starting at 30s, with ±20% jitter to prevent thundering herd on recovery
Failed webhooks are retried up to 8 times over ~24 hours before being marked as permanently failed. You'll receive a webhook.failed event at that point.
This change improves delivery reliability during your endpoint's brief downtime windows without hammering a recovering service.
Full-Text Search Across Evaluations
The Alloy dashboard now supports full-text search across all evaluation data, including:
- Applicant name and contact info
- Document numbers
- Custom metadata fields
- Evaluation tokens and external IDs
Search is powered by OpenSearch and returns results across all time periods. Use the search bar at the top of the Evaluations page or press ⌘K to open search from anywhere in the dashboard.
Fixed: Validation error messages now return field paths
Request validation errors now include the full field path in the error message, making it easier to identify which nested field caused a validation failure.
Before:
{ "error": "Invalid input" }
After:
{
"error": "Validation failed",
"details": [
{ "field": "applicant.address.postal_code", "message": "Invalid postal code format" }
]
}