Skip to main content
POST
Override incentives

Authorizations

Authorization
string
header
required

Your Leap API key as a Bearer token. Send it in the Authorization header: Authorization: Bearer <api-key>.

Body

application/json
reference_id
string
required

Your stable identifier for this customer. Leap uses it to recognise a returning customer, and you'll send it again on Refresh incentives, Override incentives, and when searching applications. It's scoped to you — another partner using the same value is a different customer.

Required string length: 1 - 256
address
object
required
customer_devices
object[]
required

One entry per installation, at least one and at most 50. Each names a catalog device_id and an optional partner_device_reference that tells two installations of the same device apart. The inline details object carries per-installation attributes, for example customer_device.purchase_price or customer_device.installation_date.

On Override incentives this list replaces the customer's device set: every installation on file is discarded first, so their customer_device_ids are regenerated.

Required array length: 1 - 50 elements
customer_classification
enum<string>
required

The customer or site classification used to determine eligibility. RESIDENTIAL and COMMERCIAL are the long-standing values; MULTIFAMILY and MANUFACTURED_HOME exist because rebate qualification differs across single-family, multifamily, and manufactured housing.

Available options:
RESIDENTIAL,
MULTIFAMILY,
MANUFACTURED_HOME,
COMMERCIAL
eiaid
string

Optional utility override. Supply it when you already know the customer's serving utility and the address-based match is unavailable or ambiguous: Leap uses this EIA utility id to select candidate programs instead of resolving the utility from the address. On this path the address isn't geocoded, so the response omits the geocoding block and any stored coordinates are left as they are. A value matching no utility fails the same way an unserved address does (404 NO_UTILITY_AT_ADDRESS).

Minimum string length: 1
customer_details
object

Customer attributes you're supplying, keyed by field name, for example {"customer.utility_account_number": "0123456789"}. Values are always strings. Facts about one installation go in that entry's details object instead.

An unrecognised key returns 400 and no incentives. The Requirements reference lists every key and its value form.

Omit or leave empty if you have none. Maximum 100 entries.

create_application
boolean
default:false

Create the Connect application records for this lookup's eligible programs, so the returned connect_url is a link the customer can open. Provisioning runs in the background and is normally in place within seconds. Defaults to false: lookup-only integrations are unaffected and no applications are created for them. No effect on billing or rate limits.

include_preview
boolean
default:false

Include your own unpublished partner offer in the results so you can test it before publishing. Only your own offer is ever included. Utility, state, and market programs are unaffected. Defaults to false.

Response

Customer rebuilt from the request and eligibility re-evaluated.

reference_id
string
required

Echoes the reference_id from the request — the partner's stable identifier for this customer.

customer_classification
enum<string>
required

The customer or site classification used to determine eligibility. RESIDENTIAL and COMMERCIAL are the long-standing values; MULTIFAMILY and MANUFACTURED_HOME exist because rebate qualification differs across single-family, multifamily, and manufactured housing.

Available options:
RESIDENTIAL,
MULTIFAMILY,
MANUFACTURED_HOME,
COMMERCIAL
customer_devices
object[]
required

Per-installation echo. One entry per request entry, with the resolved (server-filled if absent) partner_device_reference and the upserted customer_device.id.

incentive_summary
object
required
utilities
object
required
program_details
object[]
required

One entry per eligible (or conditionally eligible) program. Empty when no candidate programs match the (utility, customer_classification, device_category) filter.

connect_url
string<uri>

Deep link to hand the customer so they can apply: https://connect.incentives.leap.energy/{company}/refId/{reference_id}, where {company} is your registration nickname. Omitted entirely when the lookup surfaces no eligible incentive — there is nothing to apply for, so check that the field is present before showing a link.

geocoding
object
partner
object

Your brand name and logo as configured on your Leap account, so a surface rendering these results can show your branding without a second call.

devices_ignored
object[]

/incentives/lookups only. Entries the request named that were NOT written, because the request resolved to a customer that already exists and the entry named an installation that customer does not have. Absent or empty on every other outcome, and always absent for a customer created by this request. /incentives/lookups establishes a customer's device set. Adding to one that already exists is what /incentives/refreshes does — send the new installation there. The call still returns 200 and still evaluates the entries that WERE recognised, so a partner-side mistake never fails an otherwise-answerable eligibility request; the entries in this array are the ones that had no effect. Each entry echoes only what the caller sent. The customer's stored installations are never listed.