Enterprise: the API, webhooks and MCP server are live for schools on the Enterprise plan. The owner allows every key and AI connection. Ask about Enterprise

On this page

API Reference / Waivers

Waivers

Read required/optional waiver completion per roster swimmer using the school’s active templates and the supplied applicability context. Signing requests, bulk re-sign and ZIP export are outside the public API.

3,000requests per UTC hour
10requests a second, in bursts
429when over, with Retry-After and X-RateLimit-Remaining

Per key or agent connection, on the Enterprise plan.

GET/v1/waivers

List family waiver status

Requires family_id. Compares applicable active templates with each swimmer’s recorded response. Optional declines count as completed. Per-school completion excludes responses from staff who are now revoked, disabled or inactive. No response has status missing; missing_only=true returns incomplete entries, including a required decline that does not complete the waiver. The MCP list_waivers_missing tool enables missing_only.

Access: waivers:read · MCP: list_waivers_missing

Headers

  • AuthorizationstringRequired

    Bearer <token>: an API key or an agent OAuth access token. App subscription routes require a dedicated app key.

  • Swum-Versiondate

    Pins the response shape. Default: 2026-10-25.

Query parameters

  • updated_sincedate-time

    Effective update time after an ISO 8601 timestamp with an explicit time zone. Follow every page, including the legacy-record suffix.

  • limitinteger

    1–200; default 50. Minimum 1. Maximum 200. Default: 50.

  • cursorstring

    Opaque next_cursor from the previous page. Keep the same filters.

  • family_idstringRequired

    The family document id. Write bodies also accept parent_uid. At most 128 characters.

  • missing_onlyboolean

    Default false; true returns incomplete entries. Default: false.

  • statusstring

    Optional accepted, declined, missing or all. Allowed: "accepted", "declined", "missing", "all".

  • location_idstring

    Uses the verified class location when class_id is supplied, otherwise this explicit location, otherwise the family assigned location. A location contradicting the class returns 400. Unknown locations exclude location-scoped templates. At most 128 characters.

  • class_idstring

    Optional owner-verified class context; its location determines location-scoped applicability. At most 128 characters.

  • plan_idstring

    Optional owner lesson-plan context. At most 128 characters.

  • product_scopestring

    Default lesson_products. Default: "lesson_products".

Pagination

Keep calling with cursor=next_cursor until next_cursor is null. A filtered page may be short or empty while a next cursor remains.

Applicability context

The response also includes applicability_context and program_scoped_waivers_excluded. Without explicit class_id or plan_id, program-specific templates are excluded; do not treat this as proof every school program waiver is satisfied. No waiver HTML, signature or IP is returned. Signed PDF links are managed in the app.

Request
curl "${SWUM_API_BASE:-https://api.swum.ai}/v1/waivers" \
  -G \
  --data-urlencode 'family_id=family_example' \
  --data-urlencode 'missing_only=true' \
  -H "Authorization: Bearer ${SWUM_API_KEY}"
200Responseapplication/json
{
  "data": [
    {
      "id": "waiver_example:swimmer_example",
      "waiver_id": "waiver_example",
      "waiver_name": "School waiver",
      "swimmer_id": "swimmer_example",
      "family_id": "family_example",
      "status": "missing",
      "is_optional": false,
      "completed": false,
      "signed_at": null,
      "updated_at": null
    }
  ],
  "next_cursor": null,
  "applicability_context": {
    "location_id": "pool_example",
    "product_scope": "lesson_products",
    "plan_id": null,
    "class_id": null
  },
  "program_scoped_waivers_excluded": true
}