Listing Bills

Get a list of Bills corresponding to at least one Meter or Authorization filter parameter. Unfortunately, getting a list of all bills for every Meter is usually too resource intensive, so we return an error if you try to request bills without an authorizations or meters query parameter.


GET https://utilityapi.com/api/v2/bills
# Get a list of all a meter's bills
curl -H 'Authorization: Bearer API_TOKEN_HERE' \
    'https://utilityapi.com/api/v2/bills?meters=123'
# Get a year's worth of bills for all meters under an authorization
curl -H 'Authorization: Bearer API_TOKEN_HERE' \
    'https://utilityapi.com/api/v2/bills?authorizations=222&start=2015-01-01&end=2015-12-31'
# Get the latest bill for a meter
curl -H 'Authorization: Bearer API_TOKEN_HERE' \
    'https://utilityapi.com/api/v2/bills?meters=222&limit=1&order=latest_first'

Use at least one Meter or Authorization filter parameter. Unfortunately, getting a list of all bills for every Meter is usually too resource intensive, so we return an error if you try to request bills without an authorizations or meters query parameter.

Parameter Format Description Example
authorizations List(UID String) Filter by Authorization uids. Separate with commas (,). authorizations=123,456
meters List(UID String) Filter by Meter uids. Separate with commas (,). meters=123,456
start ISO8601 or YYYY-MM-DD Filter bills that start on or after this date. Can be either a full ISO8601 timestamp or a short date (YYYY-MM-DD). If a short date, the local timezone of the utility for each result is used. start=2015-01-01
end ISO8601 or YYYY-MM-DD Filter bills that end on or before this date. Can be either a full ISO8601 timestamp or a short date (YYYY-MM-DD). If a short date, the local timezone of the utility for each result is used. end=2015-12-31
limit Integer Limit results to a specific number of Bills. limit=12
order String Order results by earliest_first or latest_first (default is latest_first). order=earliest_first
after String A token representing the point to continue from on the next page of items. after=456

Returns a BillListing object containing a list of Bill objects. If the number of results is over 1000, a next parameter will have the link to the next in the series of lists.

// Example result
{
    "bills": [
        {"uid": "12837438", "created": ...},
        {"uid": "12837438", "created": ...},
        ...
    ],
    "next": null,
}

This is the object that contains the Bill results for the request. We don't just return a straight list of results so that we can paginate results if needed. Currently, the maximum results per request is set at 1000.

Parameter Format Description Example
bills List(Bill) List of Bill results. [{"uid": ...}, ...]
next URL or null If there are more results than the page limit, this is a link to the next set of results. "https://utilityapi.com/api/v2/bills?authorizations=2456&after=234"
// Example BillListing
{
    "bills": [...],
    "next": null,
}
Code Response Format Description
200 BillListing Successful request.
202 Empty Request is too large to be synchronous, so building a cache asynchronously. See Retry-After header for how long to wait before trying again.
400 Error The query parameters included are malformed. Check the error in the response for the type of error:
  • invalid_param - One of the query parameters was invalid. Check the error description for more info.
We may add more error types in the future, so be able to handle unknown types.
401 Error Invalid or missing access_token. See our docs on Authentication for how to properly use your access_token.
429 N/A The request was rate limited. Check the Retry-After response header for how long to wait until retrying the request. Do not expect any specific response format for this error (could be html, json, or nothing).
500 N/A Internal server error. Do not expect any specific response format for this error (could be html, json, or nothing). This error is logged and will be fixed by our engineers.
503 N/A Site is currently down for maintenance. Do not expect any specific response format for this error (could be html, json, or nothing).
504 N/A We tried to build this request but timed out. Please try again later. Do not expect any specific response format for this error (could be html, json, or nothing).