API reference
The Nupty API works on one couple’s wedding: the one the API key belongs to. It is generated from the same rules the planner uses, so this list is always complete.
https://my.nupty.app · OpenAPI 3.1 · For AI assistants
Authentication
- Create a key in Settings → API keys. Send it as Authorization: Bearer nupty_… on every request.
- A read-only key can only read; a “read and change” key can also send commands.
- A wrong or revoked key gets 401. Keys never work in a URL.
Endpoints
GET /api/v2/wedding | read | The whole wedding and its revision. |
GET /api/v2/wedding/revision | read | Only the revision: check whether something changed. |
POST /api/v2/wedding/commands | read and change | One command: {"command": {"type": …}}. Answers with the new wedding. |
Errors
- 400 INVALID_COMMAND: the command does not match its fields.
- 403 API_KEY_SCOPE (a read-only key), PREMIUM_REQUIRED (with a reason), SERVER_ONLY.
- 409 CONFLICT or INVARIANT: the plan changed meanwhile — read it again and retry.
- 422 with a code: the planner said no (for example PARTY_SHAPE, TABLE_FULL, ITEM_NOT_FOUND).
- 429: too many requests for this key — slow down.
Commands
Every change is one of these. Fields not marked optional are required.
Details
setDetails — Set wedding details: names, date (exact / month / unknown), guest range or the exact guest estimate (guestCount; it sets the range), ceremony, style template, time format, whether the Big Day board shows prices (showPrices), currency, total budget target, region. Only the given fields change; currency never converts amounts.
| Field | Type |
|---|---|
patch | object { partner1Name, partner2Name, dateMode, date, month, guestRange, ceremony, templateIndex, timeFormat, showPrices, currency, budgetTarget, guestCount, region } |
finishOnboarding — Mark the first-run questions as answered (the planner stops asking them).
Vendors
activateItem — Add a suggested vendor category (e.g. "fireworks", "bar") to the vendor list.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
addCustomItem — Add the couple's own vendor type (id chosen by the caller), in a category.
| Field | Type |
|---|---|
id | string ≤ 64 |
category | place | food | ceremony | music | media | look | attire | logistics |
name | string ≤ 120 |
setItemStatus — Set a vendor status: idea, comparing, booked or done.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
status | idea | comparing | booked | done |
markItemCovered — Mark a vendor as included in the venue package.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
markItemNotNeeded — Mark a vendor as not needed.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
undoItemBanner — Undo "covered" / "not needed" (back to idea or comparing).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
renameItem — Give a vendor item the couple's own name; on a catalogue item an empty name goes back to the catalogue name.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
name | string ≤ 120 |
removeCustomItem — Delete one of the couple's own vendor items (catalogue items can only be marked not needed). Its moments stay, unlinked.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
restoreItem — Put a deleted own vendor item back with its options, to-dos, payments and notes, re-linking its moments (undo).
| Field | Type |
|---|---|
item | object { id, catalogId, category, name, active, status, budget, chosen, coveredByVenue, statusBeforeVenue, custom, options, todos, payments, notes } |
index | integer 0–10000 |
links | array of object { versionId, momentId } (≤ 50) |
picks optional | object |
addItemNote — Add a dated entry to a vendor's "Agreements & notes" log (date YYYY-MM-DD or empty; multi-line text).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
noteId | string ≤ 64 |
date | "" or date YYYY-MM-DD |
text | string ≤ 2000 |
updateItemNote — Change the date or text of an "Agreements & notes" entry.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
noteId | string ≤ 64 |
patch | object { date, text } |
removeItemNote — Remove an "Agreements & notes" entry.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
noteId | string ≤ 64 |
restoreItemNote — Put a removed "Agreements & notes" entry back (undo).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
note | object { id, date, text } |
index | integer 0–10000 |
addOption — Add an option (a concrete vendor / offer) to compare under a vendor item; optional name and fixed amount.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
name optional | string ≤ 200 |
amount optional | integer 0–10000000000 |
updateOption — Change an option: name, price model (fixed / per person / both), amounts, contact, web, notes.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
patch | object { name, model, amount, pp, ppChild, contact, web, notes } |
setOptionField — Set a comparison field of an option (e.g. capacity, style).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
key | string ≤ 40 |
value | string ≤ 300 |
toggleOptionInclude — Venue options: toggle what the venue package includes (catering, stay, decor, music, rentals).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
key | catering | stay | decor | music | rentals |
rateOption — Rate an option 1–5 for one partner (the same stars again clears it).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
partner | 0 or 1 |
stars | integer 1–5 |
toggleChosen — Choose / un-choose an option (multi-choice items keep several).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
setChosen — Choose exactly this option (null = none).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 or null |
removeOption — Remove an option.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
restoreOption — Put a removed option back (undo).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
option | object { id, name, model, amount, pp, ppChild, ratings, contact, web, notes, fields, includes } |
index | integer 0–10000 |
chosen | boolean |
pickedIn | array of string ≤ 64 (≤ 20) |
Budget
setItemBudget — Set the budget of one vendor item (0 = none).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
budget | integer 0–10000000000 |
addPayment — Add a payment to a vendor item.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
paymentId | string ≤ 64 |
updatePayment — Change a payment: label, amount, due date, paid.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
paymentId | string ≤ 64 |
patch | object { label, amount, due, paid } |
removePayment — Remove a payment.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
paymentId | string ≤ 64 |
restorePayment — Put a removed payment back (undo).
| Field | Type |
|---|---|
itemId | string ≤ 64 |
payment | object { id, label, amount, due, paid } |
index | integer 0–10000 |
To-dos
addTodo — Add a to-do, either general (with a section) or on a vendor item, with optional multi-line notes.
| Field | Type |
|---|---|
todoId | string ≤ 64 |
title | string ≤ 300 |
due | "" or date YYYY-MM-DD |
target | object { section } or object { itemId } |
notes optional | string ≤ 2000 |
updateTodo — Change a to-do: title, due date, section, notes (empty = none).
| Field | Type |
|---|---|
todoId | string ≤ 64 |
itemId | string ≤ 64 or null |
patch | object { title, due, section, notes } |
pinTodo — Pin one of the couple's own to-dos to the top of the list (pinned: false unpins).
| Field | Type |
|---|---|
todoId | string ≤ 64 |
itemId | string ≤ 64 or null |
pinned | boolean |
movePinnedTodo — Move a pinned to-do up (-1) or down (1) among the pinned ones.
| Field | Type |
|---|---|
todoId | string ≤ 64 |
itemId | string ≤ 64 or null |
dir | -1 or 1 |
toggleTodo — Tick / untick a to-do.
| Field | Type |
|---|---|
todoId | string ≤ 64 |
itemId | string ≤ 64 or null |
removeTodo — Remove a to-do.
| Field | Type |
|---|---|
todoId | string ≤ 64 |
itemId | string ≤ 64 or null |
dismissSuggestion — Hide a suggested to-do.
| Field | Type |
|---|---|
key | string ≤ 200 |
restoreSuggestion — Show a hidden suggestion again.
| Field | Type |
|---|---|
key | string ≤ 200 |
Guests
addParty — Add one invitation (a party: single, plus-one, couple or family) with its people. The caller chooses the ids; the server picks the RSVP token (send any 16–64 characters as `rsvpToken`; they are replaced). Read the link with GET /api/v2/guests/{partyId}/link.
| Field | Type |
|---|---|
partyId | string ≤ 64 |
rsvpToken | string ≤ 64 |
party | object { type, people, side, group, priority, email, phone, lang, invitedTo, hotel, bus, notes } |
addParties — Add up to 500 invitations at once (bulk import). The server picks every RSVP token, as for addParty.
| Field | Type |
|---|---|
parties | array of object { partyId, rsvpToken, party } (≤ 500) |
updateParty — Replace an invitation’s details and people (replies and seats are kept).
| Field | Type |
|---|---|
partyId | string ≤ 64 |
party | object { type, people, side, group, priority, email, phone, lang, invitedTo, hotel, bus, notes } |
removeParties — Remove invitations (and free their seats).
| Field | Type |
|---|---|
partyIds | array of string ≤ 64 (≤ 2000) |
setReply — Record an RSVP answer by hand: waiting, yes (with who is coming) or no, plus diets (free text and fixed `dietTags`), room and bus (null = not answered). Shown as "Manually entered".
| Field | Type |
|---|---|
partyId | string ≤ 64 |
reply | waiting | yes | no |
attendingPersonIds optional | array of string ≤ 64 (≤ 30) |
diets optional | object |
dietTags optional | object |
names optional | object |
hotel optional | boolean or null |
bus optional | boolean or null |
setInvited — Mark invitations as invited without e-mail (paper, WhatsApp): not-sent ones become "waiting for a reply" and use no free send. `invited: false` puts still-waiting ones back to "not invited yet".
| Field | Type |
|---|---|
partyIds | array of string ≤ 64 (≤ 2000) |
invited | boolean |
newRsvpLink — Give an invitation a new personal RSVP link; the old link stops working. The server picks the new token (send any 16–64 characters; they are replaced).
| Field | Type |
|---|---|
partyId | string ≤ 64 |
rsvpToken | string ≤ 64 |
revertToGuestAnswer — Put back the guest’s own last answer from the RSVP page over changes made by hand (NOTHING_TO_REVERT when the guest never answered online).
| Field | Type |
|---|---|
partyId | string ≤ 64 |
updateRsvpSettings — RSVP form settings: ask dietary / accommodation / bus, PIN, message templates.
| Field | Type |
|---|---|
patch | object { askDietary, askAccommodation, askBus, pin, emailTemplate, textTemplate } |
setBusPickupPlace — Where the guest bus picks up.
| Field | Type |
|---|---|
place | string ≤ 200 |
Seating
seatParty — Seat everyone of an invitation who has no seat yet at one table, from `seatIndex` on (all or nothing: NOT_ENOUGH_SEATS).
| Field | Type |
|---|---|
tableId | string ≤ 64 |
partyId | string ≤ 64 |
seatIndex optional | integer |
addTable — Add a table (round, 8 seats; it appears on the floor plan).
| Field | Type |
|---|---|
tableId | string ≤ 64 |
updateTable — Change a table: name, shape, capacity (2–24).
| Field | Type |
|---|---|
tableId | string ≤ 64 |
patch | object { name, shape, capacity } |
removeTable — Remove a table.
| Field | Type |
|---|---|
tableId | string ≤ 64 |
seat — Seat one person of an invitation on a given seat.
| Field | Type |
|---|---|
tableId | string ≤ 64 |
seatIndex | integer |
partyId | string ≤ 64 |
unseat — Free one seat.
| Field | Type |
|---|---|
tableId | string ≤ 64 |
seatIndex | integer |
seatFirstFree — Seat one person of an invitation on the first free seat of a table.
| Field | Type |
|---|---|
tableId | string ≤ 64 |
partyId | string ≤ 64 |
unseatOne — Free one seat of an invitation at a table.
| Field | Type |
|---|---|
tableId | string ≤ 64 |
partyId | string ≤ 64 |
applySeatingPreset — Lay out a whole empty seat planner at once: "round" (round head table + rounds), "banquet" (long head table + long rows of 20–24) or "mixed" (long head table + rounds), sized for `guests` (default: the guest estimate or the yes count, whichever is larger), on the floor plan with the head table at the front. Table ids are `{presetId}-1`… and `{presetId}-h` (head). Refused once tables exist (TABLES_EXIST) or when the stored room is too small (ROOM_TOO_SMALL).
| Field | Type |
|---|---|
presetId | string ≤ 48 |
preset | round | banquet | mixed |
size | integer 4–24 |
guests optional | integer 1–1000 |
lang optional | EN | HU |
addTablesLike — Add tables with the same shape and capacity as an existing one, numbered after the last "Table n".
| Field | Type |
|---|---|
tableId | string ≤ 64 |
tableIds | array of string ≤ 64 (≤ 100) |
lang optional | EN | HU |
removeTables — Remove several tables at once (frees their seats). `restoreRoom` puts the room size back (undo of applySeatingPreset; null = the automatic room).
| Field | Type |
|---|---|
tableIds | array of string ≤ 64 (≤ 300) |
restoreRoom optional | object { width, length } or null |
moveTable — Place a table on the floor plan (centre, metres from the top-left corner).
| Field | Type |
|---|---|
tableId | string ≤ 64 |
x | number 0–100 |
y | number 0–100 |
rotateTable — Rotate a table on the floor plan (degrees).
| Field | Type |
|---|---|
tableId | string ≤ 64 |
rotation | integer 0–359 |
setFloorSize — Set the room size (metres).
| Field | Type |
|---|---|
width | number 5–100 |
length | number 5–100 |
addFloorElement — Add a dance floor, stage, bar, buffet… to the floor plan.
| Field | Type |
|---|---|
elementId | string ≤ 64 |
kind | dancefloor | stage | bar | buffet | cake | photobooth | entrance | dj | gifts | custom |
label optional | string ≤ 40 |
x optional | number 0–100 |
y optional | number 0–100 |
w optional | number 0.3–50 |
h optional | number 0.3–50 |
rotation optional | integer 0–359 |
updateFloorElement — Move, resize, rotate or rename a floor plan element.
| Field | Type |
|---|---|
elementId | string ≤ 64 |
patch | object { label, x, y, w, h, rotation } |
removeFloorElement — Remove a floor plan element.
| Field | Type |
|---|---|
elementId | string ≤ 64 |
Big Day
createVersion — Copy a day version into a new alternative day (Premium).
| Field | Type |
|---|---|
versionId | string ≤ 64 |
name | string ≤ 80 |
sourceVersionId | string ≤ 64 |
renameVersion — Rename a day version.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
name | string ≤ 80 |
removeVersion — Remove an alternative day version.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
restoreVersion — Put a removed version back (undo; Premium).
| Field | Type |
|---|---|
version | object { id, name, isPlan, moments, picks } |
index | integer 0–10000 |
makePlan — Make an alternative day the plan.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
useOptionInPlan — Use an option of a vendor in the plan.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
optionId | string ≤ 64 |
useMomentInPlan — Copy a moment from an alternative day into the plan.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
newMomentId | string ≤ 64 |
addMoment — Add a moment (time, name, lane, icon) to a day version; the plan is the version with isPlan = true.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
moment | object { id, time, name, lane, icon, link } |
updateMoment — Change a moment: name, time, lane, icon, duration; oldPick null dismisses the "in your old plan this moment used…" note a migrated plan may carry.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
patch | object { name, time, lane, icon, durationMin, oldPick } |
moveMoment — Move a moment to a lane and a time slot.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
lane | stage | back |
slot | integer 0–2160 |
linkMoment — Link a moment to a vendor item (null unlinks).
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
itemId | string ≤ 64 or null |
createItemForMoment — Create a vendor item for a moment and link it.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
itemId | string ≤ 64 |
name | string ≤ 120 |
category | place | food | ceremony | music | media | look | attire | logistics |
setMomentOption — Alternative days: pick which option a linked vendor uses.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
optionId | string ≤ 64 or null |
followPlan optional | boolean |
addOptionForMoment — Add an option to the vendor linked to a moment.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
optionId | string ≤ 64 |
name | string ≤ 200 |
amount | integer 0–10000000000 |
setMomentItemStatus — Set the status of the vendor linked to a moment.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
status | idea | comparing | booked | done |
duplicateMoment — Duplicate a moment.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
newMomentId | string ≤ 64 |
removeMoment — Remove a moment.
| Field | Type |
|---|---|
versionId | string ≤ 64 |
momentId | string ≤ 64 |
addItemToDay — Put a vendor item on the plan as a moment.
| Field | Type |
|---|---|
itemId | string ≤ 64 |
momentId | string ≤ 64 |
Studio
setTemplate — Choose the design template (0 blush, 1 midnight, 2 industrial, 3 garden, 4 golden hour).
| Field | Type |
|---|---|
templateIndex | integer 0–4 |
setAccent — Set the couple’s own accent colour (#rrggbb) for the website and printables; null = the template’s.
| Field | Type |
|---|---|
accent | string or null |
newSiteLink — Give the wedding website a new public link; the old link stops working. The server picks the new slug.
| Field | Type |
|---|---|
slug | string |
setSiteSection — Show / hide a section of the wedding website.
| Field | Type |
|---|---|
key | cover | welcome | countdown | day | location | travel | stay | dress | story | gallery | rsvp |
on | boolean |
moveSiteSection — Move a website section up or down.
| Field | Type |
|---|---|
key | cover | welcome | countdown | day | location | travel | stay | dress | story | gallery | rsvp |
dir | -1 or 1 |
setSitePublished — Publish / unpublish the wedding website (publishing needs Premium).
| Field | Type |
|---|---|
published | boolean |
updateSite — Change website texts: guest language, welcome, story, dress code, venue name and address, getting there (travelText), where to stay (stayText), RSVP deadline and RSVP note, vendor names on the day timeline (showVendors), search-engine visibility (indexable).
| Field | Type |
|---|---|
patch | object { guestLanguage, welcomeText, storyText, dressCode, venueDisplayName, venueAddress, rsvpDeadline, travelText, stayText, rsvpNote, showVendors, indexable } |
updatePhoto — Rename a photo.
| Field | Type |
|---|---|
photoId | string ≤ 64 |
label | string ≤ 200 |
removePhoto — Remove a photo.
| Field | Type |
|---|---|
photoId | string ≤ 64 |
setDesignStatus — Set a design’s status: not started, draft, done.
| Field | Type |
|---|---|
key | site | savethedate | invitations | seating | menu | namecards | tablenumbers | welcome | order | thankyou |
status | notStarted | draft | done |
setDesignText — Override a text block of a design (null = follow the planner again).
| Field | Type |
|---|---|
key | site | savethedate | invitations | seating | menu | namecards | tablenumbers | welcome | order | thankyou |
block | string ≤ 40 |
text | string ≤ 5000 or null |
setDesignPhotos — Set the photos of a design slot, in order.
| Field | Type |
|---|---|
key | site | savethedate | invitations | seating | menu | namecards | tablenumbers | welcome | order | thankyou |
slot | string ≤ 40 |
photoIds | array of string ≤ 64 (≤ 100) |
setDesignStyle — Design style: show photo, alignment, paper size, include guests who haven't replied (seating chart, name cards; on unless false), print cards for people without a name (name cards), landscape orientation (every printable with a paper choice), a QR code to the published website (save-the-date, invitation).
| Field | Type |
|---|---|
key | site | savethedate | invitations | seating | menu | namecards | tablenumbers | welcome | order | thankyou |
patch | object { showPhoto, align, paper, includeUnreplied, printUnnamed, orientation, showQr } |
Menu
addMenuSection — Add a section to the table menu (Starters, Main course…).
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
title | string ≤ 80 |
index optional | integer 0–1000 |
renameMenuSection — Rename a menu section.
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
title | string ≤ 80 |
moveMenuSection — Move a menu section up or down.
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
dir | -1 or 1 |
removeMenuSection — Remove a menu section.
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
restoreMenuSection — Put a removed menu section back (undo).
| Field | Type |
|---|---|
section | object { id, title, items } |
index | integer 0–1000 |
addMenuItem — Add a dish or drink to a menu section.
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
itemId | string ≤ 64 |
name | string ≤ 200 |
note optional | string ≤ 300 |
updateMenuItem — Change a dish: name, note.
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
itemId | string ≤ 64 |
patch | object { name, note } |
moveMenuItem — Move a dish up or down.
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
itemId | string ≤ 64 |
dir | -1 or 1 |
removeMenuItem — Remove a dish.
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
itemId | string ≤ 64 |
restoreMenuItem — Put a removed dish back (undo).
| Field | Type |
|---|---|
sectionId | string ≤ 64 |
item | object { id, name, note } |
index | integer 0–1000 |
What Nupty can do
The planner the couple gets, in seven areas. Each page lists every feature, marked Free or Premium, with a link to try it in the demo.
- Big Day timeline: The day moment by moment, the Stage your guests see and the Backstage your crew needs.
- Vendors & venue: Every quote in one place, compared side by side, from the first idea to booked.
- Guests & RSVP: The guest list, invitations and replies, per person.
- Seating & floor plan: Tables, seats and a floor plan to scale, in step with the replies.
- Budget & payments: A budget that follows your choices, and every payment until it is paid.
- Design Studio: Your wedding website and every printable, in one style, filled in from your plan.
- Account, sign-in & AI assistants: Signing in, Home and your to-dos, languages, and AI assistants that help with your plan.