Public platform statistics
const url = 'https://api.deploybase.eu/api/v1/api/v1/public/stats';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.deploybase.eu/api/v1/api/v1/public/statsPlatform-wide aggregate totals published on deploybase.eu/open. Unauthenticated, no API key required. Values are cached for 10 minutes; generated_at is when the snapshot was taken. Aggregates only — nothing per-team, per-plan or financial is exposed.
Responses
Section titled “ Responses ”OK
object
object
object
object
object
Building. Everything except BuildsActiveNow is derived from the immutable
deployments table rather than build_jobs: build_jobs rows are purged on
a retention window (BuildWorker.cleanupLoop), so counting them published a
lifetime total that silently shrank to the retention window.
Time series. Platform-wide aggregates bucketed by time and nothing else; see the GROUP BY rule on PublicStatsRepository. Gaps are zero-filled from the first bucket that has data through the current one, so a flat stretch on the page is a real quiet week rather than a missing point.
object
Serving
object
Functions is the functions and SSR reliability block (DEP-852), read from DEP-851’s hourly rollup. Grouped by time and route kind only; see PublicFunctionStats.
object
object
ByWeek runs from the first week with a measured hour through the current week.
object
object
ByWeek runs from the first week with a measured hour through the current week.
object
SSRDeploysByWeek is how the SSR functions created each week ended, from the first week one was created. See WeeklySSRDeploys.
object
SSRSitesLive counts projects whose live deployment has a running SSR function.
GeneratedAt is stamped by the service layer when the snapshot is taken, not by the database, so the cached copy carries its own age.
object
Platform
Example generated
{ "data": { "avg_build_duration_seconds": 1, "bandwidth_gb_by_month": [ { "month_start": "example", "value": 1 } ], "bandwidth_gb_total": 1, "build_duration_samples": 1, "build_minutes_by_month": [ { "month_start": "example", "value": 1 } ], "build_minutes_total": 1, "build_outcomes_total": 1, "build_success_rate": 1, "builds_active_now": 1, "builds_total": 1, "deployments_by_week": [ { "cancelled": 1, "failed": 1, "succeeded": 1, "week_start": "example" } ], "deployments_total": 1, "domains_verified": 1, "form_submissions_by_week": [ { "value": 1, "week_start": "example" } ], "form_submissions_total": 1, "functions": { "http": { "app_errors": 1, "by_week": [ { "app_errors": 1, "measured_hours": 1, "platform_errors": 1, "requests": 1, "timeouts": 1, "week_start": "example" } ], "measured_hours": 1, "platform_errors": 1, "requests": 1, "success_rate": 1, "timeouts": 1, "under_1s_share": 1, "window_days": 1, "window_hours": 1 }, "ssr": { "app_errors": 1, "by_week": [ { "app_errors": 1, "measured_hours": 1, "platform_errors": 1, "requests": 1, "timeouts": 1, "week_start": "example" } ], "measured_hours": 1, "platform_errors": 1, "requests": 1, "success_rate": 1, "timeouts": 1, "under_1s_share": 1, "window_days": 1, "window_hours": 1 }, "ssr_deploys_by_week": [ { "failed_conflict": 1, "failed_customer": 1, "failed_platform": 1, "failed_unclassified": 1, "succeeded": 1, "week_start": "example" } ], "ssr_sites_live": 1 }, "generated_at": "example", "p50_build_duration_seconds": 1, "preview_deployments_by_week": [ { "value": 1, "week_start": "example" } ], "preview_deployments_total": 1, "projects_total": 1, "teams_total": 1 }, "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Statistics could not be read
object
object
Example generated
{ "code": "example", "details": "example", "error": "example", "meta": { "request_id": "example", "timestamp": "example", "trace_id": "example" }}Live 022265e7 built