---
title: "Fill rate, gaps, and response-time stats for a signup"
method: GET
path: "/signups/{id}/analytics"
tags: ["Signups"]
---

# Fill rate, gaps, and response-time stats for a signup

`GET /signups/{id}/analytics`

## Request

- Base URL: `https://thesignup.app/api/v1`
- URL: `https://thesignup.app/api/v1/signups/{id}/analytics`
- Auth: HTTP bearer

Aggregates participant + slot + item data into a single snapshot. Recomputed live per call — fine for dashboards but call sparingly. Numbers are accurate to the latest registration.

## Path parameters

- `id` string, uuid, required

## Response `200`

Analytics snapshot

- AnalyticsResponse
  - `eventId` string, uuid, required
  - `participantCount` integer, required
  - `quantityCommitted` integer, required
  - `fillRate` object, required
    - `capacity` integer, nullable, required: Event-wide max participants. Null when uncapped.
    - `ratio` number, nullable, required
  - `slots` SlotAnalytics[], required
    - `id` string, uuid, required
    - `title` string, nullable, required
    - `capacity` integer, required
    - `registered` integer, required
    - `ratio` number, nullable, required: registered ÷ capacity, capped at 1. Null when capacity is 0.
  - `items` ItemAnalytics[], required
    - `id` string, uuid, required
    - `name` string, required
    - `needed` integer, required
    - `claimed` integer, required
    - `ratio` number, nullable, required
  - `gaps` AnalyticsGap[], required: Slots and items still short of capacity. Empty when full.
    - `kind` 'slot' | 'item', required
    - `id` string, uuid, required
    - `label` string, nullable, required
    - `shortBy` integer, required: Headcount or item-quantity short of full coverage.
  - `responseTime` object, required
    - `firstRegistrationAt` string, date-time, nullable, required
    - `lastRegistrationAt` string, date-time, nullable, required
    - `averageHoursBetweenRegistrations` number, nullable, required: Average inter-arrival time across the registration window. Null when fewer than 2 registrations.

## Other responses

- `401`: Unauthenticated — credentials missing, malformed, invalid, or revoked
- `404`: Not found
- `429`: Rate limited or daily ceiling exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/thesignup/apis/thesignup-api.md) · [All operations](https://skmtc.dev/thesignup/apis/thesignup-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thesignup/apis/thesignup-api/revisions/c6da7cf92172?raw)
