# Partially Update EngagePro™ - Lead Widget Uploads header and footer logos for the EngagePro™ - Lead Widget configuration. Endpoint: PATCH /api/v1/roof-estimate-widget/{referenceId}/upload-logos Version: 1.0.0 ## Path parameters: - `referenceId` (string, required) The ID of the Widget, which is equal to your Client's identifier) and was set in the POST request, to upload logos. ## Header parameters: - `Content-Type` (string) Must be set to multipart/form-data for file upload. Example: "multipart/form-data" - `token` (string) Example: "{API Key}" ## Request fields (multipart/form-data): - `headerLogo` (string) Logo displayed at the top of the widget. PNG or JPG format recommended (horizontal layout preferred, e.g., 300×150 px). Max file size - 1 MB. - `footerLogo` (string) Small logo at the bottom of the widget (favicon preferred, e.g., 24×24 px). PNG or JPG format recommended. Max file size - 1 MB. ## Response 200 fields (application/json): - `referenceId` (string) Unique identifier of the Client in your system. Example: "1051dcbf-560b-40f9-abaa-8d872976d1fd" - `status` (string) Widget status. Enum: "active", "inactive" - `widgetLink` (string) Redirect link to open widget on Client's website. Example: "https://companyurl1?roof-estimate=open" - `quantivPageLink` (string) Redirect link to Quantiv-hosted widget page. Example: "https://dev.app.your-estimate.com/widget/roof-estimate/1051dcbf-560b-40f9-abaa-8d872976d1fd" - `domains` (string) Authorized domains where widget script can run. Example: "https://quantiv-io-150dfe78743658-2f6743b6afd11.webflow.io" - `elementType` (string) UI element type displayed on website. Enum: "button", "banner", "custom" - `elementLocation` (string) Element placement on page. Example: "bottom" - `elementSize` (string) Element size. Enum: "small", "medium", "large" - `buttonText` (string) Call-to-action text on element. Example: "button text" - `buttonTextColor` (string) CTA text color in HEX format. Example: "#ffffff" - `buttonBackgroundColor` (string) Button background color in HEX format. Example: "#696CFF" - `bannerText` (string) Banner text content. Example: "Banner text" - `bannerBackgroundColor` (string) Banner background color in HEX format. Example: "#F5F5F9" - `primaryColor` (string) Primary color for buttons and titles. Example: "#696CFF" - `secondaryColor` (string) Secondary button color. Example: "#aaaaaa" - `backgroundColor` (string) Widget background color. Example: "#F5F5F9" - `cardBackgroundColor` (string) Card background color. Example: "#ffffff" - `textColor` (string) Main text color (supports 6 or 8 digit HEX). Example: "#22303EE6" - `linkColor` (string) Hyperlink color. Example: "#696CFF" - `footerCompanyName` (string) Company name in footer. Example: "QUANTIV" - `footerPrivacyPolicyLink` (string) Privacy policy URL. Example: "company-url-1.com/privacy" - `footerTermsOfUseLink` (string) Terms of service URL. Example: "company-url-1.com/terms" - `companyUrl` (string) Company website URL. Example: "companyUrl1" - `companyName` (string) Company name. Example: "QUANTIV" - `companyAddress` (string) Company physical address. Example: "companyAddress1" - `companyPhone` (string) Company phone number. Example: "(144) 444-4444" - `companyEmail` (string) Company email address. Example: "example@gmail.com" - `firstPageTitle` (string) Title on first page of widget. Example: "Get Your Estimate in 30 Seconds!" - `headerLogoUrl` (string) URL of uploaded header logo (stored on S3). Example: "https://quantiv-dev.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/1051dcbf-560b-40f9-abaa-8d872976d1fd_header-logo_1766566035091.png" - `footerLogoUrl` (string) URL of uploaded footer logo (stored on S3). Example: "https://quantiv-dev.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/1051dcbf-560b-40f9-abaa-8d872976d1fd_footer-logo_1766566035120.png" - `pricing` (object) Pricing configuration for roofing estimates. - `pricing.installedPrice` (number) Installation price per square. Example: 400 - `pricing.isDefaults` (boolean) Indicates if default pricing is used. - `pricing.advancedAdjustments` (object) - `pricing.advancedAdjustments.materialWaste` (object) - `pricing.advancedAdjustments.materialWaste.standardAsphalt` (object) - `pricing.advancedAdjustments.materialWaste.standardAsphalt.premium` (string) Example: "0" - `pricing.advancedAdjustments.materialWaste.standardAsphalt.waste` (string) Example: "0" - `pricing.advancedAdjustments.materialWaste.slateOrTile` (object) - `pricing.advancedAdjustments.materialWaste.metal` (object) - `pricing.advancedAdjustments.materialWaste.other` (object) - `pricing.advancedAdjustments.steepness` (object) - `pricing.advancedAdjustments.steepness.average` (object) - `pricing.advancedAdjustments.steepness.steep` (object) - `pricing.advancedAdjustments.steepness.verySteep` (object) - `pricing.advancedAdjustments.complexity` (object) - `pricing.advancedAdjustments.complexity.simple` (object) - `pricing.advancedAdjustments.complexity.moderate` (object) - `pricing.advancedAdjustments.complexity.complex` (object) - `pricing.estimateCostRange` (object) - `pricing.estimateCostRange.estimateLowRange` (string) Example: "0" - `pricing.estimateCostRange.estimateHighRange` (string) Example: "0" - `pricing.financingOptions` (object) - `pricing.financingOptions.presentFinancingOptions` (boolean) - `pricing.financingOptions.monthlyPaymentFactor` (string) - `pricing.financingOptions.isCalculatedFinancingOptions` (boolean) - `pricing.financingOptions.apr` (string) - `pricing.financingOptions.months` (string) - `widgetScript` (string) Widget script for embedding on website. Example: "" - `widgetQrCode` (string) QR code for widget on Client's website. Example: "https://quantiv-dev.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/1051dcbf-560b-40f9-abaa-8d872976d1fd_widget-qr-code_1768205015615.png" - `quantivQrCode` (string) QR code for Quantiv-hosted widget page. Example: "https://quantiv-dev.nyc3.digitaloceanspaces.com/widgets/roof-estimate/images/1051dcbf-560b-40f9-abaa-8d872976d1fd_quantiv-qr-code_1768205015696.png" ## Response 400 fields (application/json): - `error` (string) Example: "Bad Request" - `statusCode` (integer) Example: 400 - `message` (array) Example: ["Invalid file format for headerLogo","File size exceeds 1 MB limit"] ## Response 401 fields (application/json): - `error` (string) Example: "Unauthorized" - `statusCode` (integer) Example: 401 - `message` (string) Example: "Invalid API Key" ## Response 404 fields (application/json): - `error` (string) Example: "Not Found" - `statusCode` (integer) Example: 404 - `message` (string) Example: "Widget with referenceId '1051dcbf-560b-40f9-abaa-8d872976d1fd' not found" ## Response 500 fields (application/json): - `error` (string) Example: "Internal Server Error" - `statusCode` (integer) Example: 500 - `message` (string) Example: "Unexpected server error occurred while uploading files. Please try again later."