Skip to main content
PATCH
Partial update — send only the slices you want to change (offer / paymentPlans / assets). Omitted slices are left untouched.

Authorizations

x-api-key
string
header
required

API key for authentication (can be generated in the settings)

Path Parameters

id
string
required

Body

application/json
offer
object

Offer core fields to update (partial). Omit to leave the offer unchanged.

paymentPlans
object

Payment plans snapshot. Omit to leave payment plans unchanged; when present, replaces the whole plans aggregate.

assets
object

Assets snapshot. Omit to leave assets unchanged; when present, replaces the whole assets aggregate.

Response

Offer updated — returns the refreshed envelope

id
string
required

The ID of the element

createdAt
string<date-time>
required

The created at date of the element

updatedAt
string<date-time>
required

The updated at date of the element

publicId
string
required

Short URL-safe identifier used in the public share link

offerNumber
string | null
required

User-set business reference number

status
enum<string>
required

Current offer status

Available options:
DRAFT,
SENT,
WON,
LOST
title
string | null
required

Offer title shown to the client

subtitle
string | null
required

Subtitle shown beneath the title

introduction
string | null
required

Introductory text shown at the top of the offer page

price
number | null
required

Total offer price in the smallest currency unit (cents)

validUntil
string<date-time> | null
required

Date until which the offer is valid

clientFirstName
string | null
required

Client first name

clientLastName
string | null
required

Client last name

clientEmail
string | null
required

Client email address

clientPhone
string | null
required

Client phone number

clientCompanyName
string | null
required

Client company name

sentToEmail
string | null
required

Email address the offer was actually sent to (snapshot at send-time)

sentAt
string<date-time> | null
required

Timestamp when the offer was sent

wonAt
string<date-time> | null
required

Timestamp when the offer was marked as won

lostAt
string<date-time> | null
required

Timestamp when the offer was marked as lost

archivedAt
string<date-time> | null
required

Timestamp when the offer was archived

acceptedByFirstName
string | null
required

First name of the person who accepted the offer via the public surface

acceptedByLastName
string | null
required

Last name of the person who accepted the offer via the public surface

acceptedByEmail
string | null
required

Email of the person who accepted the offer

acceptedByPhone
string | null
required

Phone number of the person who accepted the offer

signatureFileId
string | null
required

File ID of the captured signature image

declineReason
enum<string> | null
required

Reason given by the recipient when declining the offer (NONE if no reason provided)

Available options:
NONE,
TOO_EXPENSIVE,
OTHER_PRIORITIES,
TIMELINE,
MISSING_EXPERTISE,
PERSONAL_FIT
documentFileId
string | null
required

File ID of the attached PDF document

availableActions
object
required

Server-computed map of dashboard actions the caller may currently perform on this offer

publicUrl
string | null
required

Fully constructed public share URL (includes the auth token) - null if the offer is not sent yet

signatureFileThumbnail
object | null
required

Thumbnail of the captured signature — null when no signature is attached (offer not yet accepted via the public surface)

acceptedPaymentPlan
object | null
required

The plan the recipient chose at accept-time — null until the offer is accepted (WON). All other plans are fetched via GET /offers/:offerId/payment-plans.

paymentPlans
object
required

Grouped payment-plans snapshot for the offer. Same shape as GET /offers/:offerId/payment-plans.

assets
object
required

Grouped assets snapshot for the offer. Same shape as GET /offers/:offerId/assets.