Quotes API
Create and track quote requests from potential customers, and add notes as you work them.
The Quote Model
The Quote object represents a quote request from a potential customer, including their contact information, device details, and the requested repair. Below is an example of a Quote object with all possible fields.
json{ "id": "0197a1b2-3c4d-7e5f-8a9b-0c1d2e3f4a5b", "orgId": "org_2abc123", "locationId": null, "firstName": "John", "lastName": "Doe", "phone": "+15035551234", "email": "john.doe@example.com", "preferredContact": "email", "category": "Phone", "manufacturer": "Apple", "model": "iPhone 12", "repair": "Screen Repair", "additionalInfo": "Cracked in the top corner.", "createdAt": "2026-07-01T18:30:00.000Z", "updatedAt": "2026-07-01T18:30:00.000Z", "appointmentDate": "2026-07-03T17:00:00.000Z", "quoteValue": "129.99", "quoteSent": false, "quoteStatus": "QUOTE_CREATED", "createdTicketId": null }
Quote Object Properties
Note: "Required" indicates fields that must be provided when creating a quote. Fields on returned quotes may be null if the quote was created through another channel (e.g., the embedded quote form) without them.
Quote Note Object Properties
Quote Status History Object Properties
Each entry records one status change on the quote.
Quote Resources
Get quotes
This endpoint returns a paginated list of quotes.
HTTP Request
httpGET https://www.myrepairapp.com/api/v2/quotes?page={number}&pageSize={number}&status={string}&createdSince={date}&updatedSince={date}
Parameters
All parameters are optional.
The page parameter selects the page of results and defaults to 1. The pageSize parameter sets the number of quotes per page and defaults to 20 (maximum 100).
The status parameter filters quotes by status and must be one of QUOTE_CREATED, SENT, LEFT_VOICEMAIL, NO_ANSWER, or TICKET_CREATED.
The createdSince and updatedSince parameters filter quotes created or updated on or after the given date and must be valid ISO 8601 dates (e.g., 2026-07-01T00:00:00.000Z). Date-only values (e.g., 2026-07-01) are interpreted as UTC midnight. Use updatedSince to poll for new and changed quotes since your last request.
Response
If successful, the response will include a list of quotes sorted by creation date (newest first), along with pagination details. Each quote in data also includes a _count.quoteNotes field with the number of notes on the quote.
json{ "data": [ { "id": "0197a1b2-3c4d-7e5f-8a9b-0c1d2e3f4a5b", "quoteStatus": "QUOTE_CREATED", "_count": { "quoteNotes": 2 } } ], "totalCount": 42, "totalPages": 3, "currentPage": 1, "pageSize": 20 }
Get a quote by ID
This endpoint returns a single quote by ID, including its notes and status history.
HTTP Request
httpGET https://www.myrepairapp.com/api/v2/quotes/{quoteId}
Response
If successful, the response will include the details of the requested quote, its notes (quoteNotes, an array of Quote Note objects), and its status history (statusHistory, an array of Quote Status History objects), both sorted newest first.
If the quote does not exist in your store, the endpoint returns a 404 response:
json{ "message": "Quote not found." }
Create a quote
This endpoint creates a new quote request. Creating a quote notifies the store the same way a quote submitted through the embedded quote form does.
HTTP Request
httpPOST https://www.myrepairapp.com/api/v2/quotes
Request Body
Note: all required fields other than additionalInfo must be non-empty, and email must be a valid email address. phone is stored as provided (trimmed) and is not validated for format.
appointmentDate and appointmentTime must be provided together. Sending only one of them returns a 400 validation error. When both are provided:
- Values in any other format (including ISO 8601) return a
400response with the messageInvalid appointment date or time. Use MM/DD/YYYY for the date and hh:mm:ss AM/PM for the time. - A time in the past returns a
400response describing the store's available hours. - The slot is validated against the store's business hours and availability. If the slot is unavailable, the endpoint returns a
400response with a message describing the store's available hours.
Response
If successful, the response will include the created quote object with a 201 status code. The created quote includes a quoteNotes array, which is empty for a new quote.
Rate limiting
Every request counts toward your store's public API limit of 60 requests per minute (see API Rate Limits). Quote creation may also enforce a stricter per-store limit. When either limit is exceeded, the endpoint returns a 429 response with a Retry-After header (the number of seconds to wait before retrying), the X-RateLimit-Limit, , and headers, and a body containing the same wait time:
json{ "error": "Too many requests. Please try again later.", "retryAfter": 12 }
Add note to a quote
This endpoint adds a note to a quote.
HTTP Request
httpPOST https://www.myrepairapp.com/api/v2/quotes/{quoteId}/note
Request Body
The request body must contain a valid Quote Note object.
Response
If successful, the response will include the created quote note object with a 201 status code. If the quote does not exist in your store, the endpoint returns a 404 response.