Signups

Update a signup

Partial update — only the supplied fields are changed; at least one is required (an empty body is 422). Null clears description, location, signupCloseDate and eventWideCustomField; it is a no-op for timezone and resets maxParticipants to the plan ceiling. Notifies no participants. Emits signup.updated.

patch/signups/{id}

Request

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

Path parameters

idstring uuid required

Request body

titlestring

Cannot be null: a signup always has a title.

descriptionstring nullable

Null clears the description.

locationstring nullable

Null clears the location.

eventDatestring

ISO-8601 datetime, same rules as on create: UTC / offset-bearing, or a naive local string that is read in timezone (this request's, else the signup's stored one). Refused with 400 on a recurring (Series) signup unless it is the signup's current date: a recurring signup's dates come from its schedule. A multi-day signup built from days alone is not locked. A naive string is read in the signup's stored zone when timezone is omitted; it is refused (422) if timezone: null is sent beside it.

signupCloseDatestring nullable

ISO-8601 datetime, same rules as eventDate. Null = signups stay open until the event.

timezonestring nullable

IANA timezone name. Changing it does NOT move the signup's stored instants (eventDate, slot times): it changes how they are displayed and how naive datetimes are read. Null is a no-op (a signup always has a timezone), not a way to clear it.

maxParticipantsinteger nullable

Cap on total participants. Above the plan's ceiling is refused with 402 upgrade_required. Null resets the cap to the plan's ceiling (e.g. 50 on Free), it does NOT remove the cap; only a plan with no ceiling stores null (uncapped). Omit to leave the cap alone.

requiresPhoneboolean
isPrivateboolean

May be changed on a published signup; takes effect immediately.

Example request

{
  "timezone": "America/Los_Angeles"
}

Response

Updated signup

idstring uuid required
organizationIdstring required
slugstring required
titlestring required
status'draft' | 'published' | 'closed' required
eventDatestring date-time required

ISO-8601 UTC.

signupCloseDatestring date-time nullable required

ISO-8601 UTC. Null = signups never close until the event.

locationstring nullable required
isPrivateboolean required
createdAtstring date-time required
updatedAtstring date-time required
descriptionstring nullable required
maxParticipantsinteger nullable required

Cap on total participants. Null only on a plan with no participant ceiling (uncapped); elsewhere the cap is stored as the plan ceiling.

commitmentRequiredboolean required

When true, a participant must claim a slot or an item to sign up — attending without committing to anything is not offered.

requiresPhoneboolean required
timezonestring required

IANA timezone the organizer attached to this signup. Display surfaces should prefer this over the viewer's local zone when rendering eventDate / slot times.

Example response

{
  "id": "550e8400-e29b-41d4-a716-446655440100",
  "organizationId": "org_123",
  "slug": "fall-fundraiser-a1b2",
  "title": "Fall fundraiser",
  "status": "published",
  "eventDate": "2026-09-15T17:00:00Z",
  "timezone": "America/Los_Angeles"
}

Changes

No recorded changes to this operation across all 1 revision of this API.