cypress.DOCS
Log inRegister
Cypress Docs

The app's actions

Every button of the app's screens as a REST operation and a Cypress Operate tool that run the app's own code as you, with the webhook each change sends.

TL;DRAI summary

This chapter explains how your actions in Cypress, like launching a vehicle or setting a price, work behind the scenes. It covers who can perform which actions, what happens when you test an action, and the notifications you receive when vehicle details change.

Dive deeper:

What a person does on a vehicle's page or in the fleet grid, your system or agent does through the API or Cypress Operate, and the result is the same because it runs the same code. Each action is one button (Pause, Launch, a label, a picture): its REST operation under /api/v1, its MCP tool and the webhook it sends come from one definition, and it runs the screen's own route as the caller, with the screen's checks and its consequences: a pause withdraws the car's open offers and tells the buyers, a seller's delist waits for Cypress's review, automations start, the activity log records who did it. Since 1.5.0.

Who it acts as

CredentialActs as
API keyYour organization, through its first admin: the screen's checks pass as they would for that person. An organization with no active admin or fleet manager answers 403 POLICY_DENIED
An app acting for a person (Connect Cypress)That person, with their role
An agentThe agent, with a fleet manager's authority on the actions that allow an agent (the Agent column below). Any other is a person's: 403 PEOPLE_ONLY, with the vehicle's link for a person to act on
CM tokenThe Cypress Manager who made it, for the organization in the Cypress-Organization header (organizationId on an MCP call). The staff actions take a CM token only

Dry runs, retries and refusals

Every write takes ?dryRun=true (dryRun on MCP) and an Idempotency-Key (idempotencyKey): a retry with the same key answers the first answer, once. A dry run is one of two kinds:

  • The screen's preview, where the screen has one: apply_pricing_rule and apply_pricing_rules evaluate the rules and say what each would do, applying nothing. Since 1.9.0 also set_floor_prices (every floor worked out), update_pricing_rule (the rule as it would be), request_vehicle_archive (which path the archive takes, and why), import_vehicles and apply_import (the import's own preview).
  • Checked: the credential, its scope, who the action would run as, the input and the records it names are checked, and nothing runs. A car, an offer, a closing, a contact, a company, a deal, a task, a campaign or a buy target that does not exist, or that you may not open, answers 404 NOT_FOUND, as the real call would. checked lists what was checked; the record's state and the action's own rules are checked when it runs:
{ "dryRun": true, "simulated": true, "checked": ["credential", "scope", "role", "input", "record"], "note": "The state of the record and this action's own rules are checked when it runs.", "would": { "action": "vehicles.pause", "as": "API key", "input": { "id": "clx…", "reason": "Back on rent" } } }

A refusal carries the screen's own message under the API's codes: 422 INVALID for the input (with each field), 403 POLICY_DENIED for the screen's role check (Your role cannot create share links), 404 NOT_FOUND, 409 CONFLICT for a state that does not allow it (a share link for a car that is not listed). See Errors.

The webhooks they send

Every change to a vehicle sends VEHICLES.UPDATED (VEHICLES.CREATED for a new one), whichever door made it: a person in the app, a CSV import, an automation or the API. Besides the vehicle, the body carries:

FieldMeaning
changedFieldsWhat changed: status, labelSlug, floorPrice, listingPrice, fleetId, photos, videos, historyReport, shareLinks, visibility, storefrontEnabled, offerRules, valuation, and since 1.9.0 damages, keyCount, damageNote
toStatusThe new status, when the status moved
sourceWhere it came from: app, csv, automation or api. A change made through these actions says api, so your system can tell its own writes from everyone else's. Left out on a valuation landing (it cannot tell who asked)

A launch also sends LISTINGS.ACTIVATED. Every other action that changes something sends the event in its Webhook column below, from whichever door ran it: your organization's account, members, bank accounts and billing, both sides of a closing, the offers you made, your CRM book, promotions, plans and Sequoia's recommendations. See Every action heard.

The actions

The REST paths are under /api/v1. Each action needs the scope of its area (see Key scopes); an agent needs the grant of its area, and a Cypress staff action a CM token. A write marked "in a sandbox: recorded, not sent" sends an email or a text to someone outside Cypress: in a sandbox it is checked and recorded, never sent.

Read a vehicle and the fleet

ToolRESTDoesAgentWebhook
list_vehicle_activityGET /vehicles/{id}/activityWhat happened to a vehicle, who did it and whenYes—
list_vehicle_valuationsGET /vehicles/{id}/valuationsA vehicle's valuation history, newest firstYes—
check_vehicle_listing_readinessGET /vehicles/{id}/listing-readinessThe checklist a vehicle passes before it goes live, and suggested offer rulesYes—
get_vehicle_listing_metricsGET /vehicles/{id}/listing-metricsA live vehicle's listing, its activity and its offer rulesYes—
get_vehicle_market_historyGET /vehicles/{id}/market-historyEverywhere a vehicle has been shown, and what came of itYes—
get_vehicle_compsGET /vehicles/{id}/compsRecent Cypress sales like this vehicle: yours one by one, other sellers' as a range, and its Black Book value. Since 1.9.0Yes—
find_comparable_salesGET /vehicles/compsThe same for a year, make and model you name; mine=true&limit=1 is your last sale of it. Since 1.9.0Yes—
get_vehicle_archive_recordGET /vehicles/{id}/archive-recordAn archived vehicle's archive recordYes—
list_fleetsGET /fleetsThe organization's fleets (its groups of vehicles)Yes—
get_fleet_statsGET /fleet/statsThe fleet page's numbers: vehicles by status, value, days on marketYes—
get_fleet_metricsGET /fleet/metricsThe dashboard's tiles over a period (7d, 30d, 90d), from the computation the dashboard draws: each with its label, the text it shows, its delta and a real trend. Wholesale GMV and Retail value are snapshots with no history: never draw a fleet-value trend. See Dashboard numbers. Since 1.9.0Yes—
list_vehicle_noticesGET /vehicles/{id}/noticesWhat changed on a vehicle that its seller or Cypress was told aboutYes—
get_vehicle_channel_flowGET /vehicles/{id}/channel-flowHow buyers reached a vehicle, channel by channel, to views, offers and a saleYes—
get_vehicle_engagementGET /vehicles/{id}/engagementCypress's engagement report on a vehicle: views, reach, offers, over a periodCypress staff (CM token)—
get_vehicle_engagement_breakdownsGET /vehicles/{id}/engagement/breakdownsThe engagement report cut by channel, region and buyer typeCypress staff (CM token)—
list_vehicle_engagement_actorsGET /vehicles/{id}/engagement/actorsThe buyers who viewed, saved or offered on a vehicleCypress staff (CM token)—
get_vehicle_engagement_actorGET /vehicles/{id}/engagement/actors/{actorKey}One buyer's whole history with a vehicleCypress staff (CM token)—

The way to market

