For AI assistants and agents

Request a Christmas lighting quote by email

Fill in the form for a customer-authorized home in the Raleigh Triangle. It starts the existing quote process and returns a private link to the request. A request is not a booking.

Request a quote

Fill this in with the customer. We will use the existing quote process and reply by email. No phone number is required, and this request does not authorize a call or text.

Customer and property
Lighting options

Option A requests roofline only. Option B requests roofline, ridges, and the front-facing gable. Select either or both.

Additional landscaping (optional)

These requests apply to each selected roofline option. The quote team will review additions not included in the generated estimate.

What to collect first

Only submit after the customer asks you to request a quote. The API needs their name, reply email, complete service address, and permission for this specific request. A phone number is not collected or needed.

Request separate pricing

Option A requests roofline only. Option B requests roofline, ridges, and the front-facing gable. Trees and bushes can be requested separately for the selected options; the team will review additions that are not included in the generated estimate.

Optional useful details

Color, tree or bush descriptions and counts, preferred installation or takedown window, budget, and other customer preferences can help the quote team understand the request.

Current service answers

These answers are also returned in the API response. Review the linked service details for current terms.

Lighting and storage
Lights are leased. Storage is included.
Installation
Available installation weeks are shown at checkout. Choose an available week; we guarantee installation during that week.
Takedown
Takedown scheduling is dynamic. We guarantee takedown by January 21.
Warranty and in-season service
Bulb outages or storm damage are repaired within 48 hours at no extra charge.
Service details and policies

Use the form, or call the same endpoint

The form above is the recommended path for a browser agent. If you cannot fill a web form, submit the same request JSON to POST /api/grokbot/v1/requests. Include an Idempotency-Key with 16–128 letters, digits, underscores, or hyphens. Reuse that key and exact body only when retrying the same submission.

curl -X POST https://jollyraleigh.com/api/grokbot/v1/requests \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 44ec29b9-b02a-4edf-a544-e0878999dc75' \
  --data '{
  "schemaVersion": "1",
  "customer": {
    "name": "Example Customer",
    "replyEmail": "customer@example.com"
  },
  "property": {
    "addressLine1": "123 Example Lane",
    "city": "Raleigh",
    "state": "NC",
    "postalCode": "27615"
  },
  "options": [
    {
      "id": "A",
      "scope": "roofline_only"
    },
    {
      "id": "B",
      "scope": "roofline_ridges_front_gable"
    }
  ],
  "landscape": {
    "trees": true,
    "bushes": true
  },
  "communication": {
    "channel": "email",
    "allowCalls": false,
    "allowSms": false
  },
  "authorization": {
    "authorizedToRequestQuote": true
  },
  "notes": "Please consider the selected roofline and landscaping scopes."
}'

A 202 response means the existing quote workflow accepted the job. It includes requestId, jobId, publicToken, quoteUrl, the current job status, and shared servicePolicies (older responses may omit the latter). Open the private quoteUrl for progress and results. Do not poll another status endpoint or submit a second request to check progress.

{
  "requestId": "example-request-id",
  "jobId": "example-job-id",
  "publicToken": "<keep-private>",
  "quoteUrl": "/property/example-job-id?t=<keep-private>",
  "status": "processing",
  "servicePolicies": {
    "lights": "Lights are leased.",
    "storage": "Storage is included.",
    "installation": "Available installation weeks are shown at checkout. Choose an available week; we guarantee installation during that week.",
    "takedown": "Takedown scheduling is dynamic. We guarantee takedown by January 21.",
    "service": "Bulb outages or storm damage are repaired within 48 hours at no extra charge.",
    "policyUrl": "https://jollyraleigh.com/christmas-lights/"
  }
}

How to explain the result

The server starts the existing property and quote workflow. A successful response includes a private quote link; the job may still be processing when the customer opens it. The response is not a booking or a promise that every requested option can be priced.

Use the service answers above and the linked policy page. Do not promise that requested landscaping or custom rendering will appear in the generated estimate unless the quote shows it.

Privacy and limits

  • Email only: no calls, texts, or marketing enrollment.
  • The public token and private quote link grant access to the quote. Keep them confidential and do not put them in logs.
  • Creation allows one or two unique options, optional tree and bush requests, a 16 KiB JSON body, and notes up to 2,000 characters. Unknown fields are rejected.
  • Requests are rate limited. On 429 or 503, honor Retry-After and do not evade the limit with another address, endpoint, or proxy.
  • Intake can be temporarily unavailable. If you receive 503, wait for the indicated retry time or contact written support; do not keep resubmitting.
  • Rolling server-side ceilings: 60 API attempts per minute per shared network bucket and 600 per minute globally; 5 requests per hour per shared network bucket; 3 requests per 24 hours per reply inbox; 1 per property per 24 hours; 50 per 24 hours globally; and at most 20 pending jobs. Malformed and unauthorized attempts count toward the API request ceilings.
  • Keep the returned private quote link and public token confidential. The link is the supported way to view progress; there is no separate status API.

Read the privacy policy, rental terms, and terms and conditions. Asking for a quote does not accept rental terms or authorize a booking, payment, call, text, or subscription.