Help
DevelopersReference

Offers

The authored plays the agent delivers — copy, chips, a call to action, who sees them and what converting means.

Base URL https://api.showpilot.com/v1. Every call needs Authorization: Bearer <api key>; see Authentication.

List offers

GET /offers

Scope: offers:read. Operation id: listOffers.

Every offer, newest edit first, with its lifetime shown and accepted counts.

Parameters

NameInTypeMeaning
activequerybooleanOnly live offers, or only retired ones. Absent returns both.

Example request

curl "https://api.showpilot.com/v1/offers" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

The offers.

FieldTypeAlwaysMeaning
itemsarray of Offeryes

Offer

FieldTypeAlwaysMeaning
idstring (uuid)yes
namestringyesInternal name. Visitors never see it.
formattoaster · in_chatyes
goalmeeting_booked · lead_captured · content_viewed · engagedyesWhat counts as converting this play.
isActivebooleanyesFalse retires the offer and keeps its history. There is no delete.
headlinestring or nullyes
messagestringyesThe copy the visitor reads.
chipsarray of stringyesQuick replies. Two render.
ctaLabelstring or nullyesButton text. Null means no button.
ctaActionOfferCtaActionyes
imageUrlstring or nullyes
mediaRefIdstring or null (uuid)yes
agentPersonalizebooleanyesLets the agent rewrite the headline and body for the visitor in conversation. The design
deployOfferDeployyes
designobject or nullyesThe creative as data — layout
conversionOfferConversionyes
audienceIdsarray of string (uuid)yesAudiences the agent may offer this to in conversation. Empty means any audience it matches.
statsobjectyesLifetime counters from the selector.
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

OfferCtaAction

What the button does. none is a chips-only prompt. open_experience launches a published guided experience; open_content opens one asset.

FieldTypeAlwaysMeaning
typenone · book_meeting · capture_lead · navigate · open_content · open_experienceyes
urlstringnoFor navigate.
contentRefIdstring (uuid)noFor open_content.
experienceIdstring (uuid)noFor open_experience.

OfferDeploy

The arrival gates. Present means the offer can present itself on the site; absent or null means the agent may still offer it in conversation but nothing shows on arrival. Every gate narrows: an absent gate matches everything. CRM and industry gates fail closed — an unresolved visitor never sees them.

FieldTypeAlwaysMeaning
livebooleanyesThe master switch. False keeps the configuration and shows nothing.
presentationinterstitial · toast · banneryes
hostsarray of stringnoSite hostnames, e.g. "www.acme.com". Empty means every site you deploy on.
includePagesarray of stringnoPath patterns, e.g. "/pricing" or "/blog/*". Empty means all pages.
excludePagesarray of stringno
utmobjectnoCampaign arrival condition
referrerHostsarray of stringnoReferrer hostnames, e.g. "linkedin.com".
visitorTypenew · returningno
crmobjectnoMatched against the CRM you connected. Never presents to a visitor it cannot resolve.
industriesarray of stringnoMatched against the visitor's enriched account industry
devicesarray of desktop · mobileno
afterSecondsintegernoDelay after page load. Absent is immediately.
startsAtstringnoCampaign start
endsAtstringnoCampaign end

OfferConversion

What fulfilling the play collects, and where the conversion lands in your stack.

FieldTypeAlwaysMeaning
collectarray of email · name · phone · companynoFields the agent asks for. It skips anything it already knows about the visitor.
formIdstring (uuid)noAn agent form to run instead of collect; its own after-steps then fire
agentNotestringnoWhat the agent should do once the visitor accepts. Joins the runtime prompt.
destinationobjectno

Errors

StatusWhen
401No key, or an unknown or revoked key. Code unauthorized.
403A valid key without the operation's scope (code insufficient-scope), or a plan without API access (code plan-api-off).
429The key's bucket is empty. Code rate-limited; wait the Retry-After seconds.

Create an offer

POST /offers

Scope: offers:write. Operation id: createOffer.

Requires Idempotency-Key. A new offer is active immediately for the agent to use in conversation. It does not present itself on the site until you send a deploy with live: true.

Example request

curl "https://api.showpilot.com/v1/offers" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

Status 201.

The offer.

Offer

FieldTypeAlwaysMeaning
idstring (uuid)yes
namestringyesInternal name. Visitors never see it.
formattoaster · in_chatyes
goalmeeting_booked · lead_captured · content_viewed · engagedyesWhat counts as converting this play.
isActivebooleanyesFalse retires the offer and keeps its history. There is no delete.
headlinestring or nullyes
messagestringyesThe copy the visitor reads.
chipsarray of stringyesQuick replies. Two render.
ctaLabelstring or nullyesButton text. Null means no button.
ctaActionOfferCtaActionyes
imageUrlstring or nullyes
mediaRefIdstring or null (uuid)yes
agentPersonalizebooleanyesLets the agent rewrite the headline and body for the visitor in conversation. The design
deployOfferDeployyes
designobject or nullyesThe creative as data — layout
conversionOfferConversionyes
audienceIdsarray of string (uuid)yesAudiences the agent may offer this to in conversation. Empty means any audience it matches.
statsobjectyesLifetime counters from the selector.
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

