curl --request GET \
--url https://app.flashquotes.com/api/quotes/{id} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://app.flashquotes.com/api/quotes/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.flashquotes.com/api/quotes/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://app.flashquotes.com/api/quotes/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.flashquotes.com/api/quotes/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.flashquotes.com/api/quotes/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"object": "quote",
"id": "cmf2q8n4x0000kz01a1b2c3d4",
"createdAt": "2026-09-01T14:23:11.000Z",
"updatedAt": "2026-09-08T09:12:44.000Z",
"sentAt": "2026-09-02T10:00:00.000Z",
"expiresAt": "2026-09-30T23:59:59.000Z",
"bookedAt": null,
"lostAt": null,
"lostReason": null,
"leadId": "cmf2l8n4x0001kz01a1b2c3d4",
"locationId": "cmf2p8n4x0002kz01a1b2c3d4",
"eventTypeId": null,
"bookingId": null,
"discountId": null,
"taxRateId": null,
"paymentTermsId": null,
"contractId": null,
"numberOfStaff": 4,
"numberOfResources": 2,
"guestCount": 120,
"eventAddress": "123 Market Street, Denver, CO 80202",
"eventDescription": "Acme launch party",
"siteContactName": "Jane Doe",
"siteContactPhone": "+15555550123",
"entityToInvoice": "Acme",
"currency": {
"isoCode": "USD"
},
"totalPriceCents": 250000
}Get Quote
Retrieve a quote summary with live totals and optional related objects
curl --request GET \
--url https://app.flashquotes.com/api/quotes/{id} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://app.flashquotes.com/api/quotes/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.flashquotes.com/api/quotes/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://app.flashquotes.com/api/quotes/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.flashquotes.com/api/quotes/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.flashquotes.com/api/quotes/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"object": "quote",
"id": "cmf2q8n4x0000kz01a1b2c3d4",
"createdAt": "2026-09-01T14:23:11.000Z",
"updatedAt": "2026-09-08T09:12:44.000Z",
"sentAt": "2026-09-02T10:00:00.000Z",
"expiresAt": "2026-09-30T23:59:59.000Z",
"bookedAt": null,
"lostAt": null,
"lostReason": null,
"leadId": "cmf2l8n4x0001kz01a1b2c3d4",
"locationId": "cmf2p8n4x0002kz01a1b2c3d4",
"eventTypeId": null,
"bookingId": null,
"discountId": null,
"taxRateId": null,
"paymentTermsId": null,
"contractId": null,
"numberOfStaff": 4,
"numberOfResources": 2,
"guestCount": 120,
"eventAddress": "123 Market Street, Denver, CO 80202",
"eventDescription": "Acme launch party",
"siteContactName": "Jane Doe",
"siteContactPhone": "+15555550123",
"entityToInvoice": "Acme",
"currency": {
"isoCode": "USD"
},
"totalPriceCents": 250000
}totalPriceCents, currency, dates, contact and location IDs, and event details. Related objects are included only when requested with expand[].
Use your x-api-key with public API access. These endpoints require Scale or an eligible Grandfathered Pro plan.
curl --get 'https://app.flashquotes.com/api/quotes/cmf2q8n4x0000kz01a1b2c3d4' \
--header "x-api-key: $FLASHQUOTES_API_KEY" \
--data-urlencode 'expand[]=lead' \
--data-urlencode 'expand[]=serviceDays'
FLASHQUOTES_API_KEY to your API key and replace the quote ID with one from List Quotes. --data-urlencode safely encodes the brackets in query parameters.
Live quote total
totalPriceCents is calculated on every request from saved line prices, base and travel fees, line and quote discounts, service charges, and tax. It uses the same calculation, rounding, and currency rules as the app. Monetary amounts use the currency’s minor units: 250000 with currency.isoCode: "USD" represents $2,500.00.
The total does not reprice services, refresh tax-provider data, include booking-time gratuity, or represent an invoice’s unpaid balance. Expanding related objects does not change the total.
totalPriceCents without changing the quote’s updatedAt. Do not use updated_at filtering as a complete financial change feed.Expanding related objects
Repeatexpand[] for each relation you need. Single-quote paths have no data. prefix. Comma-separated paths are also accepted.
| Path | Adds |
|---|---|
lead | Contact: ID, name, email, phone, and company name |
location | Location: ID, name, address fields, and time zone |
eventType | Event type ID and name |
services | Distinct service definitions: ID, name, description, and image URL |
addons | Distinct add-on definitions: ID, name, description, and image URL |
discounts | Discount definitions: ID, name, type, percentOff, and amountOff |
taxRate | Tax rate ID, name, and rate |
paymentTerms | Payment schedule, deposit terms, and invoice due-days value |
serviceCharges | Flat array of charge definitions, including type, percentage or fixed amount, and taxability |
serviceDays | Flat array of service days with quote ID, start/end times, and creation/update times |
contract | Contract template ID, name, description, and creation/update times |
booking | Booking summary |
booking.lead | Contact inside the booking |
booking.eventType | Event type inside the booking |
booking.invoices | Invoice summaries, including totals, paid/due amounts, status, and payment URLs |
booking.events | Events inside the booking |
booking.events.location | Each event’s location |
booking.events.services | Each event’s services |
booking.events.addons | Each event’s add-ons |
booking.events.staff | Each event’s assigned staff |
booking.events.resources | Each event’s assigned resources |
booking.events.booking | Each event’s booking summary |
booking.events.booking.lead | Contact inside each event’s booking |
booking.events.booking.eventType | Event type inside each event’s booking |
booking.events.booking.events | Events inside each event’s booking |
booking.events.booking.invoices | Invoice summaries inside each event’s booking |
booking.events.resources includes booking, its events, and each event’s resources. Other relations remain absent unless requested. Expanded single relations return null when missing or inaccessible; empty collections return [].
Services, discounts, and charges
services and addons come from current line-item associations and are deduplicated by ID. Archived services and add-ons are omitted, although their saved pricing still contributes to the total. These objects do not include quantities or unit prices.
discounts combines quote-level and line-level definitions, deduplicated by ID, with the quote-level definition first. Use the base discountId to identify the quote-level discount. No line IDs, discount allocations, or realized discount amounts are returned. Attached archived discount and service-charge definitions remain visible.
serviceCharges and serviceDays are direct arrays without association wrappers. serviceDays and booking.events are ordered by start time ascending, then ID ascending. Invoice summaries are terminal: they have no expandable children.
Limits and excluded fields
- Maximum 20 distinct paths per request; duplicates count once. The full list above exceeds this limit.
- Maximum four segments per path.
- Unknown, malformed, or unsupported paths return
400withparam: "expand". - Quote and invoice line items, quantities, unit prices, pricing configuration, contract content, and signatures are excluded.
lineItems, serviceDays.lineItems, booking.invoices.lineItems, discount, and serviceCharges.serviceCharge are unsupported. Free-text descriptions can still contain details entered by your team.
Request only the relations you need. Expanded collections are not independently paginated or truncated; repeated booking/event traversal can produce large responses. These routes do not currently enforce per-key rate or concurrency limits.
Errors
| Status | Meaning |
|---|---|
400 | Invalid expansion path or expansion limit exceeded |
401 | Authentication denied: check the API key, allowed IPs, and plan access |
404 | Quote is missing, deleted, or inaccessible to your company |
500 | Internal server error |
503 | Authentication service temporarily unavailable |
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "Unknown expand path: 'lineItems'",
"param": "expand"
}
}
404. Foreign pricing relationships are excluded from the total; if stored relationships are invalid, this can differ from the app’s total until the data is repaired.Authorizations
API key for authentication
Path Parameters
Quote ID.
Query Parameters
Use paths without a data. prefix. Repeat expand[] or use comma-separated paths. A nested path includes its parents; unrequested siblings stay absent. Maximum 20 distinct paths per request and four segments, excluding data. Unknown or malformed paths return 400. Allowed paths: lead, location, eventType, services, addons, discounts, taxRate, paymentTerms, serviceCharges, serviceDays, contract, booking, booking.lead, booking.eventType, booking.invoices, booking.events, booking.events.location, booking.events.services, booking.events.staff, booking.events.addons, booking.events.resources, booking.events.booking, booking.events.booking.lead, booking.events.booking.eventType, booking.events.booking.invoices, booking.events.booking.events.
Response
Quote retrieved successfully.
Quote summary with live overall value. Base fields are always present; nullable native values remain null. Relations appear only when expanded. Quote and invoice line items, quantities, unit prices, and pricing configuration are not exposed.
quote Quote ID.
When the quote was created.
When the quote row was last updated. Child pricing changes can change totalPriceCents without changing this timestamp.
When the quote was sent, or null.
Quote expiration time, or null.
When the quote was booked, or null.
When the quote was marked lost, or null.
Reason the quote was marked lost, or null.
PRICE, DATE_UNAVAILABLE, WENT_SILENT, CHOSE_COMPETITOR, OTHER Contact ID. The related object is named lead in the API.
Location ID.
Event type ID, or null.
Booking ID, or null.
Quote-level discount ID, or null. The discounts expansion also includes line-level discount definitions.
Tax rate ID, or null.
Payment terms ID, or null.
Contract template ID, or null.
Requested staff count.
Requested resource count.
Guest count.
Event address.
Event description, or null.
On-site contact name, or null.
On-site contact phone number, or null.
Entity to invoice, or null.
Show child attributes
Show child attributes
Live overall quote total in the currency’s minor units (cents for USD), recalculated on every request from saved pricing, fees, discounts, service charges, and tax. Excludes booking-time gratuity; not an unpaid invoice balance. Expansion does not change this value.
250000
Present only when lead is expanded (use data.lead on lists). Returns null when the relation is missing or inaccessible.
Show child attributes
Show child attributes
Present only when location is expanded (use data.location on lists). Returns null when the relation is missing or inaccessible.
Show child attributes
Show child attributes
Present only when eventType is expanded (use data.eventType on lists). Returns null when the relation is missing or inaccessible.
Show child attributes
Show child attributes
Present only when services is expanded (use data.services on lists). Returns [] when empty. Distinct current line-item service definitions. Archived services are omitted; saved prices still contribute to the total.
Show child attributes
Show child attributes
Present only when addons is expanded (use data.addons on lists). Returns [] when empty. Distinct current line-item add-on definitions, without unit prices. Archived add-ons are omitted; saved prices still contribute to the total.
Show child attributes
Show child attributes
Present only when discounts is expanded (use data.discounts on lists). Returns [] when empty. Deduplicated quote-level and line-level definitions, with the quote-level definition first. No allocations or realized discount amounts. Attached archived definitions remain visible.
Show child attributes
Show child attributes
Present only when taxRate is expanded (use data.taxRate on lists). Returns null when the relation is missing or inaccessible.
Show child attributes
Show child attributes
Present only when paymentTerms is expanded (use data.paymentTerms on lists). Returns null when the relation is missing or inaccessible.
Show child attributes
Show child attributes
Present only when serviceCharges is expanded (use data.serviceCharges on lists). Returns [] when empty. Flat definition array without association wrappers or calculated charge amounts. Attached archived definitions remain visible.
Show child attributes
Show child attributes
Present only when serviceDays is expanded (use data.serviceDays on lists). Returns [] when empty. Flat array ordered by serviceStartTime ascending, then id ascending.
Show child attributes
Show child attributes
Present only when contract is expanded (use data.contract on lists). Returns null when the relation is missing or inaccessible. Template metadata only; excludes contract content and signatures.
Show child attributes
Show child attributes
Present only when booking is expanded (use data.booking on lists). Returns null when the relation is missing or inaccessible.
Show child attributes
Show child attributes
Was this page helpful?

