Skip to main content

Change a repeating visit from a date onwards

PATCH/api/v1/visit_series/{id}

"This and future visits". Scheduled visits of the series from effective_from (default today) are replaced; earlier visits and visits that have started are kept. Without starts_on the existing rhythm continues from effective_from; with it, starts_on becomes the first new visit. A season is kept unless both of its months are sent: two months change it, and two nulls make the series run all year.

  • Needs an API key, and runs with the access of the member who made the key.
  • Send an Idempotency-Key. The same key with the same request within 24 hours gives the first answer again and changes nothing.
  • A connected AI assistant can use it too, as updateVisitSeries.

Parameters

In the address

  • idstring (uuid)required

In the query string

  • effective_fromstring (date)

    First date (in the series' time zone) the change applies to.

Headers

  • Idempotency-Keystringrequired

    Unique user-scoped key for safely retrying this mutation for 24 hours.

    At least 1 character. Up to 200 characters.

Request body

Sent as application/json.

  • visit_seriesobjectrequired

    Fields(12)
    • lock_versioninteger

      At least 0.

    • intervalinteger

      At least 1. At most 99.

    • unitstring

      `weekday` is Monday to Friday, one visit per working day, and needs an interval of 1.

      One of: day, weekday, week, month.

    • occurrencesinteger

      End after this many visits from `starts_on`; dates outside a season are not counted. Stored as `ends_on`.

      At least 1. At most 500. Write only.

    • starts_onstring (date)

      Date of the first visit. Weekly rhythms repeat on its weekday and monthly ones on its day of the month.

    • ends_onstring (date) or null

      Last date a visit may fall on.

    • season_from_monthinteger or null

      `season_from_month` and `season_to_month` are the first and last month of the part of the year a series runs in, 1 for January to 12 for December, both included. Give both or neither. A season may run over the year end: 11 and 2 is November to February. Dates outside it are skipped; the rhythm is not restarted.

      At least 1. At most 12.

    • season_to_monthinteger or null

      `season_from_month` and `season_to_month` are the first and last month of the part of the year a series runs in, 1 for January to 12 for December, both included. Give both or neither. A season may run over the year end: 11 and 2 is November to February. Dates outside it are skipped; the rhythm is not restarted.

      At least 1. At most 12.

    • start_timestring

      Local time in the account's time zone.

      Matches ^([01][0-9]|2[0-3]):[0-5][0-9]$.

    • duration_minutesinteger

      At least 1. At most 1440.

    • instructionsstring or null

    • membership_idsarray of string (uuid)

Responses

200A repeating visit.

  • dataobjectrequired

    Fields(18)
    • lock_versionintegerrequired

      At least 0.

    • created_atstring (date-time)required

    • updated_atstring (date-time)required

    • idstring (uuid)required

    • account_idstring (uuid)required

    • job_idstring (uuid)required

    • intervalintegerrequired

      At least 1. At most 99.

    • unitstringrequired

      `weekday` is Monday to Friday, one visit per working day, and needs an interval of 1.

      One of: day, weekday, week, month.

    • starts_onstring (date)required

    • ends_onstring (date) or null

    • season_from_monthinteger or null

      `season_from_month` and `season_to_month` are the first and last month of the part of the year a series runs in, 1 for January to 12 for December, both included. Give both or neither. A season may run over the year end: 11 and 2 is November to February. Dates outside it are skipped; the rhythm is not restarted.

      At least 1. At most 12.

    • season_to_monthinteger or null

      `season_from_month` and `season_to_month` are the first and last month of the part of the year a series runs in, 1 for January to 12 for December, both included. Give both or neither. A season may run over the year end: 11 and 2 is November to February. Dates outside it are skipped; the rhythm is not restarted.

      At least 1. At most 12.

    • start_timestringrequired

    • duration_minutesintegerrequired

    • time_zonestringrequired

    • instructionsstring or null

    • membership_idsarray of string (uuid)required

    • generated_throughstring (date) or null

      Visits exist up to this date.

A refusal answers in the one error shape every operation shares.

Example

A request our own tests send. The ids are made up: put your own in their place.

curl -X PATCH "https://app.tradesender.co.uk/api/v1/visit_series/80614f58-0641-5432-97ed-556ec96e9785?effective_from=2026-11-02" \
  -H "Authorization: Bearer $TRADESENDER_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "visit_series": {
    "start_time": "14:30",
    "lock_version": "1"
  }
}'