OfferCtaAction

What the button does. none is a chips-only prompt. open_experience launches a published guided experience; open_content opens one asset.

FieldTypeAlwaysMeaning
typenone · book_meeting · capture_lead · navigate · open_content · open_experienceyes
urlstringnoFor navigate.
contentRefIdstring (uuid)noFor open_content.
experienceIdstring (uuid)noFor open_experience.

OfferDeploy

The arrival gates. Present means the offer can present itself on the site; absent or null means the agent may still offer it in conversation but nothing shows on arrival. Every gate narrows: an absent gate matches everything. CRM and industry gates fail closed — an unresolved visitor never sees them.

FieldTypeAlwaysMeaning
livebooleanyesThe master switch. False keeps the configuration and shows nothing.
presentationinterstitial · toast · banneryes
hostsarray of stringnoSite hostnames, e.g. "www.acme.com". Empty means every site you deploy on.
includePagesarray of stringnoPath patterns, e.g. "/pricing" or "/blog/*". Empty means all pages.
excludePagesarray of stringno
utmobjectnoCampaign arrival condition
referrerHostsarray of stringnoReferrer hostnames, e.g. "linkedin.com".
visitorTypenew · returningno
crmobjectnoMatched against the CRM you connected. Never presents to a visitor it cannot resolve.
industriesarray of stringnoMatched against the visitor's enriched account industry
devicesarray of desktop · mobileno
afterSecondsintegernoDelay after page load. Absent is immediately.
startsAtstringnoCampaign start
endsAtstringnoCampaign end

OfferConversion

What fulfilling the play collects, and where the conversion lands in your stack.

FieldTypeAlwaysMeaning
collectarray of email · name · phone · companynoFields the agent asks for. It skips anything it already knows about the visitor.
formIdstring (uuid)noAn agent form to run instead of collect; its own after-steps then fire
agentNotestringnoWhat the agent should do once the visitor accepts. Joins the runtime prompt.
destinationobjectno

Errors

StatusWhen
400A parameter is malformed, such as a cursor this API did not issue, a limit under 1, or an unknown status. Code invalid-request.
401No key, or an unknown or revoked key. Code unauthorized.
403A valid key without the operation's scope (code insufficient-scope), or a plan without API access (code plan-api-off).
429The key's bucket is empty. Code rate-limited; wait the Retry-After seconds.

Read an offer

GET /offers/{id}

Scope: offers:read. Operation id: getOffer.

Parameters

NameInTypeMeaning
idpathstring (uuid)The offer's UUID.

Example request

curl "https://api.showpilot.com/v1/offers/<id>" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

The offer.

Offer

FieldTypeAlwaysMeaning
idstring (uuid)yes
namestringyesInternal name. Visitors never see it.
formattoaster · in_chatyes
goalmeeting_booked · lead_captured · content_viewed · engagedyesWhat counts as converting this play.
isActivebooleanyesFalse retires the offer and keeps its history. There is no delete.
headlinestring or nullyes
messagestringyesThe copy the visitor reads.
chipsarray of stringyesQuick replies. Two render.
ctaLabelstring or nullyesButton text. Null means no button.
ctaActionOfferCtaActionyes
imageUrlstring or nullyes
mediaRefIdstring or null (uuid)yes
agentPersonalizebooleanyesLets the agent rewrite the headline and body for the visitor in conversation. The design
deployOfferDeployyes
designobject or nullyesThe creative as data — layout
conversionOfferConversionyes
audienceIdsarray of string (uuid)yesAudiences the agent may offer this to in conversation. Empty means any audience it matches.
statsobjectyesLifetime counters from the selector.
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

OfferCtaAction

What the button does. none is a chips-only prompt. open_experience launches a published guided experience; open_content opens one asset.

FieldTypeAlwaysMeaning
typenone · book_meeting · capture_lead · navigate · open_content · open_experienceyes
urlstringnoFor navigate.
contentRefIdstring (uuid)noFor open_content.
experienceIdstring (uuid)noFor open_experience.

OfferDeploy

The arrival gates. Present means the offer can present itself on the site; absent or null means the agent may still offer it in conversation but nothing shows on arrival. Every gate narrows: an absent gate matches everything. CRM and industry gates fail closed — an unresolved visitor never sees them.

FieldTypeAlwaysMeaning
livebooleanyesThe master switch. False keeps the configuration and shows nothing.
presentationinterstitial · toast · banneryes
hostsarray of stringnoSite hostnames, e.g. "www.acme.com". Empty means every site you deploy on.
includePagesarray of stringnoPath patterns, e.g. "/pricing" or "/blog/*". Empty means all pages.
excludePagesarray of stringno
utmobjectnoCampaign arrival condition
referrerHostsarray of stringnoReferrer hostnames, e.g. "linkedin.com".
visitorTypenew · returningno
crmobjectnoMatched against the CRM you connected. Never presents to a visitor it cannot resolve.
industriesarray of stringnoMatched against the visitor's enriched account industry
devicesarray of desktop · mobileno
afterSecondsintegernoDelay after page load. Absent is immediately.
startsAtstringnoCampaign start
endsAtstringnoCampaign end

