API Changelog
A running log of changes to the AlterLab API. New endpoints, breaking changes, improvements, and fixes.
Versioning Policy
/api/v1/). Breaking changes get a 90-day deprecation window. See the API Versioning Policy for details.Latest Changes
Raise MAX_QUEUE_DEPTH default from 100 to 500
Raise MAX_QUEUE_DEPTH default from 100 to 500 .
Add hard-cap eviction for _last_used_cache
Add hard-cap eviction for _last_used_cache .
Standardize ResizeObserver height measurement
Standardize ResizeObserver height measurement .
Auto-dismiss activation banner when stats update after fi...
Auto-dismiss activation banner when stats update after fi....
Resolve two TypeScript build errors
Resolve two TypeScript build errors .
Add lastModified to /smart-rendering-api sitemap entry (#...
Add lastModified to /smart-rendering-api sitemap entry (#....
Correct Phase H guard index in 0096 rollback
Correct Phase H guard index in 0096 rollback .
Add herald.clarity_api_token to SOPS prod.
Add herald.clarity_api_token to SOPS prod. .
Expand seo dedup guard to match slash-separated display n...
Expand seo dedup guard to match slash-separated display n....
Update _CSR_WEBPACK_FILENAME_PATTERNS comment for dual-mo...
Update _CSR_WEBPACK_FILENAME_PATTERNS comment for dual-mo....
Show correct \$0.00 for zero-balance dormant users in ema...
Show correct \$0.00 for zero-balance dormant users in ema....
Store create_task reference to prevent GC risk
Store create_task reference to prevent GC risk .
Replace containerHeight state with ResizeObserver ref in ...
Replace containerHeight state with ResizeObserver ref in ....
Add SET NOT NULL to 0096 rollback Phase C
Add SET NOT NULL to 0096 rollback Phase C .
Fall back to in-memory throttle on Redis failure in _shou...
Fall back to in-memory throttle on Redis failure in _shou....
General bug fixes and improvements
Plus 1 internal improvement for better reliability and performance.
Fix billing crash on cache hits
Your scrape requests that hit the cache no longer cause 500 errors. Savings are now correctly set to 0, so billing works as expected.
Remove Site Crawler from homepage
Remove Site Crawler from homepage.
Welcome modal not firing for ~13% of new signups
Welcome modal not firing for ~13% of new signups .
Stop decrypting API key on every Mission Control load (#9...
Stop decrypting API key on every Mission Control load (#9....
Stop caching plaintext API keys in Web Storage
Stop caching plaintext API keys in Web Storage .
Add rate limit and audit log to decrypt proxy
Add rate limit and audit log to decrypt proxy .
Require explicit confirmation before API key transfer to ...
Require explicit confirmation before API key transfer to ....
Stop storing plaintext API key in localStorage
Stop storing plaintext API key in localStorage .
Mask API key in IntegrationCTA code snippets
Mask API key in IntegrationCTA code snippets .
General bug fixes and improvements
Plus 13 internal improvements for better reliability and performance.
Update stale slug-to-context mapping after renam...
Update stale slug-to-context mapping after renam....
Add 301 redirects for removed domain pages
Add 301 redirects for removed domain pages .
Hoist _POSTGRES_SURROGATE_TABLE to module level
Hoist _POSTGRES_SURROGATE_TABLE to module level .
Correct llms.txt adaptive-rendering-api URL to smart-rend...
Correct llms.txt adaptive-rendering-api URL to smart-rend....
Replace bare console.log with debugLog to prevent job ID ...
Replace bare console.log with debugLog to prevent job ID ....
Make UntranslatableCharacterError detection reachable via...
Make UntranslatableCharacterError detection reachable via....
Expand _sanitize_for_postgres to cover Unicode non-charac...
Expand _sanitize_for_postgres to cover Unicode non-charac....
Correct migration 0093 to target scrape_diagnostics for s...
Correct migration 0093 to target scrape_diagnostics for s....
Null out negative response_time_ms and scrape_time_ms val...
Null out negative response_time_ms and scrape_time_ms val....
Replace time.time with time.monotonic for duration me...
Replace time.time with time.monotonic for duration me....
Update remaining /anti-bot-bypass-api references to /smar...
Update remaining /anti-bot-bypass-api references to /smar....
Align ToS and AUP with new marketing positioning
Align ToS and AUP with new marketing positioning .
Remove example URLs dropdown from config panel
Remove example URLs dropdown from config panel.
Add blog-post-headline/description classes to match speak...
Add blog-post-headline/description classes to match speak....
Replace /anti-bot-bypass-api with /smart-rendering-api in...
Replace /anti-bot-bypass-api with /smart-rendering-api in....
fix(api): add input validation for discord_id, provider allowlists (, ) – likely a fix, maybe impr
fix(api): add input validation for discord_id, provider allowlists (, ) – likely a fix, maybe impr.
fix(auth): guard against Discord users with unverified email – bug fix.
fix(auth): guard against Discord users with unverified email – bug fix..
fix(auth): clear account_link_state cookie after linking completes – bug fix.
fix(auth): clear account_link_state cookie after linking completes – bug fix..
fix(auth): set account_link_state cookie as HttpOnly + Secure – security improvement? It's about
fix(auth): set account_link_state cookie as HttpOnly + Secure – security improvement? It's about .
feat(sentinel): add /usage and /balance slash commands for linked users – new feature.
feat(sentinel): add /usage and /balance slash commands for linked users – new feature..
feat(auth): add Discord to connected accounts linking UI – new feature.
feat(auth): add Discord to connected accounts linking UI – new feature..
feat(auth): add Discord OAuth provider to NextAuth – new feature.
feat(auth): add Discord OAuth provider to NextAuth – new feature..
fix(scraper): reject hostless URLs in batch schema and worker pre-flight – bug fix.
fix(scraper): reject hostless URLs in batch schema and worker pre-flight – bug fix..
(Note: there are internal commits not needed.)
(Note: there are internal commits not needed.).
Input validation for discord_id and provider allowlists – improves reliability, maybe "Validate Disc
Input validation for discord_id and provider allowlists – improves reliability, maybe "Validate Disc.
Guard against unverified email causing 422 – improves auth flow.
Guard against unverified email causing 422 – improves auth flow..
Clear account_link_state cookie after linking – improves user experience.
Clear account_link_state cookie after linking – improves user experience..
Set cookie HttpOnly + Secure – security improvement.
Set cookie HttpOnly + Secure – security improvement..
Add /usage and /balance slash commands – new feature.
Add /usage and /balance slash commands – new feature..
Add Discord to connected accounts linking UI – new feature.
Add Discord to connected accounts linking UI – new feature..
Add Discord OAuth provider to NextAuth – new feature.
Add Discord OAuth provider to NextAuth – new feature..
Reject hostless URLs in batch schema – improves scraper reliability.
Reject hostless URLs in batch schema – improves scraper reliability..
New slash commands (/usage, /balance) – likely Features.
New slash commands (/usage, /balance) – likely Features..
Add Discord to connected accounts linking UI – maybe Features or Improvements? It's a new UI feature
Add Discord to connected accounts linking UI – maybe Features or Improvements? It's a new UI feature.
Add Discord OAuth provider – maybe Features (or Improvements?). Probably Features.
Add Discord OAuth provider – maybe Features (or Improvements?). Probably Features..
Input validation for discord_id and provider allowlists – could be Improvements (enhancement) or Fix
Input validation for discord_id and provider allowlists – could be Improvements (enhancement) or Fix.
Guard against unverified email – fix? Could be "Fixed Discord email handling". Type:fix.
Guard against unverified email – fix? Could be "Fixed Discord email handling". Type:fix..
Clear account_link_state cookie after linking – fix? Could be "Reset link state cookie". Type:fix.
Clear account_link_state cookie after linking – fix? Could be "Reset link state cookie". Type:fix..
Set cookie HttpOnly + Secure – security improvement. Could be "Secure cookie flags for link state".
Set cookie HttpOnly + Secure – security improvement. Could be "Secure cookie flags for link state". .
Reject hostless URLs in batch schema – fix? Could be "Reject hostless URLs in batch requests". Type:
Reject hostless URLs in batch schema – fix? Could be "Reject hostless URLs in batch requests". Type:.
Discord slash commands
Description: You can now run /usage to view your tier and linked email, and /balance to see your current dollar balance formatted as $X.XX. These commands are only visible to linked accounts.
Discord OAuth provider
Discord OAuth provider.
Discord linking UI
Discord linking UI.
Validate Discord ID and provider filters
Validate Discord ID and provider filters.
Handle unverified Discord email gracefully
Handle unverified Discord email gracefully.
Clear link state cookie after linking
Clear link state cookie after linking.
Reject hostless URLs in batch requests
Reject hostless URLs in batch requests.
Secure cookie flags for link state
Secure cookie flags for link state.
Short title
Description...
"Discord slash commands" = 3 words? Actually "Discord" (1) "slash" (2) "commands" (3) => 3 words, ok
"Discord slash commands" = 3 words? Actually "Discord" (1) "slash" (2) "commands" (3) => 3 words, ok.
"Discord OAuth provider" = 3 words? "Discord" (1) "OAuth" (2) "provider" (3) => 3 words.
"Discord OAuth provider" = 3 words? "Discord" (1) "OAuth" (2) "provider" (3) => 3 words..
"Discord linking UI" = 3 words.
"Discord linking UI" = 3 words..
"Validate Discord ID and provider filters" = 5 words? Count: Validate(1) Discord(2) ID(3) and(4) pro
"Validate Discord ID and provider filters" = 5 words? Count: Validate(1) Discord(2) ID(3) and(4) pro.
"Handle unverified Discord email" = 4 words? Handle(1) unverified(2) Discord(3) email(4) => 4 words.
"Handle unverified Discord email" = 4 words? Handle(1) unverified(2) Discord(3) email(4) => 4 words..
"Clear link state cookie" = 4 words.
"Clear link state cookie" = 4 words..
"Reject hostless URLs in batch" = 4 words? Reject(1) hostless(2) URLs(3) in(4) batch(5) => 5 words,
"Reject hostless URLs in batch" = 4 words? Reject(1) hostless(2) URLs(3) in(4) batch(5) => 5 words, .
"Secure cookie flags for link state" = 6 words? Secure(1) cookie(2) flags(3) for(4) link(5) state(6)
"Secure cookie flags for link state" = 6 words? Secure(1) cookie(2) flags(3) for(4) link(5) state(6).
Feature entries: icon:Rocket
Feature entries: icon:Rocket.
Improvement entries: icon:Zap
Improvement entries: icon:Zap.
Fix entries: icon:Bug
Fix entries: icon:Bug.
Security entry: icon:Shield
Security entry: icon:Shield.
Slash commands: visualHint:screenshot
Slash commands: visualHint:screenshot.
OAuth provider: maybe code? But code hint is for code examples; not needed. Could omit.
OAuth provider: maybe code? But code hint is for code examples; not needed. Could omit..
Linking UI: screenshot.
Linking UI: screenshot..
Validation: stats? Maybe stats.
Validation: stats? Maybe stats..
Email handling: maybe stats? Could use stats.
Email handling: maybe stats? Could use stats..
Clear cookie: maybe stats? Could omit.
Clear cookie: maybe stats? Could omit..
Reject hostless URLs: maybe code? Could omit.
Reject hostless URLs: maybe code? Could omit..
Secure cookie: maybe stats? Could omit.
Secure cookie: maybe stats? Could omit..
Discord slash commands
Description...
Discord OAuth provider
Description...
Discord linking UI
Description...
Validate Discord ID and provider filters
Description...
Handle unverified Discord email
Description...
Clear link state cookie
Description...
Reject hostless URLs in batch
Description...
Secure cookie flags for link state
Description...
General bug fixes and improvements
Plus 7 internal improvements for better reliability and performance.
Use correct AdminKPIRow cards prop and AdminStatCardProps...
Use correct AdminKPIRow cards prop and AdminStatCardProps....
Remove email from Discord lookup response and usage embed...
Remove email from Discord lookup response and usage embed....
Add in-memory fallback for discord lookup rate limit when...
Add in-memory fallback for discord lookup rate limit when....
Add blog-performance UI page + nav entry
Add blog-performance UI page + nav entry .
Make trust seed marker permanent and clear on invalidate ...
Make trust seed marker permanent and clear on invalidate ....
Defer /usage and /balance before resolve to avoid 3s ti...
Defer /usage and /balance before resolve to avoid 3s ti....
Add URL host validation to ScrapePDFRequest and ScrapeOCR...
Add URL host validation to ScrapePDFRequest and ScrapeOCR....
Harmonize BYOS data processor role and strengthen respons...
Harmonize BYOS data processor role and strengthen respons....
Make history empty state text mode-aware
Make history empty state text mode-aware .
Migrate Gemini CLI from --allowed-tools to --approval-mod...
Migrate Gemini CLI from --allowed-tools to --approval-mod....
Prevent double-release of domain concurrency slot on inva...
Prevent double-release of domain concurrency slot on inva....
Reject hostless URLs in batch schema and worker pre-fligh...
Reject hostless URLs in batch schema and worker pre-fligh....
Prefer backend response_time_ms over client wall-clock in...
Prefer backend response_time_ms over client wall-clock in....
Remove leading space in min_confidence warning sentence (...
Remove leading space in min_confidence warning sentence (....
Allow input composition during send — keep submit guards ...
Allow input composition during send — keep submit guards ....
Resolve TypeScript narrowing error in blog chat publish b...
Resolve TypeScript narrowing error in blog chat publish b....
Remove leading space in min_confidence warning sentence (...
Remove leading space in min_confidence warning sentence (....
Allow input composition during send — keep submit guards ...
Allow input composition during send — keep submit guards ....
Disable publish/draft buttons while publish is in-flight ...
Disable publish/draft buttons while publish is in-flight ....
Rename segment_key → segment_slug in HeraldSegment interf...
Rename segment_key → segment_slug in HeraldSegment interf....
Add isSending guard to prevent concurrent message sends (...
Add isSending guard to prevent concurrent message sends (....
General bug fixes and improvements
Plus 13 internal improvements for better reliability and performance.
Explicit Approval Mode Required
Users must now specify an approval mode when using the CLI, replacing the deprecated flag. This prevents accidental runs without proper policy approval.
Hostless URL Rejection
Hostless URL Rejection.
Interactive blog chat panel
Administrators can now generate blog drafts through an interactive chat interface directly in the admin panel. The system provides real-time topic suggestions and draft generation with visual loading ...
Blog post publishing workflow
The new publishing endpoints enable seamless transition from draft to published content with conversation history preservation. Each session maintains context for up to 24 hours, allowing for iterativ...
General bug fixes and improvements
Plus 17 internal improvements for better reliability and performance.
Corrected usage statistics columns
Admin panel usage statistics now display accurate credit usage data by using the correct column names in database queries.
Fixed customer activity tracking
Customer activity displays properly in the CRM pipeline by using the correct session tracking data instead of referencing non-existent columns.
Fixed success rate display
Success rate percentages now display correctly in the admin panel by computing the proper percentage values instead of decimal fractions.
Corrected billing information display
Billing settings and recharge information now show accurate data by querying the correct database columns for payment configurations.
Fixed session integration metrics
Session integration success rates now calculate properly by computing the metric in SQL rather than attempting to select non-existent database columns.
Smarter circuit breaking
The system now tracks wasted time across scraping attempts and trips circuit breakers earlier when domains consistently fail. This prevents wasting resources on domains that are temporarily unreachabl...
Better concurrency control
Per-domain concurrency limits prevent overwhelming domains with too many simultaneous requests. This results in more stable scraping sessions and reduces the likelihood of triggering anti-bot protecti...
Faster error recovery
Error fallback pages now use shorter cache headers to prevent stale error states. The system also clears trip counts properly after manual resets, ensuring domains return to normal operation faster.
Enhanced mobile experience
Mobile users now see properly sized footers that don't clip content, and the homepage announcement bar can be dismissed. These improvements create a smoother browsing experience on smaller screens.
Better memory management
Worker memory limits have been optimized to prevent out-of-memory crashes while maintaining performance. This results in more stable long-running scraping operations and better resource utilization.
General bug fixes
Various stability improvements including proper cleanup of video event listeners, correct breadcrumb navigation, and fixed Open Graph image sanitization. These fixes address edge cases that could caus...
Announcement Management UI
A new admin page allows you to create, edit, and manage platform announcements that appear to users. The interface provides a centralized location for controlling what messages users see when they acc...
Sidebar Navigation Integration
The announcement management tool is now accessible through a dedicated sidebar navigation item, making it easy to find and use the announcement features without searching through menus.
General bug fixes and improvements
Plus 22 internal improvements for better reliability and performance.
AI Workforce Performance Dashboard
Monitor your AI workforce trust levels and performance with a new dashboard showing real-time trust gauges, task-specific performance metrics, and review queue management. You can now track autonomous...
Herald Scheduler Control Panel
Take full control of your Herald scheduling with a comprehensive monitoring dashboard featuring job status grids, success rate gauges, and manual trigger capabilities. You can view 7-day performance h...
Reddit Operations Management
Manage your Reddit operations with dedicated overview pages showing KPI metrics, opportunity pipelines, post performance leaderboards, and subreddit fitness heatmaps. You can now track engagement metr...
Herald User Segments Management
Organize and manage your Herald user segments with new overview and detail pages. You can view member counts, average relationship scores, and last entry times for each segment, with detailed analytic...
Content Calendar & Queue
Plan and manage your content workflow with a new calendar view offering monthly and weekly perspectives. The Kanban-style queue interface lets you approve or reject content in bulk with reason trackin...
Blog Syndication Dashboard
Track your blog syndication performance across multiple platforms with a comprehensive dashboard showing platform health, cross-platform status matrices, and aggregate syndication counts. You can moni...
Enhanced Admin Error Handling
Experience more reliable admin panel interactions with improved error boundaries and toast notifications for API failures. Rate limit errors, authentication issues, and other API problems now provide ...
Admin Panel Stability Fixes
Critical stability improvements ensure admin panel features work reliably across all pages. Authentication mismatches, broken endpoints, and data display issues have been resolved, providing a consist...
Optimized logo assets
Logo images have been optimized for faster loading, reducing file sizes from 290KB to 78KB while maintaining quality. This results in quicker page loads and better performance across all marketing and...
Lazy-loaded footer video
The footer video now loads only when you scroll near it, preventing the 2.2MB video from buffering on initial page load. This significantly improves above-the-fold performance and reduces data usage f...
Enhanced email security
Disposable email domains are now blocked at signup initiation using an expanded community-maintained list of 5,383 domains. This prevents abuse from temporary email services and improves platform secu...
Unified navigation system
Marketing site navigation has been standardized across all pages using a shared navigation constant. This ensures consistent menu items and improves the overall user experience when navigating between...
Improved auth page layouts
Authentication-related pages now properly exclude the sticky footer video, providing cleaner layouts for password resets, email verification, and welcome pages. This ensures these transactional pages ...
Enhanced homepage experience
The homepage now features a WebGL scroll-driven tunnel intro that creates an engaging visual experience as you scroll. This modern animation enhances the first impression while maintaining fast load t...
Consistent branding across headers
Logo sizes and spacing have been standardized across all headers and navigation elements. This creates a cohesive visual identity throughout the platform, with proper proportions between logos and wor...
General bug fixes and improvements
Various minor issues have been resolved including backup retention validation, duplicate footer prevention on documentation pages, and improved scroll behavior for short marketing pages. These refinem...
Domain reliability circuit breaker
The system now automatically detects when a domain is experiencing repeated failures and temporarily pauses requests to prevent batch job failures. This helps maintain overall scraping stability when ...
Animated tier progression display
Dashboard now shows your current tier with smooth count-up animations and branded icons that scale in when you scroll. The visual progression makes it easier to see your usage limits and available cap...
Enhanced billing page tiers
The billing interface now displays your current tier with the new branded tier badges and includes a progression hint showing your path to higher limits. This gives you clearer visibility into your us...
Enterprise tier announcement
High Volume tier users now see a clear upgrade path to Enterprise with custom limits tailored to their workload. The dashboard celebrates your tier upgrade with a special announcement when you have av...
Consistent tier branding
All tier displays across the platform now use the same branded tier badge system with consistent colors and icons. This creates a unified experience whether you're viewing your dashboard, billing page...
General bug fixes and improvements
Plus 51 internal improvements for better reliability and performance.
Personalized password emails
Password reset emails now include your display name when available, making communications feel more personal and professional. If no name is set, the email defaults to a friendly greeting.
Corrected billing display
Usage alert emails now show accurate dollar amounts instead of inflated values. The billing system correctly converts microcent balances to dollars, preventing confusion about remaining credits.
Brand kit page added
A new brand resources page provides easy access to logo downloads, color palettes with hex and oklch values, typography specifications, and usage guidelines for partners and developers.
Supabase integration docs
Comprehensive integration guides for Supabase are now available, including Edge Function and pg_cron examples, SDK walkthroughs for Python and Node.js, and common use cases like price monitoring and l...
Display credits as dollar amounts in invoice upcoming ema...
Display credits as dollar amounts in invoice upcoming ema....
New Automation Entry Points
Added dedicated startup scripts and entry points for automated processes, making it easier to deploy and manage scraping operations at scale. These improvements streamline the initialization of backgr...
Enhanced Configuration Bridge
Implemented new configuration retrieval capabilities that allow seamless integration between different components. Users can now easily access and manage configuration settings across the platform.
Shared Rate Limiting System
Replaced the previous per-process rate limiting with a centralized system that ensures consistent limits across all instances. This prevents unexpected behavior during deployments and maintains fair u...
Reliable Extension Updates
Fixed the extension update mechanism to properly handle self-hosted installations. The update system now works consistently regardless of deployment environment, ensuring users always have the latest ...
Accurate Connection Status
Improved the connection detection logic to correctly identify when users are properly configured. This prevents false positives in the connection status and ensures the setup process works as expected...
Consistent Font Loading
Resolved font loading issues that affected visual elements in the platform. All necessary resources are now properly included in the deployment, ensuring consistent appearance across all features.
Secure Alert Handling
Enhanced the security of alert systems by properly sanitizing input data. This prevents potential security issues while maintaining the functionality of critical notification features.
Configuration Validation
Fixed configuration validation to use consistent constants throughout the system. This ensures that all components respect the same limits and prevents configuration drift between different parts of t...
Accurate billing for API discovery
API discovery now correctly bills for proxy usage when required, ensuring you're only charged for the resources actually consumed during the discovery process.
Improved captcha detection accuracy
The system now correctly identifies captcha challenges even when JavaScript contains comparison operators, preventing false negatives in automated detection.
Fixed Next.js development path issues
API discovery no longer attempts to use Next.js development-only paths, ensuring consistent behavior across all environments and preventing failed discovery attempts.
Enhanced webhook delivery reliability
Webhook failures from DNS rebinding attacks now properly increment failure counts, triggering automatic disabling when thresholds are exceeded to protect your system.
Corrected batch URL limits
The batch scraping interface now accurately reflects the 100 URL limit per batch call, preventing confusion and ensuring you can plan your scraping operations correctly.
Improved session management security
Account deletion now properly revokes all session tokens before bulk deletion, ensuring complete account cleanup and preventing unauthorized access after deletion.
Enhanced rate limit detection
The system now correctly identifies rate-limited responses with short HTML bodies, ensuring appropriate escalation and preventing misclassification of blocked requests.
Fixed billing deposit safeguards
Deposits exceeding the maximum limit now trigger automatic refunds and block credit grants, preventing accidental overcharges and maintaining billing integrity.
Resolved session status filtering
Expired sessions are now correctly identified and filtered in the admin interface, providing accurate session management and preventing confusion about active sessions.
Fixed webhook URL validation timing
Webhook URLs are now validated immediately before delivery, preventing DNS rebinding attacks that could occur between creation and delivery time.
Improved webhook race condition handling
Stripe webhook events that arrive before database commits now trigger proper error responses, ensuring reliable credit granting and preventing data inconsistencies.
General bug fixes and improvements
Various internal stability enhancements and performance optimizations have been implemented to provide a more reliable scraping experience.
How to Stay Updated
Check this page for a summary of all API changes with each release.
Visit the full changelog for a detailed, filterable timeline of all product updates including frontend and infrastructure changes.
Watch for deprecation headers in API responses. Deprecated endpoints return a Sunset header with the removal date.
Change Types
| Type | Description | Action Required? |
|---|---|---|
| New | New endpoints, parameters, response fields, or SDK methods | No |
| Improved | Performance improvements, better error messages, enhanced behavior | No |
| Fixed | Bug fixes, corrected behavior, resolved edge cases | No |
| Security | Security patches and vulnerability fixes | Review recommended |
| Breaking | Removed fields, changed types, removed endpoints (announced 90+ days in advance) | Yes - update your code |
Full Changelog
For a complete, filterable timeline of all AlterLab updates including frontend changes, infrastructure improvements, and more, visit the full changelog.
View Full Changelog