{"openapi":"3.1.0","info":{"title":"EVpin API","version":"1.0.0","description":"The EVpin API gives you programmatic access to EVpin's site scoring: the same data and scores as batch uploads, one location per request.\n\nSome response fields only show their full structure to signed-in EVpin users. [Sign in](https://www.evpin.com/sign-in?redirect=%2Fapi%2Fdocs) to see everything.\n\n## Authentication\nAnyone in your organization can create an API key in [Organization Settings → API](https://www.evpin.com/dashboard/organization/api) in the EVpin app. Send the key as a bearer token:\n\n```\nAuthorization: Bearer evp_live_…\n```\n\nEvery key spends your organization's shared API balance. Keep keys secret and server-side; anyone holding one can spend that balance. A key stops working when the person who created it leaves the organization.\n\n## Pricing\nEach successful site score is billed per site to your organization's API balance, in US dollars. Choose the tier per request with `options.tier`: `standard` (the default) returns the score and every signal; `premium` adds utilization of nearby stations and costs more. Volume discounts apply automatically once your organization scores a certain number of new sites in a billing month.\n\n**Your rates, plan credit and balance are in [Organization Settings → API](https://www.evpin.com/dashboard/organization/api).** `GET /api/v1/usage` returns them too.\n\nYou are **not** charged when:\n- the request fails, for any reason (invalid input, a location we can't score, an error on our end), or\n- your organization already scored the same location (within about 10 m) at the same tier or higher in the last 30 days. Re-scoring a `standard` location at `premium` costs only the difference.\n\nRequests are paid from your plan's monthly API credit first, then from prepaid credit, which organization admins add in [Organization Settings → API](https://www.evpin.com/dashboard/organization/api). Organizations without a plan start with some free credit to try the API. If your balance can't cover a request, it fails with `402 insufficient_balance` and nothing is charged.\n\nEvery response says what it cost in `billing.amountCharged` and the `X-Amount-Charged` header.\n\n## Rate limits\nSite scoring allows 30 requests per minute per organization by default; read endpoints allow 120. Responses carry `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset` (seconds) headers. Over the limit you get `429` with a `Retry-After` header. Contact operations@evpin.com if you need a higher limit.\n\n## Errors\nErrors return a JSON body with a stable `error.code`, a human-readable `error.message` and the `error.requestId` (also in the `X-Request-Id` header). Quote the request ID when contacting support at operations@evpin.com.","contact":{"name":"EVpin support","email":"operations@evpin.com"}},"servers":[{"url":"https://www.evpin.com"}],"security":[{"apiKey":[]}],"tags":[{"name":"Site scoring","description":"Score prospective EV charging sites."},{"name":"Account","description":"Your organization’s balance and usage."}],"paths":{"/api/v1/sites/score":{"post":{"operationId":"scoreSite","tags":["Site scoring"],"summary":"Score a site","description":"Scores one location for EV charging: an overall 0-5 score plus the underlying signals (amenities, EV adoption, traffic, demographics, existing infrastructure, incentives, affordability, crime), nearby station utilization (`premium` tier), utility companies, Justice40 status and, optionally, ownership and land details. The same data as a batch upload row.\n\nUncached requests usually take 3-10 seconds; use a client timeout of at least 60 seconds.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteScoreRequest"},"examples":{"coordinates":{"summary":"Coordinates","value":{"location":{"latitude":30.2672,"longitude":-97.7431}}},"address":{"summary":"Address with options","value":{"location":{"address":"1100 Congress Ave, Austin, TX 78701"},"options":{"radiusMiles":5,"chargerLevels":"all","includeOwnership":true}}}}}}},"responses":{"200":{"description":"The site score.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"},"X-Amount-Charged":{"description":"What this request cost, in US dollars (e.g. `2.00`).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteScore"}}}},"400":{"description":"`invalid_request`: the body is not valid JSON or does not match the schema.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"`invalid_api_key`: the API key is missing, malformed or revoked.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"`insufficient_balance`: your organization’s API balance can’t cover this request. An admin can add credit in [Organization Settings → API](https://www.evpin.com/dashboard/organization/api).","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"`location_not_found`: the address or coordinates could not be resolved to a specific site. `unsupported_region`: the location is outside the US and Canada.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"`rate_limited`: too many requests. Wait for `Retry-After` seconds.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"`internal_error`: something went wrong on our end. You were not charged.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"`service_unavailable`: the API is briefly unavailable. Wait for `Retry-After` seconds; you were not charged.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/usage":{"get":{"operationId":"getUsage","tags":["Account"],"summary":"Get usage","description":"Your organization’s balance, rates and request counts for the current billing month, in US dollars. Free.","responses":{"200":{"description":"Current usage.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Usage"}}}},"401":{"description":"`invalid_api_key`: the API key is missing, malformed or revoked.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"`rate_limited`: too many requests. Wait for `Retry-After` seconds.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"`internal_error`: something went wrong on our end. You were not charged.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"`service_unavailable`: the API is briefly unavailable. Wait for `Retry-After` seconds; you were not charged.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"An organization API key (`evp_live_…`), created in Organization Settings → API."}},"schemas":{"SiteScoreRequest":{"type":"object","properties":{"location":{"anyOf":[{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"description":"WGS84 latitude.","example":30.2672},"longitude":{"type":"number","minimum":-180,"maximum":180,"description":"WGS84 longitude.","example":-97.7431}},"required":["latitude","longitude"],"additionalProperties":false,"title":"Coordinates","description":"Score this exact point."},{"type":"object","properties":{"address":{"type":"string","minLength":3,"maxLength":300,"description":"A street address in the US or Canada.","example":"1100 Congress Ave, Austin, TX 78701"}},"required":["address"],"additionalProperties":false,"title":"Address","description":"Geocode an address, then score the matched point."}],"description":"Either `latitude` + `longitude`, or an `address`. Only US and Canadian locations are supported."},"options":{"default":{"tier":"standard","radiusMiles":10,"chargerLevels":"dcfast","includeFreeStations":true,"includeOwnership":false},"type":"object","properties":{"tier":{"default":"standard","description":"`standard` returns the score and every signal. `premium` adds utilization of nearby stations (`nearbyUtilization`, `existingInfrastructure.averageUtilizationPercent`) and costs more.","type":"string","enum":["standard","premium"]},"radiusMiles":{"default":10,"description":"Radius, in miles, for existing charging infrastructure and utilization.","type":"number","enum":[2,5,10,50]},"chargerLevels":{"default":"dcfast","description":"Which existing chargers to consider.","type":"string","enum":["all","level2","dcfast"]},"includeFreeStations":{"default":true,"description":"Include free-to-use stations in existing infrastructure and utilization.","type":"boolean"},"signals":{"description":"Signals to compute and weigh into `overallScore`. Defaults to all of them. Excluded signals are returned as `null`.","minItems":1,"type":"array","items":{"type":"string","enum":["amenities","evAdoption","traffic","populationDensity","existingInfrastructure","incentives","affordability","crime"]}},"includeOwnership":{"default":false,"description":"Also return ownership and land details for the location.","type":"boolean"}},"additionalProperties":false}},"required":["location"],"additionalProperties":false,"description":"Score one prospective charging site."},"SiteScore":{"type":"object","properties":{"id":{"type":"string","description":"Request ID. Quote it when contacting support.","example":"req_2xq9…"},"object":{"type":"string","const":"site_score"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"location":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"},"matchedAddress":{"description":"Address the location resolved to.","type":["string","null"]},"city":{"type":["string","null"]},"county":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","CA"]}},"required":["latitude","longitude","matchedAddress","city","county","state","postalCode","country"],"additionalProperties":false},"overallScore":{"type":"number","description":"Weighted site score from 0 to 5.","example":3.8},"tier":{"type":"string","enum":["standard","premium"],"description":"The tier this site was scored at."},"rating":{"type":"string","enum":["excluded","very_low","low","moderate","high","very_high"],"description":"Bucketed `overallScore`, as shown in the EVpin app."},"signals":{"type":"object","properties":{"amenities":{"anyOf":[{"type":"object","properties":{"score":{"type":"number","description":"Signal score from 0 to 5. 0 when there was not enough data to score it."},"count":{"type":"number","description":"Amenities within a 10-minute walk."},"breakdown":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"count":{"type":"number"},"percentage":{"type":"number"}},"required":["type","count","percentage"],"additionalProperties":false}}},"required":["score","count","breakdown"],"additionalProperties":false},{"type":"null"}]},"evAdoption":{"type":["object","null"],"description":"Sign in to EVpin to see this field’s structure."},"traffic":{"anyOf":[{"type":"object","properties":{"score":{"type":"number","description":"Signal score from 0 to 5. 0 when there was not enough data to score it."},"aadt":{"description":"Annual average daily traffic on the nearest road.","type":["number","null"]}},"required":["score","aadt"],"additionalProperties":false},{"type":"null"}]},"populationDensity":{"anyOf":[{"type":"object","properties":{"score":{"type":"number","description":"Signal score from 0 to 5. 0 when there was not enough data to score it."},"densityPerSqKm":{"description":"Residents per square kilometer.","type":["number","null"]}},"required":["score","densityPerSqKm"],"additionalProperties":false},{"type":"null"}]},"existingInfrastructure":{"anyOf":[{"type":"object","properties":{"score":{"type":"number","description":"Signal score from 0 to 5. 0 when there was not enough data to score it."},"dcFastPorts":{"type":"number","description":"DC fast ports within `radiusMiles`."},"level2Ports":{"type":"number","description":"Level 2 ports within `radiusMiles`."},"averageStationRating":{"description":"Average user review rating of nearby stations.","type":["number","null"]},"nearestHighwayExitMiles":{"description":"Driving distance to the nearest highway exit.","type":["number","null"]},"averageUtilizationPercent":{"description":"**Premium only.** Average utilization of nearby stations. `null` for `standard`.","type":["number","null"]},"utilizationLevel":{"anyOf":[{"type":"string","enum":["low","medium","high"]},{"type":"null"}],"description":"Utilization of nearby stations, where only a level is available."}},"required":["score","dcFastPorts","level2Ports","averageStationRating","nearestHighwayExitMiles","averageUtilizationPercent","utilizationLevel"],"additionalProperties":false},{"type":"null"}]},"incentives":{"anyOf":[{"type":"object","properties":{"score":{"type":"number","description":"Signal score from 0 to 5. 0 when there was not enough data to score it."},"count":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":["string","null"]},"description":{"type":["string","null"]},"url":{"type":["string","null"]}},"required":["name","value","description","url"],"additionalProperties":false}}},"required":["score","count","items"],"additionalProperties":false},{"type":"null"}]},"affordability":{"anyOf":[{"type":"object","properties":{"score":{"type":"number","description":"Signal score from 0 to 5. 0 when there was not enough data to score it."},"percentResidentsAbleToAffordEv":{"description":"Residents in the zip code able to buy an entry-level EV.","type":["number","null"]}},"required":["score","percentResidentsAbleToAffordEv"],"additionalProperties":false},{"type":"null"}]},"crime":{"anyOf":[{"type":"object","properties":{"score":{"type":"number","description":"Signal score from 0 to 5. 0 when there was not enough data to score it."},"violentCrimeChange":{"description":"Violent crime relative to the national rate (1 = national rate).","type":["number","null"]},"propertyCrimeChange":{"description":"Property crime relative to the national rate (1 = national rate).","type":["number","null"]}},"required":["score","violentCrimeChange","propertyCrimeChange"],"additionalProperties":false},{"type":"null"}]}},"required":["amenities","evAdoption","traffic","populationDensity","existingInfrastructure","incentives","affordability","crime"],"additionalProperties":false},"nearbyUtilization":{"anyOf":[{"type":"object","properties":{"stationCount":{"description":"Stations within `radiusMiles`.","type":["number","null"]},"percentStationsWithData":{"description":"Share of those stations with utilization data.","type":["number","null"]},"all":{"type":"object","properties":{"averageUtilizationPercent":{"description":"Average utilization, 0-100.","type":["number","null"]},"averageChargingRatePerKwh":{"description":"Average price per kWh, in local currency.","type":["number","null"]},"minChargingRatePerKwh":{"description":"Lowest price per kWh.","type":["number","null"]},"maxChargingRatePerKwh":{"description":"Highest price per kWh.","type":["number","null"]},"estimatedMonthlyRevenue":{"description":"Estimated average monthly revenue per station.","type":["number","null"]},"estimatedMonthlyEnergyKwh":{"description":"Estimated average monthly energy sold per station, in kWh.","type":["number","null"]},"medianMaxPowerKw":{"description":"Median max power rating per charger, in kW.","type":["number","null"]},"medianPortsPerLocation":{"description":"Median number of ports per location.","type":["number","null"]},"medianChargersPerLocation":{"description":"Median number of chargers per location.","type":["number","null"]},"occupancyDistributionPercent":{"type":"object","properties":{"from0To25":{"type":["number","null"]},"from25To50":{"type":["number","null"]},"from50To80":{"type":["number","null"]},"from80To100":{"type":["number","null"]}},"required":["from0To25","from25To50","from50To80","from80To100"],"additionalProperties":false,"description":"Average share of time stations spend in each occupancy band."}},"required":["averageUtilizationPercent","averageChargingRatePerKwh","minChargingRatePerKwh","maxChargingRatePerKwh","estimatedMonthlyRevenue","estimatedMonthlyEnergyKwh","medianMaxPowerKw","medianPortsPerLocation","medianChargersPerLocation","occupancyDistributionPercent"],"additionalProperties":false},"tesla":{"type":"object","properties":{"averageUtilizationPercent":{"description":"Average utilization, 0-100.","type":["number","null"]},"averageChargingRatePerKwh":{"description":"Average price per kWh, in local currency.","type":["number","null"]},"minChargingRatePerKwh":{"description":"Lowest price per kWh.","type":["number","null"]},"maxChargingRatePerKwh":{"description":"Highest price per kWh.","type":["number","null"]},"estimatedMonthlyRevenue":{"description":"Estimated average monthly revenue per station.","type":["number","null"]},"estimatedMonthlyEnergyKwh":{"description":"Estimated average monthly energy sold per station, in kWh.","type":["number","null"]},"medianMaxPowerKw":{"description":"Median max power rating per charger, in kW.","type":["number","null"]},"medianPortsPerLocation":{"description":"Median number of ports per location.","type":["number","null"]},"medianChargersPerLocation":{"description":"Median number of chargers per location.","type":["number","null"]},"occupancyDistributionPercent":{"type":"object","properties":{"from0To25":{"type":["number","null"]},"from25To50":{"type":["number","null"]},"from50To80":{"type":["number","null"]},"from80To100":{"type":["number","null"]}},"required":["from0To25","from25To50","from50To80","from80To100"],"additionalProperties":false,"description":"Average share of time stations spend in each occupancy band."}},"required":["averageUtilizationPercent","averageChargingRatePerKwh","minChargingRatePerKwh","maxChargingRatePerKwh","estimatedMonthlyRevenue","estimatedMonthlyEnergyKwh","medianMaxPowerKw","medianPortsPerLocation","medianChargersPerLocation","occupancyDistributionPercent"],"additionalProperties":false},"nonTesla":{"type":"object","properties":{"averageUtilizationPercent":{"description":"Average utilization, 0-100.","type":["number","null"]},"averageChargingRatePerKwh":{"description":"Average price per kWh, in local currency.","type":["number","null"]},"minChargingRatePerKwh":{"description":"Lowest price per kWh.","type":["number","null"]},"maxChargingRatePerKwh":{"description":"Highest price per kWh.","type":["number","null"]},"estimatedMonthlyRevenue":{"description":"Estimated average monthly revenue per station.","type":["number","null"]},"estimatedMonthlyEnergyKwh":{"description":"Estimated average monthly energy sold per station, in kWh.","type":["number","null"]},"medianMaxPowerKw":{"description":"Median max power rating per charger, in kW.","type":["number","null"]},"medianPortsPerLocation":{"description":"Median number of ports per location.","type":["number","null"]},"medianChargersPerLocation":{"description":"Median number of chargers per location.","type":["number","null"]},"occupancyDistributionPercent":{"type":"object","properties":{"from0To25":{"type":["number","null"]},"from25To50":{"type":["number","null"]},"from50To80":{"type":["number","null"]},"from80To100":{"type":["number","null"]}},"required":["from0To25","from25To50","from50To80","from80To100"],"additionalProperties":false,"description":"Average share of time stations spend in each occupancy band."}},"required":["averageUtilizationPercent","averageChargingRatePerKwh","minChargingRatePerKwh","maxChargingRatePerKwh","estimatedMonthlyRevenue","estimatedMonthlyEnergyKwh","medianMaxPowerKw","medianPortsPerLocation","medianChargersPerLocation","occupancyDistributionPercent"],"additionalProperties":false}},"required":["stationCount","percentStationsWithData","all","tesla","nonTesla"],"additionalProperties":false},{"type":"null"}],"description":"Utilization of nearby stations. `premium` only, otherwise `null`."},"utilityCompanies":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"additionalProperties":false}},"justice40":{"type":"string","enum":["yes","no","partial"],"description":"Whether the location is in a Justice40 disadvantaged community."},"ownership":{"type":["object","null"],"description":"Ownership and land details for the location. `null` unless `options.includeOwnership` is set, or if none were found. Sign in to EVpin to see this field’s structure."},"billing":{"type":"object","properties":{"amountCharged":{"type":"number","description":"What this request cost, in US dollars, after any volume discount."},"currency":{"type":"string","const":"usd"},"listPrice":{"type":"number","description":"Your price for this tier before any volume discount, in US dollars."},"volumeDiscountPercent":{"type":"number","description":"Volume discount applied to this request, in percent. Applies automatically once your organization has scored enough new sites this billing month; 0 before that."},"reason":{"type":"string","enum":["charged","premium_upgrade","repeat_location","unlimited"],"description":"`charged`: a newly scored site. `premium_upgrade`: a site already scored at `standard` in the last 30 days, re-scored at `premium`; you pay only the difference. `repeat_location`: already paid for at this tier or higher in the last 30 days, so free. `unlimited`: your plan does not meter API usage."}},"required":["amountCharged","currency","listPrice","volumeDiscountPercent","reason"],"additionalProperties":false}},"required":["id","object","createdAt","location","overallScore","tier","rating","signals","nearbyUtilization","utilityCompanies","justice40","ownership","billing"],"additionalProperties":false,"description":"Site score for one location."},"Usage":{"type":"object","properties":{"object":{"type":"string","const":"usage"},"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"plan":{"type":"string","enum":["free","pro","max"],"description":"Your EVpin plan. It sets your rates and monthly plan credit."},"rateLimit":{"type":"object","properties":{"requestsPerMinute":{"type":"number","description":"Site score requests your organization can make per minute."}},"required":["requestsPerMinute"],"additionalProperties":false},"balance":{"type":"object","properties":{"currency":{"type":"string","const":"usd"},"unlimited":{"type":"boolean","description":"Your plan does not meter API usage."},"available":{"type":"number","description":"Everything you can spend right now: remaining plan credit plus prepaid credit. In US dollars."},"planCredit":{"type":"number","description":"Plan credit granted for the current billing month. In US dollars."},"planCreditRemaining":{"type":"number","description":"Plan credit left this month. It is used first and does not roll over. In US dollars."},"prepaid":{"type":"number","description":"Prepaid credit, used after plan credit: credit your organization bought, plus any free credit. In US dollars."},"freeCredit":{"type":"number","description":"The one-time free credit for organizations without a plan, not yet used. Already included in `prepaid` and `available`. In US dollars."},"periodStart":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"periodEnd":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}],"description":"When plan credit resets."}},"required":["currency","unlimited","available","planCredit","planCreditRemaining","prepaid","freeCredit","periodStart","periodEnd"],"additionalProperties":false},"rates":{"type":"object","properties":{"siteScore":{"type":"object","properties":{"standard":{"type":"number","description":"Price of a `standard` site score on your plan. In US dollars."},"premium":{"type":"number","description":"Price of a `premium` site score on your plan. In US dollars."}},"required":["standard","premium"],"additionalProperties":false},"volumeDiscount":{"type":"object","properties":{"percent":{"type":"number"},"afterSiteScores":{"type":"number","description":"New sites per billing month before the discount applies."},"siteScoresThisPeriod":{"type":"number","description":"New sites scored this billing month so far."}},"required":["percent","afterSiteScores","siteScoresThisPeriod"],"additionalProperties":false}},"required":["siteScore","volumeDiscount"],"additionalProperties":false},"currentPeriod":{"type":"object","properties":{"requests":{"type":"number","description":"All authenticated requests this period."},"successfulRequests":{"type":"number"},"amountCharged":{"type":"number","description":"Spent this period. In US dollars."}},"required":["requests","successfulRequests","amountCharged"],"additionalProperties":false}},"required":["object","organization","plan","rateLimit","balance","rates","currentPeriod"],"additionalProperties":false,"description":"Balance, rates and request counts for your organization."},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_api_key","invalid_request","location_not_found","unsupported_region","insufficient_balance","rate_limited","internal_error","service_unavailable"]},"message":{"type":"string"},"requestId":{"type":"string"},"issues":{"description":"Field-level problems, for `invalid_request`.","type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}}},"required":["code","message","requestId"],"additionalProperties":false}},"required":["error"],"additionalProperties":false,"description":"Every error response has this shape. Errors are never charged."}},"headers":{"X-Request-Id":{"description":"Unique ID for this request.","schema":{"type":"string"}},"RateLimit-Limit":{"description":"Requests allowed per window.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Requests left in the current window.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Seconds until the window resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}}}}