OfferConversion

What fulfilling the play collects, and where the conversion lands in your stack.

FieldTypeAlwaysMeaning
collectarray of email · name · phone · companynoFields the agent asks for. It skips anything it already knows about the visitor.
formIdstring (uuid)noAn agent form to run instead of collect; its own after-steps then fire
agentNotestringnoWhat the agent should do once the visitor accepts. Joins the runtime prompt.
destinationobjectno

Errors

StatusWhen
401No key, or an unknown or revoked key. Code unauthorized.
403A valid key without the operation's scope (code insufficient-scope), or a plan without API access (code plan-api-off).
404No object with that id in this workspace. Code not-found.
429The key's bucket is empty. Code rate-limited; wait the Retry-After seconds.

Change an offer

PATCH /offers/{id}

Scope: offers:write. Operation id: updateOffer.

Requires Idempotency-Key. Send only the fields that change. Changes take effect on the next visitor; nothing needs publishing. Set isActive: false to retire an offer — there is no delete, because an offer carries its own lifetime counters.

Parameters

NameInTypeMeaning
idpathstring (uuid)The offer's UUID.

Example request

curl "https://api.showpilot.com/v1/offers/<id>" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

The updated offer.

Offer

FieldTypeAlwaysMeaning
idstring (uuid)yes
namestringyesInternal name. Visitors never see it.
formattoaster · in_chatyes
goalmeeting_booked · lead_captured · content_viewed · engagedyesWhat counts as converting this play.
isActivebooleanyesFalse retires the offer and keeps its history. There is no delete.
headlinestring or nullyes
messagestringyesThe copy the visitor reads.
chipsarray of stringyesQuick replies. Two render.
ctaLabelstring or nullyesButton text. Null means no button.
ctaActionOfferCtaActionyes
imageUrlstring or nullyes
mediaRefIdstring or null (uuid)yes
agentPersonalizebooleanyesLets the agent rewrite the headline and body for the visitor in conversation. The design
deployOfferDeployyes
designobject or nullyesThe creative as data — layout
conversionOfferConversionyes
audienceIdsarray of string (uuid)yesAudiences the agent may offer this to in conversation. Empty means any audience it matches.
statsobjectyesLifetime counters from the selector.
createdAtstring (date-time)yes
updatedAtstring (date-time)yes

OfferCtaAction

What the button does. none is a chips-only prompt. open_experience launches a published guided experience; open_content opens one asset.

FieldTypeAlwaysMeaning
typenone · book_meeting · capture_lead · navigate · open_content · open_experienceyes
urlstringnoFor navigate.
contentRefIdstring (uuid)noFor open_content.
experienceIdstring (uuid)noFor open_experience.

OfferDeploy

The arrival gates. Present means the offer can present itself on the site; absent or null means the agent may still offer it in conversation but nothing shows on arrival. Every gate narrows: an absent gate matches everything. CRM and industry gates fail closed — an unresolved visitor never sees them.

FieldTypeAlwaysMeaning
livebooleanyesThe master switch. False keeps the configuration and shows nothing.
presentationinterstitial · toast · banneryes
hostsarray of stringnoSite hostnames, e.g. "www.acme.com". Empty means every site you deploy on.
includePagesarray of stringnoPath patterns, e.g. "/pricing" or "/blog/*". Empty means all pages.
excludePagesarray of stringno
utmobjectnoCampaign arrival condition
referrerHostsarray of stringnoReferrer hostnames, e.g. "linkedin.com".
visitorTypenew · returningno
crmobjectnoMatched against the CRM you connected. Never presents to a visitor it cannot resolve.
industriesarray of stringnoMatched against the visitor's enriched account industry
devicesarray of desktop · mobileno
afterSecondsintegernoDelay after page load. Absent is immediately.
startsAtstringnoCampaign start
endsAtstringnoCampaign end

OfferConversion

What fulfilling the play collects, and where the conversion lands in your stack.

FieldTypeAlwaysMeaning
collectarray of email · name · phone · companynoFields the agent asks for. It skips anything it already knows about the visitor.
formIdstring (uuid)noAn agent form to run instead of collect; its own after-steps then fire
agentNotestringnoWhat the agent should do once the visitor accepts. Joins the runtime prompt.
destinationobjectno

Errors

StatusWhen
400A parameter is malformed, such as a cursor this API did not issue, a limit under 1, or an unknown status. Code invalid-request.
401No key, or an unknown or revoked key. Code unauthorized.
403A valid key without the operation's scope (code insufficient-scope), or a plan without API access (code plan-api-off).
404No object with that id in this workspace. Code not-found.
429The key's bucket is empty. Code rate-limited; wait the Retry-After seconds.

On this page