ToolRESTDoesAgentWebhook
change_vehicle_statusPOST /vehicles/{id}/transitionsA step of the vehicle's way to market (submit, approve, reject, hold, deliver, archive…)A person'sVEHICLES.UPDATED
submit_vehicles_for_reviewPOST /vehicles/submit-for-reviewSend many draft vehicles to Cypress for pricing reviewYesVEHICLES.UPDATED
launch_approved_vehiclePOST /vehicles/{id}/launchLaunch an approved vehicle to the marketplace, as the Launch button doesA person'sLISTINGS.ACTIVATED
launch_approved_vehiclesPOST /vehicles/launchLaunch many approved vehicles at onceA person'sLISTINGS.ACTIVATED per vehicle
pause_vehiclePOST /vehicles/{id}/pausePause a live vehicle (on hold): its open offers are withdrawn and the buyers toldYesVEHICLES.UPDATED
resume_vehiclePOST /vehicles/{id}/resumeResume a vehicle on hold (Cypress or the organization's admin)A person'sVEHICLES.UPDATED
delist_vehiclePOST /vehicles/{id}/delistDelist a live vehicle: at once without an open offer; with one, Cypress reviews a seller's requestA person'sVEHICLES.UPDATED
undo_vehicle_archivePOST /vehicles/{id}/archive/undoPut a vehicle you archived at once back where it was, within 24 hours (since 1.9.0)A person'sVEHICLES.UPDATED
dispose_vehiclePOST /vehicles/{id}/disposeCypress archives a vehicle in one step, with who is responsible and the decisionCypress staff (CM token)VEHICLES.UPDATED
change_vehicles_statusPOST /vehicles/statusThe same status step for up to 500 vehiclesA person'sVEHICLES.UPDATED per vehicle
request_vehicle_archivePOST /vehicles/{id}/archive-requestSold elsewhere, or archive: at once without an open offer or a sale in progress; otherwise Cypress reviews it. Since 1.9.0 its dry run says which path (AT_ONCE or CYPRESS_REVIEW) and whyA person'sVEHICLES.DISPOSITION.STAGED
delete_vehiclesPOST /vehicles/deleteDelete up to 500 vehicles that have not gone to marketA person'sVEHICLES.DELETED per vehicle (opt-in)

Price and offers

ToolRESTDoesAgentWebhook
apply_pricing_rulePOST /vehicles/{id}/apply-pricing-ruleEvaluate the pricing rules for a vehicle; with confirm, apply the outcome (its dry run is the screen's preview)A person'sVEHICLES.UPDATED
apply_pricing_rulesPOST /vehicles/apply-pricing-rulesEvaluate (and with confirm, apply) the pricing rules across many vehicles in review (or approved), as apply_pricing_rule does; any other status is named and left alone (its dry run is the screen's preview). Since 1.9.0 a car in review is listed without being approved first, each answer names the rule that matched (ruleName), and the preview (no confirm) judges a draft as if it were in reviewA person'sVEHICLES.UPDATED per vehicle whose status moved
set_vehicle_offer_rulesPUT /vehicles/{id}/offer-rulesAuto-accept above and auto-decline below, on a live vehicleA person'sVEHICLES.UPDATED
revalue_vehiclePOST /vehicles/{id}/revalueValue a vehicle again nowYesVEHICLES.UPDATED when the new valuation lands
revalue_vehiclesPOST /vehicles/revalueValue up to 200 vehicles againYesVEHICLES.UPDATED per vehicle, as each valuation lands
set_floor_pricesPOST /vehicles/floor-pricesA floor for up to 500 vehicles: an amount, from each vehicle's retail valuation, or (since 1.9.0) a percent over or under its latest wholesale (wholesale-percent; a valuation older than 30 days only with allowStale); its dry run works out every floorA person'sVEHICLES.UPDATED per vehicle
set_listing_pricesPOST /vehicles/listing-pricesA listing price for up to 500 vehicles: an amount, or from each vehicle's floorYes, at or above each floor, never under a live offer or a saleVEHICLES.UPDATED per vehicle

Add and edit

ToolRESTDoesAgentWebhook
add_vehiclePOST /fleet/vehiclesThe fleet page's Add vehicle: the VIN decoded, and valued at once when it is complete; since 1.9.0 with keyCount and the seller's damageNoteYesVEHICLES.CREATED
edit_vehiclePATCH /fleet/vehicles/{id}The vehicle panel's edits: specs, location, condition, mileage, fleet, prices, visibility; since 1.9.0 keyCount and damageNote, and a condition change is told to every buyer with an open offerYes, but never floorPrice; targetPrice at or above the floorVEHICLES.UPDATED
assign_vehicles_to_fleetPOST /vehicles/fleetPut up to 500 vehicles in one fleet, or take them out of their fleetYesVEHICLES.UPDATED per vehicle

add_vehicle is the app's form; create_vehicle (an API key) pushes a full record from your own system with your ids, and push_vehicles up to 500 of them (see Pushing inventory).

Labels

ToolRESTDoesAgentWebhook
list_vehicle_labelsGET /vehicles/{id}/labelsA vehicle's labels and their historyYes—
add_vehicle_labelsPOST /vehicles/{id}/labelsPut one or more labels on a vehicle (by hand)YesVEHICLES.UPDATED
remove_vehicle_labelsPOST /vehicles/{id}/labels/removeTake one or more labels off a vehicle (by hand)YesVEHICLES.UPDATED
edit_labels_on_vehiclesPOST /vehicles/labelsAdd and remove labels across many vehicles in one goYesVEHICLES.UPDATED per vehicle

Pictures, videos and the inspection report

ToolRESTDoesAgentWebhook
list_vehicle_photosGET /vehicles/{id}/photosA vehicle's pictures and videos, in their order, with linksYes—
add_vehicle_photoPOST /vehicles/{id}/photosUpload one picture to a vehicleYesVEHICLES.UPDATED
remove_vehicle_photoDELETE /vehicles/{id}/photos/{photoId}Delete one of a vehicle's picturesYesVEHICLES.UPDATED
set_vehicle_cover_photoPOST /vehicles/{id}/photos/{photoId}/coverMake one picture the vehicle's coverYesVEHICLES.UPDATED
reorder_vehicle_photosPUT /vehicles/{id}/photos/orderSet the order of a vehicle's picturesYesVEHICLES.UPDATED
add_vehicle_videoPOST /vehicles/{id}/videosUpload one video to a vehicleYesVEHICLES.UPDATED
remove_vehicle_videoDELETE /vehicles/{id}/videos/{videoId}Delete one of a vehicle's videosYesVEHICLES.UPDATED
get_vehicle_history_reportGET /vehicles/{id}/history-reportThe third-party inspection report attached to a vehicleYes—
attach_vehicle_history_reportPOST /vehicles/{id}/history-reportAttach a third-party inspection report (a Manheim condition report) by its linkYesVEHICLES.UPDATED
list_vehicle_damagesGET /vehicles/{id}/damagesThe damage lines the seller declared on a vehicle, with their pictures (since 1.9.0)Yes—
add_vehicle_damagePOST /vehicles/{id}/damagesDeclare a damage line: area, description, severity and an optional picture (a DAMAGE photo, never the cover); buyers with an open offer are told (since 1.9.0)A person'sVEHICLES.UPDATED
remove_vehicle_damageDELETE /vehicles/{id}/damages/{damageId}Take back a damage line declared by mistake (its picture stays among the photos) (since 1.9.0)A person'sVEHICLES.UPDATED
ToolRESTDoesAgentWebhook
list_vehicle_share_linksGET /vehicles/{id}/share-linksA vehicle's share links (Direct Links) with their commissionYes—
create_vehicle_share_linkPOST /vehicles/{id}/share-linksA link that shows one vehicle to whoever holds it (Direct Links); since 1.9.0 recipientOrgId addresses it to one buyer companyYesVEHICLES.UPDATED; the buyer it is addressed to, MARKETPLACE.SHARE.RECEIVED
create_share_linksPOST /vehicles/share-linksOne share link per vehicle, for many vehiclesYesVEHICLES.UPDATED per vehicle
revoke_share_linksPOST /vehicles/share-links/revokeStop every share link of the vehicles namedYesVEHICLES.UPDATED per vehicle
list_share_link_visitorsGET /vehicles/{id}/share-links/{linkId}/visitorsThe buyer companies that opened a share linkYes—
set_vehicles_visibilityPOST /vehicles/visibilityPublic on the marketplace, or only through share linksYesVEHICLES.UPDATED
set_vehicles_on_storefrontPOST /vehicles/storefrontPut vehicles on the organization's public storefront, or take them offYesVEHICLES.UPDATED

More on a vehicle

ToolRESTDoesAgentWebhook
list_labelsGET /labelsYour organization's labels and Cypress's global onesYes—
create_labelPOST /labelsCreate one of your organization's labelsYesORGANIZATION.UPDATED
list_pricing_rulesGET /pricing-rulesYour organization's pricing rules and Cypress's global ones, in the order they are triedYes—
create_pricing_rulePOST /pricing-rulesA rule that approves and lists, rejects, or sends to review the vehicles it matchesA person'sORGANIZATION.UPDATED
update_pricing_rulePATCH /pricing-rules/{id}Change one of your own rules: switch it on or off, AUTO or NOTIFY_CM, its conditions and figures; a dry run answers the rule as it would be (since 1.9.0)A person'sORGANIZATION.UPDATED
read_import_filePOST /imports/readA CSV or Excel file read as the Import screen reads it: its columns matched and each row in the import's shape (nothing is saved)Yes—
import_vehiclesPOST /importsThe Import screen: create new VINs, update existing ones, stage archives (dry run first). Since 1.9.0 mode: "stage" holds it for review with each row's exceptions, and a location alias resolves a row's locationA person's— (VEHICLES.IMPORT.STAGED when staged)
list_importsGET /importsThe organization's recent import batches with their progressYes—
get_importGET /imports/{batchId}One import batch: its progress and every row's result; a staged import's rows with their exceptions and decisions (since 1.9.0)Yes—
decide_import_rowPATCH /imports/{batchId}/rows/{rowId}Settle a staged row: KEEP or SKIP, map its location (and remember the alias), or fix its odometer (since 1.9.0)A person's—
apply_importPOST /imports/{batchId}/applyRun a staged import with its rows as decided, once every exception is settled (since 1.9.0)A person'sVEHICLES.IMPORT.APPLIED
appraise_vinPOST /appraisalsWhat a VIN is worth now, a suggested floor and target, and a sell-or-hold read (nothing is saved)Yes—
estimate_valuePOST /valuations/estimateWhat a car is worth to a dealer, how sure that is and what would make it surer, from a VIN or a year, make and model (nothing is saved)Yes—

Planning

ToolRESTDoesAgentWebhook
get_sell_forecastGET /planning/forecastThe next weeks for your lots: dealer demand and other sellers' supply, as rangesYes—
get_plan_demandGET /planning/demandPlanned dealer demand per lot, and per lot and sale window (counts only)Yes—
get_market_boardGET /planning/market-boardWhat dealers want and what sellers plan to bring, across Cypress, anonymouslyYes—
get_plan_executionGET /planning/executionThe quarter's execution: each handed-off vehicle's stage, ask, best offer and sale against its plan valueYes—
list_window_reviewsGET /planning/reviewsPlanned against executed per closed window, what became of each vehicle, and the roll-upYes—
list_plan_tasksGET /planning/tasksThe tasks behind a side's quarter plan, open and done, with what each is aboutYes—
list_sell_decisionsGET /planning/decisionsSequoia's suggestions and their answers on the sell plan, with its last runYes—
list_plan_groupsGET /planning/groupsThe fleet's planning groups with their sizes, and the groups Sequoia suggestsYes—
get_plan_cost_assumptionsGET /planning/cost-assumptionsWeekly running cost and contribution per vehicle class, beside the baselineYes—
get_vehicle_plan_costsGET /planning/vehicles/{id}/cost-assumptionsA vehicle's weekly running cost and contribution, where it overrides its classYes—
get_vehicle_planned_demandGET /vehicles/{id}/planned-demandHow many dealers plan to buy a vehicle like one of yoursYes—
schedule_plan_vehiclesPOST /planning/moves/windowsSchedule, reschedule or unschedule vehicles across several sale windows in one plan versionYesPLAN.VEHICLE.SCHEDULED
allocate_plan_lotPOST /planning/lots/allocate"Schedule 12 of the 2021 Sentras in October": the best N of a lot or group, spread over a month's windowsYesPLAN.VEHICLE.SCHEDULED
create_plan_groupPOST /planning/groupsA named group of the fleet, with a rule or withoutYes—
update_plan_groupPATCH /planning/groups/{id}Rename a group, recolour it or change its ruleYes—
remove_plan_groupDELETE /planning/groups/{id}Delete a group; its vehicles are left in no groupA person's—
apply_plan_groupPOST /planning/groups/{id}/applyThe group becomes what its rule matches now, minus the vehicles you leave outYes—
set_plan_group_membersPOST /planning/groups/membersHand-pick vehicles into a group (or out of any group)Yes—
add_plan_trackPOST /planning/tracksA custom track: a name, the objective it ranks by, the posture Sell takesA person's—
change_plan_trackPATCH /planning/tracks/{id}Rename a track, or change its objective or postureYes, never posture—
remove_plan_trackDELETE /planning/tracks/{id}Delete a track; its vehicles move to the General trackA person's—
remove_plan_blockerPOST /planning/blockers/{id}/removeRemove an open blocker that should never have been there, with the reasonA person's—
set_plan_cost_assumptionsPUT /planning/cost-assumptionsSet (or clear with null) weekly running cost and contribution per vehicle classYes—
set_vehicle_plan_costsPUT /planning/vehicles/{id}/cost-assumptionsOverride (or clear) one vehicle's weekly running cost and contributionYes—
update_plan_vehicle_detailsPATCH /planning/vehicles/{id}/detailsYear, make, model, odometer, condition, colours, Unit # or location of a vehicle that lives only in planningYes—
answer_sell_decisionPATCH /planning/decisions/{id}Accept, dismiss or put off one of Sequoia's suggestions on the sell planYesINSIGHT.ANSWERED
add_window_review_feedbackPOST /planning/reviews/{id}/feedbackAgree, partly agree or disagree with a sale window's review, in wordsA person's—
request_planningPOST /organization/planning-requestAsk Cypress to switch the Planning product on for your organizationA person's—
get_sell_deskGET /staff/planning/sell-deskEvery seller's lots in the quarter's open windows, with the dealers whose targets match themCypress staff (CM token)—

Buy planning

ToolRESTDoesAgentWebhook
get_buy_planGET /buy-planning/planThe buy plan as its page shows it: settings, the quarter and its approval, targets with progress. quarter.spent is the page's "spent" (vehicles already bought), split into spentInPlan and spentOutsidePlan; closings in progress are inClosingAmount, and spentOrInClosing adds them. See The plan's quarter. spent changed in 1.9.0Yes—
get_buy_forecastGET /buy-planning/forecastThe next weeks for your targets: what fits now, and what sellers plan to bringYes—
get_buy_fitGET /buy-planning/fitFor listings you are looking at: the target each fits, and how wellYes—
get_buy_match_analysisGET /buy-planning/targets/{id}/matches/{vehicleId}/analysisOne listing against one of your targets: price position, trend, timing, your fit and budgetYes—
search_buy_catalogGET /buy-planning/catalogThe makes, models, trims, bodies and fuels Cypress has seen, to name in a targetYes—
list_buy_decisionsGET /buy-planning/decisionsSequoia's suggestions and their answers on the buy plan, with its last runYes—
set_buy_plan_settingsPUT /buy-planning/planWhere you buy, how you hear about matches, and the default track for new targetsYes—
answer_buy_decisionPATCH /buy-planning/decisions/{id}Accept, dismiss or put off one of Sequoia's suggestions on the buy planYesINSIGHT.ANSWERED
request_buy_bundlePOST /buy-planning/targets/{id}/bundle-requestsAsk Cypress to work several of a target's matches from one seller as a bundleA person's—
request_buy_planningPOST /organization/buy-planning-requestAsk Cypress to switch Buy planning on for your organizationA person's—
get_buy_boardGET /staff/buy-planning/boardThe demand board: every dealer's open targets and what fits them, with both sides' limitsCypress staff (CM token)—

CRM

ToolRESTDoesAgentWebhook
get_contact_deliverabilityGET /contacts/{id}/deliverabilityWhether a contact's address can still be mailed, and why notYes—
suggest_contact_businessGET /contacts/{id}/business-suggestionThe business of your book an unattached contact probably works atYes—
get_contact_engagementGET /contacts/{id}/engagementA contact's engagement with you: the cars they viewed, saved and offered on, the emails they openedYes—
get_contact_timelineGET /contacts/{id}/timelineEverything that happened with a contact, newest firstYes—
get_contact_insightGET /contacts/{id}/insightSakura's read on a customer: a profile label, what it sees, and what to do nextYes—
get_business_engagementGET /businesses/{id}/engagementA business's engagement with you, all its people mergedYes—
get_business_timelineGET /businesses/{id}/timelineA business's history: its own record, its people's and its pipeline, newest firstYes—
get_business_insightGET /businesses/{id}/insightSakura's read on a business, at the company grainYes—
get_deal_timelineGET /deals/{id}/timelineEverything on a deal: what was said and written, stage moves, cars added and droppedYes—
get_deal_insightGET /deals/{id}/insightSakura's read on a deal: where it stands, the next action and the channel for itYes—
list_deal_contactsGET /deals/{id}/contactsA deal's point of contact and everyone else on it, with their roleYes—
get_crm_analyticsGET /crm/analyticsThe acquisition and sales funnels, KPIs, stages, lost reasons and sources of your bookYes—
get_crm_insightGET /crm/insightSakura's summary of the whole CRM: what needs youYes—
delete_contactPOST /contacts/{id}/deleteDelete a contact with its notes, interactions, tasks and change historyA person'sCONTACT.DELETED
delete_businessPOST /businesses/{id}/deleteDelete a company that has no deals; its people stay, unattachedA person'sBUSINESS.DELETED
delete_dealPOST /deals/{id}/deleteDelete a deal that never reached a real offerA person'sDEAL.DELETED
add_business_from_organizationPOST /businesses/from-organizationA company that came through your share links (or an organization you picked) as a business of your bookYesBUSINESS.CREATED
add_deal_contactPOST /deals/{id}/contactsPut a contact of your book on a deal, with their role, or make them its point of contactYes—
remove_deal_contactPOST /deals/{id}/contacts/removeRemove a contact from a deal (the deal and the contact stay)Yes—
add_deal_vehiclesPOST /deals/{id}/vehiclesAdd up to 200 of your vehicles to a dealYes—
remove_deal_vehiclesPOST /deals/{id}/vehicles/removeDrop cars from a deal (kept as DROPPED) or remove themYes—
import_crm_recordsPOST /crm/importsThe CRM import: up to 5,000 rows of companies, people and deals; a dry run previews every rowA person's—
get_crm_importGET /crm/imports/{batchId}An import's status, with what happened to each rowYes—
link_business_organizationPOST /businesses/{id}/link-organizationRecord that a prospect business became an organization on Cypress, or clear a wrong linkCypress staff (CM token)—
list_contact_account_candidatesGET /contacts/{id}/account-candidatesThe Cypress accounts a contact could be: their own addresses, or people at their company's organizationCypress staff (CM token)—
link_contact_accountPOST /contacts/{id}/link-accountRecord that a contact is a person with an account on CypressCypress staff (CM token)—

Marketing

ToolRESTDoesAgentWebhook
set_campaign_contentPATCH /campaigns/{id}/contentA campaign's content kind, its promotion, its message document, reply-to and vehicle sheetYes—
preview_campaign_emailGET /campaigns/{id}/previewThe campaign email rendered as an inbox shows it, for a sample contactYes—
list_campaign_recipientsGET /campaigns/{id}/recipientsWho a campaign mailed, address by address, and how far each email gotA person's—
estimate_campaign_audiencePOST /campaigns/{id}/audience/estimateHow many people an audience would mail, and how many suppression drops, before you save itYes—
preview_campaign_contactsPOST /campaigns/{id}/audience/contactsThe contacts a slice of your book would mail, named, with the book's reachable countYes—
send_campaign_testPOST /campaigns/{id}/testEmail a test of the campaign to up to 20 addresses (in a sandbox: recorded, not sent)A person's—
get_campaign_test_sendGET /campaigns/{id}/testThe last test send: its status, how many it went to and how many were deliveredYes—
list_campaign_audience_candidatesPOST /campaigns/{id}/audience/candidatesThe companies a filter audience would address, before exclusionsCypress staff (CM token)—
search_campaign_organizationsGET /campaigns/organizationsBusiness organizations on Cypress, for a cherry-pick audienceCypress staff (CM token)—
edit_platform_campaignPATCH /campaigns/{id}/platformThe whole campaign editor for Cypress staff: platform audiences, owner, statusCypress staff (CM token)—
send_platform_campaign_nowPOST /campaigns/{id}/platform/sendSend any campaign to its audience now, platform audiences included (in a sandbox: recorded, not sent)Cypress staff (CM token)CAMPAIGN.SENT
get_message_templateGET /message-templates/{id}A message template with the version being edited (the draft, else the published one)Yes—
create_message_templatePOST /message-templates/draftsA new, empty message template of your organizationYes—
save_message_template_draftPATCH /message-templates/{id}Write a template's name, category, subject and document (the draft; campaigns are unchanged)Yes—
archive_message_templateDELETE /message-templates/{id}Take a template out of the library (it is kept, never deleted)A person's—
clone_message_templatePOST /message-templates/{id}/cloneA full copy of a template (yours or Cypress's) into your libraryYes—
publish_message_templatePOST /message-templates/{id}/publishMake a template's draft its live version, usable in campaignsA person's—
list_message_template_versionsGET /message-templates/{id}/versionsA template's published versions, newest firstYes—
restore_message_template_versionPOST /message-templates/{id}/versions/{versionId}/restoreCopy a published version into a template's draftYes—
get_engagement_overviewGET /marketing/analytics/overviewThe engagement report of one campaign, promotion, vehicle or deal: mail, visits, saves, offers, temperatureYes—
get_engagement_summaryGET /marketing/analytics/summaryEvery campaign, promotion or vehicle of yours with its numbers and temperatureYes—
get_engagement_breakdownsGET /marketing/analytics/breakdownsEngagement by source, device and kind of visitor, for one campaign, promotion, vehicle or dealYes—
get_engagement_by_vehicleGET /marketing/analytics/by-vehicleEach car's views, saves and offers within one campaign, promotion, vehicle or dealYes—
get_engagement_flowGET /marketing/analytics/sankeyWhere traffic came from, which cars it landed on, and what it didYes—
list_engaged_visitorsGET /marketing/analytics/visitorsThe people and companies who engaged with one campaign, promotion, vehicle or dealA person's—
list_warm_customersGET /marketing/analytics/customersEveryone engaging with what is yours in a period, matched to your bookA person's—
get_engaged_visitorGET /marketing/analytics/actors/{actorKey}One person's or company's full engagement history with what is yoursA person's—

Promotions

ToolRESTDoesAgentWebhook
list_promotionsGET /promotionsYour promotions (curated sets of cars with their own page), with their state and countsYes—
get_promotionGET /promotions/{id}One promotion: its copy, dates, visibility, cars or filters, featured cars and heroYes—
create_promotionPOST /promotionsA new promotion (a draft): a hand-picked list of cars, or a list kept by filtersYesPROMOTION.UPDATED
update_promotionPATCH /promotions/{id}A promotion's copy, dates, visibility, cars or filters, and featured carsYesPROMOTION.UPDATED
publish_promotionPOST /promotions/{id}/publishPut a promotion live (its page, on your storefront or the marketplace)A person'sPROMOTION.UPDATED
pause_promotionPOST /promotions/{id}/pauseTake a live promotion's page down for a whileYesPROMOTION.UPDATED
archive_promotionPOST /promotions/{id}/archiveEnd a promotion: its page comes down and it leaves the working listA person'sPROMOTION.UPDATED
delete_promotionDELETE /promotions/{id}Delete a promotion that never sent mail; one that did answers 409 (archive it, and its history stays)A person'sPROMOTION.UPDATED
get_promotion_insightGET /promotions/{id}/insightSakura's read of how a promotion is doingYes—
upload_promotion_heroPOST /promotions/{id}/heroUpload the picture at the top of a promotion's page and emailYes—
generate_promotion_heroPOST /promotions/{id}/hero/generateAn AI-made hero picture for a promotion, from its name and carsYes—

Offers

ToolRESTDoesAgentWebhook
make_offerPOST /marketplace/vehicles/{id}/offersOffer an amount on a vehicle for sale, as the Make Offer button doesA person'sOFFERS.CREATED
buy_vehicle_nowPOST /marketplace/vehicles/{id}/buyBuy now: an offer at the asking price, accepted at once, and the closing startsA person'sOFFERS.CREATED
accept_counter_offerPOST /offers/{id}/accept-counterAccept the seller's counter on an offer you made: the sale is bindingA person'sOFFERS.ACCEPTED
counter_back_offerPOST /offers/{id}/counter-backCounter the seller's counter: your offer becomes the new amount, back with the sellerA person's—
list_offers_madeGET /offers/madeYour organization's offers as a buyer, with the vehicle, the seller's counter and its messageYes—
list_offer_activityGET /offers/{id}/activityThe history of an offer you made, as the buyer sees itYes—
read_offer_with_sakuraPOST /offers/{id}/sakura-readSakura's advice on an offer you made: hold, raise, accept the counter or walk awayYes—
list_offers_receivedGET /offers/receivedOffers on your vehicles with the buyer, your floor and rules, the channel and the commissionA person's—

Marketplace

ToolRESTDoesAgentWebhook
search_marketplaceGET /marketplace/vehiclesVehicles for sale on Cypress, filtered and sortedYes—
get_marketplace_vehicleGET /marketplace/vehicles/{id}One marketplace vehicle: specs, pictures, the seller's standing, the terms and the offer rules a buyer seesYes—
open_share_linkGET /marketplace/share-links/{token}The vehicle behind a share link, as its marketplace page shows it, with the seller's terms and the token to offer with. Since 1.9.0Yes—
list_marketplace_picksGET /marketplace/picksLive vehicles that fit what you bid on, bought and save searches for, each with whyYes—
dismiss_marketplace_pickPOST /marketplace/picks/{vehicleId}/dismiss"Not for me" on a pick, with why: the car never comes back, and cars like it rank lower. Since 1.9.0Yes—
restore_marketplace_pickDELETE /marketplace/picks/{vehicleId}/dismissThe car may be picked for you again. Since 1.9.0Yes—
get_purchase_profileGET /marketplace/purchase-profileYour usual, from your own completed purchases: price, age and mileage bands, makes, models, body classes, states. Since 1.9.0Yes—
list_saved_vehiclesGET /marketplace/saved-vehiclesThe vehicles you saved (your watchlist), with the price when you saved eachYes—
save_vehiclePOST /marketplace/saved-vehiclesAdd a marketplace vehicle to your saved vehiclesYes—
unsave_vehicleDELETE /marketplace/saved-vehicles/{vehicleId}Take a vehicle off your saved vehiclesYes—
list_marketplace_alertsGET /marketplace/alertsYour saved searches (alerts), with their criteria, how they notify you and how many cars matchedYes—
create_marketplace_alertPOST /marketplace/alertsA saved search that tells you when a matching vehicle is listedYes—
update_marketplace_alertPATCH /marketplace/alerts/{id}Change a saved search's criteria or how it tells youYes—
delete_marketplace_alertDELETE /marketplace/alerts/{id}Switch a saved search offYes—
list_marketplace_alert_matchesGET /marketplace/alerts/{id}/matchesThe vehicles still for sale that a saved search matched (up to 50)Yes—

Closings

ToolRESTDoesAgentWebhook
list_closing_activityGET /closings/{id}/activityWhat happened in a sale and its closing, who did it and whenYes—
list_closing_incidentsGET /closings/{id}/incidentsThe problems reported on a closing, with their thread and statusYes—
report_closing_incidentPOST /closings/{id}/incidentsTell Cypress something is wrong with a closing in progressYesCLOSING.UPDATED
message_closing_incidentPOST /closings/{id}/incidents/{incidentId}/messagesWrite in the thread of an incident you reportedYesCLOSING.UPDATED
read_closing_with_sapelePOST /closings/{id}/sapele-readSapele's read of a closing: its health, the next step, who owes it and how urgent it isYes—
get_closing_deal_setupGET /closings/{id}/deal-setupThe deal's facts (pickup, bank, lender, title, transport, custom values) and each side's confirmationA person's—
update_closing_deal_setupPATCH /closings/{id}/deal-setupChoose the deal's pickup, bank account, lender, title address or transporter, or set custom valuesA person'sCLOSING.UPDATED
enable_closing_deal_setupPOST /closings/{id}/deal-setupGive a closing that predates Deal Setup its Deal SetupA person's—
confirm_closing_deal_setupPOST /closings/{id}/deal-setup/confirmSign off your side of Deal Setup; the second sign-off bills the commission and opens the Bill of SaleA person'sCLOSING.UPDATED
get_deal_setup_impactGET /closings/{id}/deal-setup/impactWhich issued documents a Deal Setup change would make wrong, and whose signatures it would voidYes—
get_deal_setup_core_factsGET /closings/{id}/deal-setup/core-factsThe deal's core facts (names, addresses) that differ from the records they came fromA person's—
refresh_deal_setup_core_factsPOST /closings/{id}/deal-setup/core-factsFill the deal's missing core facts from your records, or repoint named onesA person's—
get_closing_checklist_gapsGET /closings/{id}/document-checklistThe documents the organization's checklist asks for that this closing does not carryYes—
sync_closing_checklistPOST /closings/{id}/document-checklistAdd the checklist's missing document slots to a closing (Cypress may also change or drop them)A person's—
get_closing_step_blockersGET /closings/{id}/steps/{stepKey}/executionThe documents that must be fully signed before a step can complete, and how to clear eachA person's—
upload_closing_documentPOST /closings/{id}/steps/{stepKey}/documentsUpload a document (PDF or picture) to a step: it goes to reviewA person'sCLOSING.UPDATED
get_closing_documentGET /closings/{id}/documents/{documentId}One document of a closing, with a link to view it (valid for an hour)A person's—
delete_closing_documentDELETE /closings/{id}/documents/{documentId}Remove a document that was not accepted; one out for signature needs voidSignaturesA person'sCLOSING.UPDATED
get_closing_document_optionsGET /closings/{id}/steps/{stepKey}/generationThe templates a step's document can be made from, and what each would print blankYes—
generate_closing_documentPOST /closings/{id}/steps/{stepKey}/generateRender a step's document from a template with the deal's facts and file itA person'sCLOSING.DOCUMENT.GENERATED
get_closing_signaturesGET /closings/{id}/steps/{stepKey}/signaturesWho signs a step's document, in what order, and where each signature standsA person's—
send_closing_document_for_signaturePOST /closings/{id}/steps/{stepKey}/signaturesEmail each party its signing link for a step's document, in order (in a sandbox: recorded, not sent)A person'sCLOSING.UPDATED
correct_signer_emailPOST /closings/{id}/documents/{documentId}/signatures/{party}/emailPoint a signing request at a corrected email and send the link there (in a sandbox: recorded, not sent)A person's—
get_commission_invoicePOST /closings/{id}/commission-invoiceThe seller's commission invoice for a closing, raised if it never wasA person's—
start_commission_paymentPOST /closings/{id}/commission-invoice/checkoutStripe's payment form for the seller's commission, for the person to pay by card in an app Cypress made (Grove). Since 1.11.0A person's, in Cypress's own app—

Closings: Cypress staff

ToolRESTDoesAgentWebhook
cancel_closingPOST /closings/{id}/cancelCancel a closing in progress, with who is responsible and what becomes of the vehicleCypress staff (CM token)CLOSING.CANCELLED
correct_closing_commissionPATCH /closings/{id}/commission-schemeChange the commission scheme a deal carries, until its fee is invoicedCypress staff (CM token)—
record_off_platform_closingPOST /closings/{id}/off-platformAttest the steps that happened outside Cypress; all of them close the deal and the vehicle is soldCypress staff (CM token)CLOSING.COMPLETED
regenerate_closing_feePOST /closings/{id}/fee/regenerateRe-run the fee step's invoicing when it failedCypress staff (CM token)—
waive_closing_requirementPATCH /closings/{id}/requirements/{requirementId}Waive (or restore) one required document on one closingCypress staff (CM token)—
rollback_closingPOST /closings/{id}/rollbackReopen a closing from a step: that step pending again, every later one lockedCypress staff (CM token, or since 1.9.0 a first-party app acting for staff, with closing:write, on its organization's closing)CLOSING.UPDATED
run_closing_staff_actionPOST /closings/{id}/steps/{stepKey}/staff-actionsCypress's step actions: approve or reject an uploaded Bill of Sale, accept it signed offline, confirm a step or a payment (in a sandbox: recorded, not sent)Cypress staff (CM token; since 1.9.0 a first-party app acting for staff may confirm and confirm_payment, with closing:write, on its organization's closing)CLOSING.STEP.COMPLETED
set_closing_incident_statusPOST /closings/{id}/incidents/{incidentId}/statusTake an incident in hand, resolve it or dismiss itCypress staff (CM token)CLOSING.UPDATED
analyze_closing_documentPOST /closings/{id}/documents/{documentId}/analyzeRun Aspen's document analysis on a closing documentCypress staff (CM token)—
review_closing_documentPOST /closings/{id}/documents/{documentId}/reviewAccept a document in review, or reject it with the reason so it is filed againCypress staff (CM token)CLOSING.UPDATED
get_closing_checklistGET /closing-checklistThe documents closings require: Cypress's base list, or an organization's own copyCypress staff (CM token)—
add_closing_checklist_itemPOST /closing-checklistAdd one required document to the base checklist or an organization's copyCypress staff (CM token)—
customize_closing_checklistPOST /closing-checklist/customizeCopy the base checklist for an organization to personalize, or revert it to the baseCypress staff (CM token)—
change_closing_checklist_itemPATCH /closing-checklist/{id}Rename a checklist document, move it, make it optional or required, reorder or archive itCypress staff (CM token)—
archive_closing_checklist_itemDELETE /closing-checklist/{id}Take a document off a checklist (its slot key stays reserved)Cypress staff (CM token)—
assign_document_template_stepPUT /document-templates/{id}/checklist-slotMake a template the document a closing step requires, or clear itCypress staff (CM token)—

Document templates

ToolRESTDoesAgentWebhook
list_document_templatesGET /document-templatesYour organization's closing document templates and Cypress's defaultsYes—
create_document_templatePOST /document-templatesA new template, blank or copied from a Cypress default (a draft)Yes—
get_document_templateGET /document-templates/{id}A template's draft and published layout, and every field it may bindYes—
save_document_template_draftPATCH /document-templates/{id}Rename a template or save its draft layout (never the published version)Yes—
archive_document_templateDELETE /document-templates/{id}Archive a template: closings stop generating from itA person's—
set_document_template_backgroundPOST /document-templates/{id}/backgroundUpload a PDF (1 to 50 pages) the template draws onto, in its draftYes—
remove_document_template_backgroundDELETE /document-templates/{id}/backgroundBack to blank pages, in the draftYes—
get_document_template_stepGET /document-templates/{id}/checklist-slotThe closing step a template's document is required at, if anyYes—
publish_document_templatePOST /document-templates/{id}/publishMake the draft the live version that closings generate fromA person's—
list_document_template_versionsGET /document-templates/{id}/versionsEvery published version of a template, newest firstYes—
restore_document_template_versionPOST /document-templates/{id}/versions/{versionId}/restoreCopy an earlier version's layout onto the draft (it is not published)Yes—
list_document_imagesGET /document-templates/imagesYour organization's pictures for documents, and the company logo slotYes—
upload_document_imagePOST /document-templates/imagesUpload a PNG or JPEG your templates can placeYes—
ToolRESTDoesAgentWebhook
get_storefrontGET /organization/storefrontYour public storefront: on or off, its address, title, headline, colors, picturesYes—
update_storefrontPATCH /organization/storefrontPublish or take down your storefront, or change its title, headline and colorA person'sORGANIZATION.UPDATED
set_storefront_bannerPOST /organization/storefront/bannerUpload the picture across the top of your storefrontYesORGANIZATION.UPDATED
set_storefront_logoPOST /organization/storefront/logoUpload the organization's logo (the storefront and your documents use it)YesORGANIZATION.UPDATED
put_fleet_on_storefrontPOST /organization/storefront/backfillShow every vehicle eligible for the storefront on it, in one goYes—
revoke_vehicle_share_linkPOST /vehicles/{id}/share-links/{linkId}/revokeRevoke one of a vehicle's share links: whoever holds it no longer sees the vehicleYes—
reactivate_vehicle_share_linkPOST /vehicles/{id}/share-links/{linkId}/reactivateReactivate a revoked share link (an expired one needs a new expiry)Yes—
delete_vehicle_share_linkDELETE /vehicles/{id}/share-links/{linkId}Delete one share link (it is revoked first; its past visits stay in the market history)Yes—
list_vehicles_on_marketGET /vehicles/on-marketYour approved, live, held, under-offer, accepted and recently sold vehicles, with views, saves and offersYes—
refresh_vehicle_sakura_readPOST /vehicles/{id}/sakura-readA fresh Sakura read of one of your vehicles: hold, reprice or sell, and whyYes—

Organization and settings

ToolRESTDoesAgentWebhook
get_dealer_requestGET /organization/dealer-requestAn individual's latest request to become a dealer, and the business checklist it needsA person's—
request_dealer_accountPOST /organization/dealer-requestAn individual asks Cypress to make its account a businessA person's (no API key)ORGANIZATION.UPDATED
get_organization_profileGET /organization/profileThe organization's name, address, tax id and primary contact, its Cypress Manager, and what Cypress may do for itA person's—
update_organization_profilePATCH /organization/profileChange the organization's name, address, tax id or primary contact (only the fields sent)A person'sORGANIZATION.UPDATED
set_cypress_delegationPATCH /organization/delegationConsent: whether Cypress may act on your behalf, decide review offers, make buyer offers, and until when (expiresAt, since 1.9.0)A person's (no API key)ORGANIZATION.UPDATED
get_onboarding_statusGET /organization/onboardingThe organization's status and, while provisional, the onboarding items still openYes—
list_locationsGET /locationsThe lots and yards vehicles are picked up from, active first, with their aliases (since 1.9.0)Yes—
create_locationPOST /locationsAdd a lot or yard (names are unique in the organization)Yes, but never aliasesORGANIZATION.UPDATED
update_locationPATCH /locations/{locationId}Change a location's details (address, contact, PO number, since 1.9.0 its aliases, the other names files use for it), or bring an archived one back (isActive)Yes, but never aliasesORGANIZATION.UPDATED
archive_locationDELETE /locations/{locationId}Archive a location (kept for history; update_location brings it back)A person'sORGANIZATION.UPDATED
list_lendersGET /lendersThe lenders that hold liens on the organization's vehicles, with their payoff detailsA person's—
create_lenderPOST /lendersAdd a lender and where its payoffs goA person's (no API key)BANKING.UPDATED
update_lenderPATCH /lenders/{id}Change a lender's contact or payoff details (only the fields sent)A person's (no API key)BANKING.UPDATED
archive_lenderDELETE /lenders/{id}Archive a lender (kept for history; update_lender with isActive brings it back)A person's (no API key)BANKING.UPDATED
list_bank_accountsGET /bank-accountsThe accounts buyers and Cypress pay the organization into, with their numbersA person's—
create_bank_accountPOST /bank-accountsAdd an account the organization is paid intoA person's (no API key)BANKING.UPDATED
update_bank_accountPATCH /bank-accounts/{id}Change a bank account's details (only the fields sent)A person's (no API key)BANKING.UPDATED
archive_bank_accountDELETE /bank-accounts/{id}Archive a bank account (kept for history; update_bank_account with isActive brings it back)A person's (no API key)BANKING.UPDATED
list_transportersGET /transportersThe haulers a closing sheet picks fromYes—
create_transporterPOST /transportersSave a hauler for later closingsYesORGANIZATION.UPDATED
update_transporterPATCH /transporters/{id}Change a saved hauler (closings that already copied it keep their copy)YesORGANIZATION.UPDATED
archive_transporterDELETE /transporters/{id}Archive a saved hauler (never deleted)A person'sORGANIZATION.UPDATED
list_title_addressesGET /title-addressesThe addresses a closing sheet mails titles toYes—
create_title_addressPOST /title-addressesSave where titles are mailedYesORGANIZATION.UPDATED
update_title_addressPATCH /title-addresses/{id}Change a saved address (closings that already copied it keep their copy)YesORGANIZATION.UPDATED
archive_title_addressDELETE /title-addresses/{id}Archive a saved address (never deleted)A person'sORGANIZATION.UPDATED
list_custom_fieldsGET /custom-fieldsThe fields your document templates bind as custom.seller.<key> or custom.buyer.<key>Yes—
create_custom_fieldPOST /custom-fieldsAdd a field your document templates can bind (its key never changes)YesORGANIZATION.UPDATED
update_custom_fieldPATCH /custom-fields/{id}Change a custom field's label, default, requirement or order (never its key)YesORGANIZATION.UPDATED
archive_custom_fieldDELETE /custom-fields/{id}Archive a custom field (sheets that carry it keep their values)A person'sORGANIZATION.UPDATED
list_org_documentsGET /organization/documentsThe W-9, dealer licenses and other documents, every card with its history and reviewA person's—
upload_org_documentPOST /organization/documentsUpload a W-9, a dealer license or another document (a new card, or a new version of one)A person'sORGANIZATION.UPDATED
remove_org_documentDELETE /organization/documents/slots/{slotId}Remove one of the organization's document cards (an admin's; a W-9 is replaced, never removed)A person'sORGANIZATION.UPDATED
get_seller_termsGET /seller-termsThe organization's seller terms: every version, and which is in forceYes—
set_seller_termsPUT /seller-termsSave new seller terms (a new version) and switch them on or offA person'sORGANIZATION.UPDATED

Members

ToolRESTDoesAgentWebhook
invite_memberPOST /members/invitationsInvite a person as Fleet Manager or Billing Admin (they get an email to set a password) (in a sandbox: recorded, not sent)A person's (no API key)MEMBER.UPDATED
change_member_rolePUT /members/{userId}/roleMake a member an Admin, Fleet Manager or Billing Admin (never your own role, never an agent's)A person's (no API key)MEMBER.UPDATED
remove_memberDELETE /members/{userId}Take a person out of the organization (never yourself, never the last admin, never an agent)A person's (no API key)MEMBER.UPDATED
update_my_profilePATCH /meChange the first name, last name or phone of the person the token acts forA person's (no API key)—
list_my_activityGET /me/activityThe audit trail of the person (or agent) the token acts for, newest firstYes—

Billing

ToolRESTDoesAgentWebhook
list_invoicesGET /billing/invoicesThe organization's commission invoices, newest first, with what was paid, credited and owedA person's—
get_billing_summaryGET /billing/summaryAuto-pay on file, the ACH credit line and its use, the cycle, deferred and failed batchesA person's—
get_invoice_settingsGET /billing/invoice-settingsThe parts each commission invoice line prints, whether Deal Setup needs a PO, how a close splits into invoices, and a preview lineA person's—
list_credit_movementsGET /billing/credit-ledgerEvery movement of the organization's account credit, newest first (up to 200)A person's—
list_credit_notesGET /billing/credit-notesThe credit notes issued against your invoices, newest first (up to 100)A person's—
list_unapplied_bank_transfersGET /billing/bank-transfersMoney the organization sent by bank transfer that Cypress holds unapplied, with the open invoices it could pay (the organization's admins and billing admins, and Cypress staff for it; since 1.9.0)A person's—
get_invoice_credit_offerGET /billing/invoices/{id}/credit-offerWhat an invoice still owes and how much of your account credit could settle itA person's—

Analytics

ToolRESTDoesAgentWebhook
get_trading_bookGET /analytics/companiesYour sales and purchases by company: units, money, prices against the floorYes—
get_company_reportGET /analytics/companies/{orgId}Your organization's performance report, as seller or as buyerYes—
get_company_insightGET /analytics/companies/{orgId}/insightSakura's one-paragraph read of the performance report, and what to do nextYes—
get_account_profileGET /analytics/accounts/{orgId}What an account buys and sells: yours, or a buyer that bought from youYes—
get_my_engagementGET /analytics/engagementWhat your stock attracts (as seller) or what your people browse (as buyer)Yes—
get_my_profile_insightGET /analytics/profile-insightSakura's read on your organization: the Today cardYes—
suggest_vehicle_buyersGET /vehicles/{id}/suggested-buyersThe buyer companies whose buying history fits one of your vehiclesYes—
suggest_promotion_audienceGET /promotions/{id}/suggested-audienceThe buyer companies a promotion's vehicles fit best: a starting audience a person editsYes—

Mission Control

ToolRESTDoesAgentWebhook
list_interestGET /mission-control/interestThe buyers who saved, returned to or opened your vehicles and have no deal on themA person's—
open_deal_from_interestPOST /mission-control/interest/adoptTurn a buyer's interest in one of your vehicles into a deal at INTERESTEDA person's—

Cypress staff: organizations

ToolRESTDoesAgentWebhook
list_customer_organizationsGET /staff/organizationsThe business organizations on Cypress, newest first, with their onboarding and channelsCypress staff (CM token)—
get_customer_organizationGET /staff/organizations/{id}One organization as BackOffice shows it: details, members, products, billing and ACHCypress staff (CM token)—
create_customer_organizationPOST /staff/organizationsCreate a business organization in onboarding, with its first admin (in a sandbox: recorded, not sent)Cypress staff (CM token)—
update_customer_organizationPATCH /staff/organizations/{id}Name, address, contact and the account managerCypress staff (CM token)ORGANIZATION.UPDATED
change_organization_statusPOST /staff/organizations/{id}/transitionsActivate, suspend, reactivate, reject, block or unblock an organizationCypress staff (CM token)ORGANIZATION.UPDATED
set_organization_profilesPUT /staff/organizations/{id}/profilesSeller, buyer, or bothCypress staff (CM token)ORGANIZATION.UPDATED
get_organization_productGET /staff/organizations/{id}/products/{product}Whether a product is on, who asked for it, and what switching it off keepsCypress staff (CM token)—
switch_organization_productPUT /staff/organizations/{id}/products/{product}Planning, Buy planning or Automations: on or off for one organizationCypress staff (CM token)ORGANIZATION.UPDATED
get_organization_account_rulesGET /staff/organizations/{id}/account-rulesIts kind's rules, its own overrides, the result and what it usedCypress staff (CM token)—
set_organization_account_rulesPUT /staff/organizations/{id}/account-rulesOverride its kind's rules for this one organizationCypress staff (CM token)ORGANIZATION.UPDATED
get_organization_dealer_requestGET /staff/organizations/{id}/dealer-requestThe latest dealer request and the business checklist it needsCypress staff (CM token)—
decide_dealer_requestPOST /staff/organizations/{id}/dealer-requestApprove (the checklist done): the individual becomes a business; or decline, with a reason the person readsCypress staff (CM token)ORGANIZATION.UPDATED
list_organization_activityGET /staff/organizations/{id}/activityThe organization's audit trail, newest firstCypress staff (CM token)—
approve_organization_applicationPOST /staff/organizations/{id}/application/approveApprove an organization's registration: limited access, and its admin is emailed (in a sandbox: recorded, not sent)Cypress staff (CM token)—
reject_organization_applicationPOST /staff/organizations/{id}/application/rejectReject an organization's registration: its admin is suspended and the applicant told why (in a sandbox: recorded, not sent)Cypress staff (CM token)—
get_onboarding_checklistGET /staff/organizations/{id}/checklistThe onboarding checklist: each item, its phase and whether it is doneCypress staff (CM token)—
mark_onboarding_checklist_itemPATCH /staff/organizations/{id}/checklistTick or untick one item of the onboarding checklistCypress staff (CM token)—
add_onboarding_checklist_itemPOST /staff/organizations/{id}/checklistA custom item on one organization's onboarding checklistCypress staff (CM token)—
list_organization_documentsGET /staff/organizations/{id}/documentsIts onboarding documents (W-9, dealer license, others), with linksCypress staff (CM token)—
get_organization_documentGET /staff/organizations/{id}/documents/{docId}One document with its review, its AI analysis and a linkCypress staff (CM token)—
upload_organization_documentPOST /staff/organizations/{id}/documentsUpload a W-9, dealer license or other document on an organization's behalfCypress staff (CM token)ORGANIZATION.UPDATED
analyze_organization_documentPOST /staff/organizations/{id}/documents/{docId}/analyzeSapele reads a document and says whether it is complete and validCypress staff (CM token)—
review_organization_documentPOST /staff/organizations/{id}/documents/{docId}/reviewApprove, reject (with a reason) or put under review one documentCypress staff (CM token)ORGANIZATION.UPDATED
remove_organization_document_slotDELETE /staff/organizations/{id}/document-slots/{slotId}Take a document card off an organization (a W-9 is replaced, never removed)Cypress staff (CM token)—
invite_organization_memberPOST /staff/organizations/{id}/membersAdd a person to an organization with a role; they are emailed a sign-in link (in a sandbox: recorded, not sent)Cypress staff (CM token)MEMBER.UPDATED
change_organization_member_rolePUT /staff/organizations/{id}/members/{userId}/roleMake a member an admin, a Fleet Manager or a billing adminCypress staff (CM token)MEMBER.UPDATED
update_organization_member_profilePATCH /staff/organizations/{id}/members/{userId}A member's first name, last name and phoneCypress staff (CM token)MEMBER.UPDATED
revoke_organization_memberDELETE /staff/organizations/{id}/members/{userId}Take a person out of an organization (restore_organization_member brings them back)Cypress staff (CM token)MEMBER.UPDATED
restore_organization_memberPOST /staff/organizations/{id}/members/{userId}/restoreGive a revoked member their access back, with their old roleCypress staff (CM token)MEMBER.UPDATED
send_member_password_resetPOST /staff/organizations/{id}/members/{userId}/password-resetSend a member the password-reset email (to their own address) (in a sandbox: recorded, not sent)Cypress staff (CM token)—
update_organization_billing_detailsPATCH /staff/organizations/{id}/billingTax id, tax exemption, billing emails and billing addressCypress staff (CM token)—
get_organization_invoice_settingsGET /staff/organizations/{id}/invoice-settingsThe parts each commission invoice line prints, whether Deal Setup needs a PO, how a close splits into invoices, and a preview lineCypress staff (CM token)—
update_organization_invoice_settingsPATCH /staff/organizations/{id}/invoice-settingsSet the parts each invoice line prints (in order), require a PO on every deal, or how a close splits into invoicesCypress staff (CM token)—
list_organization_ach_batchesGET /staff/organizations/{id}/ach/batchesThe organization's last 20 ACH conciliations, with their invoicesCypress staff (CM token)—
list_private_customersGET /staff/customersThe private individuals who buy on Cypress, newest firstCypress staff (CM token)—
get_private_customerGET /staff/customers/{id}One private individual's accountCypress staff (CM token)—
resend_customer_confirmationPOST /staff/customers/{id}/resend-confirmationSend the confirm-your-email message again, with a fresh link (in a sandbox: recorded, not sent)Cypress staff (CM token)—
list_cypress_staffGET /staff/teamCypress's own people: Cypress Managers and adminsCypress staff (CM token)—
get_cypress_staff_memberGET /staff/team/{userId}One Cypress staff member and their roleCypress staff (CM token)—
list_cypress_staff_activityGET /staff/team/{userId}/activityA staff member's actions across every organization, newest firstCypress staff (CM token)—
get_default_account_managerGET /staff/platform/default-account-managerWho at Cypress gets the copy of notifications for organizations with no account managerCypress staff (CM token)—
set_default_account_managerPUT /staff/platform/default-account-managerChoose (or clear) the default account managerCypress staff (CM token)—
get_account_rulesGET /staff/platform/account-rulesWhat every individual and every business may do, and how muchCypress staff (CM token)—
set_account_rulesPUT /staff/platform/account-rulesEdit the defaults for every individual and every businessCypress staff (CM token)—

Cypress staff: review queues

ToolRESTDoesAgentWebhook
list_update_requestsGET /staff/update-requestsThe review queue: sellers' floor-price, location and archive requestsCypress staff (CM token)—
get_review_queue_countsGET /staff/update-requests/statsOpen update requests, open archive requests, and archive decisions dueCypress staff (CM token)—
get_update_requestGET /staff/update-requests/{id}One update request with its vehicleCypress staff (CM token)—
get_update_request_impactGET /staff/update-requests/{id}/impactThe open offers a price change would decline, leave in review, or now qualifyCypress staff (CM token)—
reject_update_requestPOST /staff/update-requests/{id}/rejectTurn a request down; the seller is told, and a paused listing resumesCypress staff (CM token)VEHICLES.DISPOSITION.RESOLVED
approve_price_updatePOST /staff/update-requests/{id}/approve-priceApply a seller's new prices; decline, keep or accept the open offers as you sayCypress staff (CM token)VEHICLES.UPDATED
approve_location_updatePOST /staff/update-requests/{id}/approve-locationApply a seller's new pickup location; every open offer is withdrawn and its buyer toldCypress staff (CM token)—
approve_archive_requestPOST /staff/update-requests/{id}/approve-archiveArchive the vehicle as the seller asked: offers withdrawn, a closing in progress cancelledCypress staff (CM token)VEHICLES.DISPOSITION.RESOLVED
list_archived_vehiclesGET /staff/archivesEvery archive record with its vehicle, disposition and Cypress's decisionCypress staff (CM token)—
record_archive_decisionPOST /staff/archives/{id}/decisionNo action, a warning, a penalty fee or an escalation, toward whoever is responsibleCypress staff (CM token)—
roll_back_archivePOST /staff/archives/{id}/rollbackPut an archived vehicle back where it was; its offers and closing stay endedCypress staff (CM token)—
list_pending_label_applicationsGET /staff/label-applicationsLabels a rule wants on a vehicle, waiting for Cypress to approveCypress staff (CM token)—
decide_label_applicationPOST /staff/label-applications/{id}/decisionPut the proposed label on the vehicle, or dismiss itCypress staff (CM token)—

Cypress staff: labels, pricing rules and channels

ToolRESTDoesAgentWebhook
list_platform_labelsGET /staff/labelsCypress's labels and every organization's, with how many vehicles carry eachCypress staff (CM token)—
create_platform_labelPOST /staff/labelsA new vehicle label, for every organization or for oneCypress staff (CM token)—
update_platform_labelPATCH /staff/labels/{id}Rename, recolor, recategorize or switch off a labelCypress staff (CM token)—
delete_platform_labelDELETE /staff/labels/{id}Delete a label no vehicle carries; one in use is switched off insteadCypress staff (CM token)—
list_label_rulesGET /staff/label-rulesThe rules that put labels on vehicles by themselvesCypress staff (CM token)—
create_label_rulePOST /staff/label-rulesA rule that puts a label on the vehicles that meet its conditionsCypress staff (CM token)—
list_platform_pricing_rulesGET /staff/pricing-rulesCypress's pricing rules and the organizations' ownCypress staff (CM token)—
create_platform_pricing_rulePOST /staff/pricing-rulesA rule that approves and lists, rejects, or holds for review the vehicles that meet itCypress staff (CM token)—
update_platform_pricing_rulePATCH /staff/pricing-rules/{id}Change a pricing rule's conditions, outcome, figures, priority or switch it offCypress staff (CM token)—
delete_platform_pricing_ruleDELETE /staff/pricing-rules/{id}Delete a pricing ruleCypress staff (CM token)—
list_sales_channelsGET /staff/channelsThe platform's channels and the organizations' grants, with their commissionCypress staff (CM token)—
grant_sales_channelPOST /staff/channelsAn organization's own grant of a channel, with its commission schemeCypress staff (CM token)ORGANIZATION.UPDATED
update_sales_channelPATCH /staff/channels/{id}Enable or disable a channel, rename it or change its commissionCypress staff (CM token)ORGANIZATION.UPDATED
list_commission_schemesGET /staff/commission-schemesWhat Cypress charges per sale on each channelCypress staff (CM token)—
create_commission_schemePOST /staff/commission-schemesA new commission amount, created switched offCypress staff (CM token)—
update_commission_schemePATCH /staff/commission-schemes/{id}Change a scheme's name or amount, or switch it on or offCypress staff (CM token)—

Cypress staff: the Automation Hub

ToolRESTDoesAgentWebhook
list_hub_automationsGET /staff/automationsCypress's automations and every organization's, with their review stateCypress staff (CM token)—
get_hub_automationGET /staff/automations/{id}One automation with its versions and their graphsCypress staff (CM token)—
create_hub_automationPOST /staff/automationsA Cypress automation (GLOBAL) or one for an organization (ORG), with its first draftCypress staff (CM token)—
update_hub_automationPATCH /staff/automations/{id}Name, category, stages, priority, who it runs for, or switch it on or offCypress staff (CM token)—
delete_hub_automationDELETE /staff/automations/{id}Delete an automation never published (with its dry runs)Cypress staff (CM token)—
save_hub_automation_draftPUT /staff/automations/{id}/draftSave the graph as the draft (a new draft when there is none)Cypress staff (CM token)—
publish_automationPOST /staff/automations/{id}/publishPublish the draft: it replaces the published version and runs (for an organization's, this approves it)Cypress staff (CM token)AUTOMATION.PUBLISHED
send_back_automationPOST /staff/automations/{id}/send-backAnswer a submitted draft with what to changeCypress staff (CM token)AUTOMATION.SENT_BACK
run_hub_automationPOST /staff/automations/{id}/runRun the published version on chosen vehicles (or as its trigger would), for real or as a dry runCypress staff (CM token)—
duplicate_hub_automationPOST /staff/automations/{id}/duplicateA new draft automation copying another's latest graphCypress staff (CM token)—
restore_automation_versionPOST /staff/automations/{id}/versions/{versionId}/restoreMake an earlier version's graph the draft againCypress staff (CM token)—
list_hub_automation_runsGET /staff/automations/runsRuns across the Hub, newest first, with the last day's numbersCypress staff (CM token)—
get_hub_automation_runGET /staff/automations/runs/{runId}One run with its steps and its vehicleCypress staff (CM token)—

Cypress staff: platform activity

Who uses Cypress and what they do, as Admin › Platform activity shows it. Reads only, for a CM token. period is 7, 30 or 90 days or quarter (the quarter so far), in whole UTC days ending yesterday, against as many days before; 30 when left out. Since 1.6.0.

ToolRESTDoesAgentWebhook
get_platform_activity_overviewGET /staff/platform-activity/overviewActive users by side (daily, weekly, in the period), who did the work, and the path from first visit to purchaseCypress staff (CM token)—
get_platform_activity_funnelGET /staff/platform-activity/funnelThe buyer and seller funnels and email reach, for a periodCypress staff (CM token)—
get_platform_activity_sideGET /staff/platform-activity/sides/{side}One side: every action on the list, post-sale by stage, and the most active organizationsCypress staff (CM token)—
list_platform_activity_orgsGET /staff/platform-activity/orgsEvery customer organization and person active in the period or the one beforeCypress staff (CM token)—
get_platform_activity_orgGET /staff/platform-activity/orgs/{id}One customer organization, person by person, and who else worked on itCypress staff (CM token)—
get_platform_activity_teamGET /staff/platform-activity/teamWhat Cypress managers did for customers and for Cypress, how, and the agents on customers' accountsCypress staff (CM token)—
get_platform_activity_managerGET /staff/platform-activity/team/{userId}One Cypress manager: for whom, how, their days and recent actionsCypress staff (CM token)—
get_platform_activity_coming_backGET /staff/platform-activity/coming-backPeople or organizations by the month they were first active, and who returnsCypress staff (CM token)—

Agent quality

How an agent of an app Cypress made performs, and the audit of its flagged answers (Admin › Cedar quality). The app (Grove) sends its benchmark runs and flagged answers and reads the verdicts back on its own token, with agent-quality:write; an API key, a partner app, an agent's token and a CM token are refused. Cypress staff read the runs and give the verdicts. See Agent quality. Since 1.9.0.

ToolRESTDoesAgentWebhook
record_agent_benchmark_runPOST /agent-quality/benchmark-runsSend one benchmark run: the setting, the summary and every question with its answer, marks and time; the same id again replaces itA first-party app's token only—
record_agent_audit_itemsPOST /agent-quality/audit-itemsSend flagged answers for review; one sent again only gains flags, one already decided never changesA first-party app's token only—
list_agent_verdictsGET /agent-quality/verdictsThe organization's verdicts after a time, oldest first, with what to teach and what to add to the benchmarkA first-party app's token only—
list_agent_benchmark_runsGET /agent-quality/benchmark-runsEvery organization's benchmark runs, newest first, with their summaries and gatesCypress staff (CM token)—
get_agent_benchmark_runGET /agent-quality/benchmark-runs/{id}One run with every question: the answer, its marks, errors and timeCypress staff (CM token)—
list_agent_audit_itemsGET /agent-quality/audit-itemsThe flagged answers up for review, or decided, with counts and the queue by flag and organizationCypress staff (CM token)—
decide_agent_audit_itemPOST /agent-quality/audit-items/{id}/verdictOne final verdict: right, wrong (with what the right answer was) or dismissed; teach the organization, add it to the benchmarkCypress staff (CM token)—

Huddle

An organization's conversations, the same rooms people see in Huddle (Cypress) and in Grove: the huddle, conversations (TEAM rooms) and their threads, a person's room with Cedar, deal lanes, and the Inbox. Every call is made as the person or agent the token acts for and sees what they would; an API key is refused. See Huddle. Since 1.9.0.

ToolRESTDoesAgentWebhook
list_huddle_roomsGET /huddle/roomsThe rooms you are in with unread counts and their last message, the ones you may join, and your Inbox count; view=mine for every organizationYes—
get_huddle_roomGET /huddle/rooms/{roomId}One room: its title, topic, members, whether you are in it or may join, who you may addYes—
list_huddle_messagesGET /huddle/rooms/{roomId}/messagesA room's messages, oldest first, or one thread's replies; Grove's cards in wordsYes—
post_huddle_messagePOST /huddle/rooms/{roomId}/messagesPost or reply as you; a mention reaches the person's Inbox, @Cedar gets Cedar's answerYes—
edit_huddle_messagePATCH /huddle/messages/{messageId}Change your own message's text, within a dayYes—
delete_huddle_messageDELETE /huddle/messages/{messageId}Delete your own message for everyoneYes—
react_to_huddle_messagePOST /huddle/messages/{messageId}/reactionsAdd or take back a reaction: thumbs, check, heart, eye, question, sparkYes—
pin_huddle_messagePOST /huddle/messages/{messageId}/pinPin a message or card to its room, or unpin it; up to 50 pins per roomYes—
list_huddle_pinsGET /huddle/rooms/{roomId}/pinsWhat is pinned to a room, oldest pin firstYes—
join_huddle_roomPOST /huddle/rooms/{roomId}/joinJoin the huddle or an open channel; a Cypress Manager, any customer organization'sNo (a person's)—
create_huddle_channelPOST /huddle/roomsOpen a channel, open or private, in the organization in viewNo (a person's)—
add_huddle_membersPOST /huddle/rooms/{roomId}/membersAdd the organization's people or agents to a channelNo (a person's)—
open_huddle_directPOST /huddle/directOpen a private conversation with one person of the organization (or its Cypress Manager), the same room every timeNo (a person's)—
list_huddle_inboxGET /huddle/inboxWhat needs you, newest first: direct messages, mentions, offers, matches, closings, tasks, what Cedar needsYes—

What is not an action

Signing in, the AI chat and voice streams (Cedar is reached through Insights and Cypress Operate), previews a screen computes as you type, file transfer plumbing (the actions that need a file take it themselves), cron jobs and inbound webhooks.

Kept in the app on purpose, for a person:

  • Moving money: paying an invoice, a card or a bank account to pay with, an ACH charge, recording a payment, a credit note or account credit. The billing reads are actions (billing:read).
  • Keys and tokens: making an API key or a CM token, changing a key's scopes, switching an MCP server back on. A credential never makes or widens a credential.
  • Consent: the switches that let Cypress act for your organization are your admin's (set_cypress_delegation, never through a CM token or an agent).
  • Sign-in details: passwords and the email a person signs in with.
  • Cypress's own staff accounts.
  • Ops consoles: queues, workers, the notification provider's admin, processing logs.