Skip to main content
PATCH
Update an offer

Authorizations

x-api-key
string
header
required

Team API key for authentication. Your team role (provider/reseller/hybrid) determines which endpoints you can access.

Path Parameters

id
string
required

Body

application/json
name
string

Public-facing name of the offer

Example:

"High-Speed Internet 1000 Mbps"

internalName
string

Internal name for tracking (not shown to customers)

Example:

"HSI-1000-Q4-2024"

category
enum<string>

Service category

Available options:
internet,
electricity,
other
Example:

"internet"

status
enum<string>
default:draft

Current status of the offer

Available options:
draft,
active,
inactive,
archived
Example:

"draft"

sku
string

Stock Keeping Unit (SKU) - must be unique

Example:

"INT-1000-001"

externalId
string

External system identifier

Example:

"ext-12345"

externalProductKey
string

Identifier of this offer's product in the provider's serviceability source. When the source returns several products for an address, this selects the one whose price/plan is shown for this offer; offers sharing a market can therefore each surface their own address-level pricing. Leave unset to use the source's default (payload-level) projection.

Example:

"FIBER-500"

metadata
object

Custom metadata as JSON object

Example:
description
string

Detailed description of the offer

Example:

"Blazing fast fiber internet with unlimited data"

internalDescription
string

Internal notes and description

Example:

"Q4 promotional offer for new markets"

marketingHeadline
string

Marketing headline

Example:

"Get Lightning-Fast Internet Today!"

marketingDescription
string

Marketing description

Example:

"Experience the future of connectivity with our fiber-optic network"

keyFeatures
string[]

Array of key features

Example:
imageUrl
string

URL to offer image

Example:

"https://cdn.example.com/offers/internet-1000.jpg"

overview
string

Detailed overview of the offer

Example:

"This package includes installation, router, and 24/7 support"

brandId
string

Id of one of your team brands (see /provider/brands) to display the offer under. Takes precedence over brandName. Send null on update to clear the brand and fall back to the provider team identity.

Example:

"a3f1c9c2-7f42-4b6e-9a8e-2f0d5c6b1e77"

brandName
string

Brand display name. When set, buyer-facing surfaces show this brand's name/logo instead of the owning provider team — used to load offers under another company's identity. If your team has no brand with this name it is created; matching is case/space-insensitive within your team. Falls back to the provider team name when omitted. Ignored when brandId is set.

Example:

"Direct Energy"

brandImageUrl
string

Brand logo URL. Only used to set the image when the brand is first created (or when an existing brand has no image); it never overwrites an existing brand logo.

Example:

"https://logo.clearbit.com/directenergy.com"

submissionUrl
string

URL for order submission

Example:

"https://provider.example.com/api/orders"

submissionConfig
object

Submission configuration including form fields

Example:
electricity
Electricity Contract (write) · object

Structured electricity contract — the only way to set an electricity offer’s pricing, term, plan and disclosures. Folded into storage server-side. Grouped as rate / term / plan / disclosures.

internet
Internet Contract (write) · object

Structured internet contract — the only way to set an internet offer’s speed, data allowance, term and disclosures. Folded into storage server-side. Grouped as speed / data / term / disclosures.

pricingType
enum<string>

Pricing type

Available options:
fixed,
variable,
tiered,
custom
Example:

"fixed"

monthlyPrice
number

Monthly recurring price

Required range: x >= 0
Example:

59.99

marketNames
string[]

Scope the offer to one or more existing markets by NAME. Each name must match an existing market on your team (create markets separately via the markets API). Mirrors the CSV bulk-upload marketNames column so a JSON integration and the CSV path use the same identifier. Use marketIds if you already have market IDs. Cannot be combined with marketIds.

Example:
marketIds
string[]

Scope the offer to one or more existing markets by ID. Each id must belong to a market on your team. Prefer marketNames when you have the market name (matches the CSV column and is easier to author). Cannot be combined with marketNames.

Example:

Response

Offer successfully updated

An offer. Always includes a top-level serviceType discriminator ("electricity", "internet", …); electricity offers additionally include a grouped electricity object and internet offers a grouped internet object. The underlying offer fields (name, status, markets, marketing, pricing, …) are also present.

serviceType
string | null

Flat service-type discriminator derived from category. Check this instead of category directly.

Example:

"internet"

electricity
Electricity Contract · object

Present only on electricity offers.

internet
Internet Contract · object

Present only on internet offers.