Only this pageAll pages
Powered by GitBook
1 of 51

🇳🇿 NZ AutoGrab API Doc

AutoGrab Basics

Loading...

Loading...

Loading...

Authentication

Loading...

Loading...

Vehicle Search

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Sourcing

Loading...

Loading...

Loading...

Loading...

Vehicle Data

Loading...

Loading...

Loading...

Valuation

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Embeddable Products

Loading...

Loading...

Loading...

Loading...

Other Products & Resources

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Integration Overview

Key things to know before you start.

Overview

Our API uses the OpenAPI 2.0 specification, making it easy for our partners to integrate. We want to ensure the best possible experience when integrating with our stack.

Environments

Environment
URL

Regions

Certain API endpoints require that a region be passed as part of the request URL. Where necessary it is expected that region=nz be included where region is required.

For example: https://api.autograb.com.au/v2/vehicle/239c8928fnc934fc?region=nz

Region

Country
Region Code

API Keys

Your account manager will provision API keys for your account. If you require a key to be revoked please get in touch with your account manager.

Quota Limits

APIs have soft quota limits that are enforced based on your contract agreement. To discuss these limits please get in touch with your account manager.

Rate Limiting

We strictly monitor the number of requests per second — if you exceed your allocation the API will respond with HTTP 429 Too Many Requests. We will also return additional headers to help you better understand when rate limits will be applied.

The limits are applied per API product and are decided based on your contract agreement. Rate limits do not relate to quotas.

Header
Example
Description

AutoGrab Developer Hub

Welcome to the developer hub, this is your reference to integrate with all aspects of the system. We've got guides and reference materials to support and accelerate your development.

You can explore our endpoints by searching or asking questions through the AI-powered doc system. See what product fits your user case by clicking a top-level grouping below.

Basic Key Based Authentication

We support API key-based authentication, recommended if you build applications to integrate with our platform.

Do you need a key? Contact your sales rep or contact to request one to start developing.

Key Types

API Test Cases

Test your requests in a safe zero-cost way through our test case set.

You can use our test cases to confirm your implementation on our production endpoints. All requests using these values are not billable.

Test Cases

Refer below to set of test cases. They are all linked and refer back to the same vehicle IDs.

Type
Region
Value

100

Number of requests included in your contract.

Monthly-Max-Request-Quota

100000

Maximum number of requests allowed in your contract.

Monthly-Request-Total

100

Monthly requests performed for this request type.

Production V2

https://api.autograb.com.au/v2/

New Zealand

nz

Rate-Limit-Remaining

60

Number of remaining requests until the limit is reset.

Rate-Limit-Total

60

Number of total requests that can be made until the limit is reset.

Rate-Limit-Reset

1609459200

The timestamp of when the limit will reset.

Monthly-Base-Request-Quota

Secret API Key

A secret API key is for the server side and should not be shared with the front end.

Example Key: sec_23hcfb8374bfhc833i4uhx

Public API Key

A public API key is used on your website to call the API. These keys are limited to your domain and are safe to share publicly.

Example Key: pub_3ficuhb34u8fnxu34h9fm

Authenticating Requests

When making requests to the APIs, include the key in your request.

Other Authentication Methods

We also support OAuth, you can read more about this authentication mechanism here.

Authorization: ApiKey {your API key}
Outcome

Registration Plate

New Zealand

REG4SUCCESS

Returns a successful lookup response with a high-quality vehicle match

Registration Plate

New Zealand

REG4WARNING

Returns a successful lookup response with a low-match quality warning

Registration Plate

New Zealand

REG4NOMATCH

Returns the VIN and vehicle description but no matching vehicle

Registration Plate

New Zealand

REG4VINONLY

Supported Endpoints

Test cases are supported across a range of API endpoints listed below. If the endpoint you are testing with is not listed get in touch to request test data.

  • /valuations/predict

  • /valuations/vins

  • /valuations/registrations

  • /valuations/residual

  • /valuations/predict/conditions

  • /sourcing/market_overlay

  • /sourcing/market_overlay/statistics

Implementation Guide

An example implementation could run a test as part of an integration test or development process. For example, you could test a valuation flow by first using a registration plate to get the ID (which is also test data) and send that to a /predict to get a valuation and a market overlay.

Vehicle Search

Find vehicles in our comprehensive, regional databases using plain text search, aggregate field lookup & state vehicle registration.

Vehicle Valuation

Value new & used vehicles from our database, and calculate trade-in price & future value using our highly accurate pricing model.

Vehicle Data

Find descriptive data on vehicles to enrich your user experiences or power your backend workflows.

Vehicle History

View a vehicle's history as it moves through marketplaces over time.

Sourcing

The Sourcing API allows you to access lead and listing data from a variety of used car marketplaces.

Customer Recapture

Track your past customers and get notified when they list vehicles for sale online.

Embeddable Products

Explore products like Valuation Widget, Deal Gauge and more.

Certificates

Generate PDF certificates to show valuations or vehicle details in your own workflows.

Webhooks

The Webhooks API allows you to configure endpoints that will receive PUSH events from the platform.

Only returns the VIN and no other vehicle details

VIN

New Zealand

00000000000000002

Returns a valid VIN match in New Zealand

Vehicle ID

New Zealand

3333333333333333

Can be used for /Predict or

/Sourcing to return outcomes.

Vehicle ID Search

Get summary data on a vehicle by searching for its ID

If you know a vehicles ID already and would like summary data you can leverage a basic vehicle search.

Request

v2/vehicles/5233518187642880?region=nz

Response

{
    "vehicle": {
        "id": "5233518187642880",
        "region": "nz",
        "title": "2010 Volkswagen Polo Comfortline Automatic",
        "year": "2010",
        "make": "Volkswagen",
        "model": "Polo",
        "badge": "Comfortline",
        "series": "6R",
        "model_year": "MY10",
        "release_month": 1,
        "release_year": 2010,
        "body_type": "Hatchback",
        "body_config": null,
        "transmission": "Dual Clutch Automatic (DCT)",
        "transmission_type": "Automatic",
        "wheelbase": null,
        "wheelbase_type": null,
        "fuel": "Petrol",
        "fuel_type": "Petrol",
        "engine": "Piston",
        "engine_type": "Piston",
        "drive": "FWD",
        "drive_type": "Front Wheel Drive",
        "num_doors": 5,
        "num_seats": 5,
        "num_gears": 7,
        "num_cylinders": 4,
        "capacity_cc": 1390,
        "power_kw": 63,
        "torque_nm": 132,
        "range": null,
        "options": []
    },
    "success": true
}

Vehicle Data Basics

Get the level of detail you need on the vehicle you want.

The Vehicle Data API set allows you to find descriptive information on a vehicle at the level of granularity you require. This API requires and an appropriate license attached to it.

Condition Array

Predict all potential values across many conditions for a vehicle.

If you wish to predict valuations at all available conditions of the vehicle. That is those between 1 and 5,with 1 being poor and 5 being excellent condition. You can utilise the conditions in the same way you would use the standard /v2/valuations/predict/ endpoint.

In this endpoint, we will return all available conditions in an array. This can power great user experiences where you may wish to show a large range depending on the condition of the vehicle.

Valuation Features

Enhance your requests with additional data.

You can request more data than the standard payload by leveraging a range of features described below.

Ensure your commercial agreement has these features enabled if you require them.

Max Offer - Retail Base

This feature will return your max configuration in your valuation with the final price showing the deductions from the retail valuation. Use features=max_offer to receive this payload. Read more on how to set and update your .

Max Offer - Trade Base

This feature will return your max configuration in your valuation with the final price showing the deductions from the trade valuation. Use both

Sourcing Basics

Find the right market data to inform your decision making

The Sourcing API set allows you to find listing data for comparative and market insights. This API requires and an appropriate license attached to it.

Brand Guidelines

How to use AutoGrabs brand correctly

The following guidelines help developers to use AutoGrabs’s brand and assets correctly and consistently where approved to do so.

Naming Apps and Integrations

When naming apps and integrations that use AutoGrab data, please follow these guidelines:

  • Use a unique name for your application or integration

Embeddable Basics

AutoGrab hosts a range of embeddable products you can use to rapidly deploy solutions to the market to engage new customers and delight existing ones.

API Reference Parameter

Use this to utilise a single API key but track usage by passing a unique param per use-case or customer.

On any endpoint add the new parameter reference_id and pass in your ID.

This ID will be stored against usage records if supplied and can be used to support custom billing workflows as agreed with your account representative.

  • Do not use “AutoGrab” in the name of your application or integration

  • Clearly state that the integration is built by you — and not AutoGrab

  • Do not use a name that is confusingly similar to AutoGrab or infringes on any other trademarks

  • Logo & Brand Usage

    The logo and wordmark are the most prominent elements of the AutoGrabs brand and it’s important to use them correctly.

    Detailed instructions for the usage of our brand assets are provided via our dedicated brand usage guide.

    9MB
    Brand Guidelines.pdf
    PDF
    Open
    {
        "success": true,
        "prediction": {
            "id": "8b8663c6-fa04-4a77-9f31-fd2fc32cefa9",
            "vehicle_id": "4648873456828416",
            "kms": 30000,
            "price": 15986,
            "score": 0.6676,
            "retail_price": 15986,
            "adjustment": null,
            "conditions": [
                {
                    "condition_score": 1,
                    "trade_price": 8740.2
                },
                {
                    "condition_score": 2,
                    "trade_price": 9988.8
                },
                {
                    "condition_score": 3,
                    "trade_price": 11237.4
                },
                {
                    "condition_score": 4,
                    "trade_price": 11861.7
                },
                {
                    "condition_score": 5,
                    "trade_price": 12486
                }
            ]
        }
    }

    VIN Search

    Get vehicle details from a VIN.

    The Vehicle VIN API allows you to search for vehicles by VIN. The request requires only a region, VIN & API key. This will return either a matching vehicle with possible option packs, or a null.

    Example

    curl "https://api.autograb.com.au/v2/vehicles/vins/WVWZZZ6RZAU020000?region=nz" \
         -H 'ApiKey: {API_KEY}'

    Example Response

    {
        "success": true,
        "vehicle": {
            "id": "5233518187642880",
            "region": "nz",
            "title": "2010 Volkswagen Polo Comfortline Automatic",
            "year": "2010",
            "make": "Volkswagen",
            "model": "Polo",
            "badge": "Comfortline",
            "series": "6R",
            "model_year": "MY10",
            "release_month": 1,
            "release_year": 2010,
            "body_type": "Hatchback",
            "body_config": null,
            "transmission": "Dual Clutch Automatic (DCT)",
            "transmission_type": "Automatic",
            "wheelbase": null,
            "wheelbase_type": null,
            "fuel": "Petrol",
            "fuel_type": "Petrol",
            "engine": "Piston",
            "engine_type": "Piston",
            "drive": "FWD",
            "drive_type": "Front Wheel Drive",
            "num_doors": 5,
            "num_seats": 5,
            "num_gears": 7,
            "num_cylinders": 4,
            "capacity_cc": 1390,
            "power_kw": 63,
            "torque_nm": 132,
            "range": null,
            "options": []
        },
        "upstream_vehicle": "2010 Volkswagen POLO Polo Hatchback Automatic Petrol 1,380cc",
        "confidence": "standard",
        "additional_vehicles": []
    }

    Remember you can enrich your VIN payloads with features, read about them here.

    Market Statistics

    Get key statistics on any vehicle ID

    Overview

    The Market Overlay Statistics API delivers statistics we generate on your behalf from the Market Overlay endpoint.

    Starting with your Vehicle ID post it to the statistics endpoint.

    v2/sourcing/market_overlay/statistics/5655899674771456&minimum_days=60&region=nz

    An example response is below.

    {
        "success": true,
        "sample_size": 282,
        "days_checked": 60,
        "outlier_count": 9,
        "avg_days_to_sell": 14.310300431547615,
        "price_when_new": 56390
    }

    As this endpoint is part of the market overlay route you can enhance your payload with additional features. Refer to the features on the market overlay to see what's available.

    Max Offer Configuration

    Set and update your max offer config to refine your price predictions.

    Get Configuration

    Get your existing max offer configuration by using the request below.

    /v2/valuations/max_offer_configuration

    You will receive a payload as per below showing you your current configuration.

    {
      "success": true,
      "max_offer_configuration": {
        "reconditioning_percentage": 0,
        "reconditioning_fixed": 0,
        "profit_margin_percentage": 0,
        "profit_margin_fixed": 0,
        "lot_percentage": 0,
        "lot_fixed": 0,
        "transport_percentage": 0,
        "transport_fixed": 0,
        "admin_percentage": 0,
        "admin_fixed": 0
      }
    }

    Update Configuration

    Upsert a max offer configuration to change a part of it.

    /v2/valuations/max_offer_configuration

    Your PUT request must conform to our schema as outlined below.

    {
      "reconditioning": {
        "amount": 1000,
        "type": "fixed"
      },
      "profit_margin": {
        "amount": 1000,
        "type": "fixed"
      },
      "lot": {
        "amount": 1000,
        "type": "fixed"
      },
      "transport": {
        "amount": 1000,
        "type": "fixed"
      },
      "admin": {
        "amount": 1000,
        "type": "fixed"
      }
    }
    features=max_offer_trade,max_offer
    to receive this payload. Read more on how to set and update your
    .

    Bounds

    This feature will return the upper and lower bounds used as part of your valuation. Use features=bounds to receive this payload.

        "max_offer": {
            "reconditioning": 1250,
            "profit_margin": 3116.04,
            "lot": 1000,
            "transport": 300,
            "admin": 150,
            "price": 20150.96
        }
    configuration here
        "max_offer": {
            "reconditioning": 1250,
            "profit_margin": 3116.04,
            "lot": 1000,
            "transport": 300,
            "admin": 150,
            "price": 20150.96
        }
    configuration here
        "bounds": {
            "retail": {
                "lower": 24408.98,
                "upper": 28044.36
            },
            "trade": {
                "lower": 21072,
                "upper": 23322
            }
        }
    authentication

    Factory Build Data

    Use this if you require build sheet-level information on what the vehicle left the factory with.

    Vehicle History

    Use this if you require a history-style description of the vehicle's pricing and listing history.

    authentication

    Market Overlay

    Use this to get a view of the market as it relates to a specific vehicle.

    Market Statistics

    Use this to get key statistics on any vehicle ID.

    Deal Gauge & Indicator

    Used to provide snapshot pricing information on a vehicle's position in the market.

    Valuation Widget

    Used to provide an instant cash offer journey to your websites.

    Market Insights Snapshot

    Used to provide insights into the marketability of a given car in a regional marketplace.

    OAuth Authentication

    At the customer's preference, it is possible to integrate with our APIs via OAuth client credential token grant.

    OAuth integration consists of 2 basic components:

    1. Token management (ensure your system always has a valid OAuth token available)

    2. REST API call signing using a valid token

    Token management

    Before implementing token management, make sure you have a valid client_id and client_secret as provided by us (Your sales rep will provide them). These are the credentials you will use to get valid tokens from the auth-broker.

    auth-broker POST call to receive a valid OAuth token

    A valid token can be stored locally for use in subsequent API calls. It is recommended to calculate a safe expiry timestamp based on the expires_in property of the response body and use this to pre-emptively refresh your token when it nears expiry.

    REST API call signing

    With a valid OAuth token, each REST API call that you make can be authorised by encoding the as-provided token string into your Authorization header using the Bearer prefix.

    Troubleshooting

    Token management

    • I don’t get a 200 response on my request-token calls Double-check your client_id and client_secret with AutoGrab. Double-check your Basic Auth encoding. Double-check your content-type header and post-body structure.

    • I have a valid token but my API calls are failing 401 response -- there may be a problem with your token, or the way Bearer Auth is being encoded in the headers.

    AutoGauge

    Create your own price indication and benchmarking gauge.

    The AutoGrab AutoGauge is an endpoint that delivers market benchmarking information with inputs of listing information. It supports a range of inputs depending on your use case.

    Example Post Body

    The body of the request can accept a range of inputs depending on your listing data. All available inputs are below.

    The response for this request is below. The AutoGauge can be presented with a broad range of vehicle identifiers and will consider them dependent on your commercial agreement. In the scenario above, the AutoGrab ID was presented and used, and all other inputs were supplied as backups.

    Use Case-Driven Implementation Examples

    Marketplace Implementation

    If you are a marketplace you will store your own marketplace IDs against each listing. You can submit those via the request body to produce an AutoGauge response.

    Dealer Website Implementation (AutoGrab Customer)

    As a customer with an existing AutoGrab API integration, you will likely have stored the vehicles IDs from vehicle search steps you've previously taken. In this case, supply your known vehicle_id as part of the request. This is the lowest-cost implementation as it does not require a VIN or Registration search.

    Dealer Website Implementation (Non-Direct Customer)

    As an app or new customer, you may only have the VIN and registration information for your vehicles. You can pass them into the request body as below.

    Registration or VIN-driven AutoGauge requests attract an additional lookup fee. Speak to your account representative for commercial implications.

    FAQ

    These are frequently asked questions about AutoGrab and our products.

    What is a VIN?

    The car's vehicle identification number (VIN) is the identifying code for a specific automobile. The VIN serves as the car's fingerprint, as no two vehicles in operation have the same VIN. A VIN is composed of 17 characters (digits and capital letters) that act as a unique identifier for the vehicle. A VIN displays the car's unique features, specifications and manufacturer. The VIN can be used to track recalls, registrations, warranty claims, thefts and insurance coverage.

    What is an Vehicle ID?

    An AutoGrab ID or AGID is a unique identifier for a vehicle in our catalogue. All vehicles inside AutoGrab reference this as the source of metadata about the vehicle.

    How do I know the current status of each endpoint?

    Go to to view the current system state.

    Valuation Features

    Generate upper and lower bounds on each valuation.

    Valuation Bounds

    If you require the upper and lower bounds used to calculate a prediction you can use features=bounds.

    This will yield the bounds on the retail and trade prices.

    /v2/valuations/registrations/BMT038?features=bounds

    {
        "success": true,
        "prediction": {
            "id": "e2813b16-1012-41b5-9ea3-3b65675c50fd",
            "vehicle_id": "5804870883868672",
            "kms": 57306,
            "price": 20622,
            "score": 0.9239,
            "retail_price": 20622,
            "trade_price": 17122,
            "adjustment": null
        },
        "bounds": {
            "retail": {
                "lower": 19622,
                "upper": 21872
            },
            "trade": {
                "lower": 16122,
                "upper": 18372
            }
        }
    }

    Max Offer Adjustments

    If you have a max offer profile setup via API or via the AutoGrab web app you can opt to receive the same results via API. Use features=max_offer to receive them in your response.

    /v2/valuations/predict?features=max_offer

    If you want to set or update your .

    Matching Confidence

    Understand how we match vehicles and the expected outcomes.

    The matcher is a foundational piece of technology that reconciles market, listing and data inputs describing cars against our vehicle catalogue. This is done so you can utilise our market-leading vehicle ID for additional workflows like valuation, market data and more.

    For example, when you request information on a registration plate the primary input we receive is its description "upstream_vehicle": "2019 Isuzu Ute MU-X 4x2 LS-M 4 Wagon 6sp auto 3.0L 3000cc 4cyl T/Diesel 2018. That needs to be matched to "id": "4843865643155456" which represents hundreds of data points related to the Isuzu.

    We are transparent about the confidence of the match and you can leverage this to inform your workflows. In each relevant vehicle discovery method you will receive a "confidence" response.

    Confidence Parameter
    Explanation

    In the reduced confidence outcome we highly recommend showing the upstream_vehicle parameter. This will help your user ensure the vehicle we have responded with is representative of the real vehicle.

    Facet Search

    Use smart drop downs to find a vehicle.

    Search for Vehicles by facets

    The Vehicle Facets API allows you to narrow down the matching vehicle based on the vehicle's parameters. The facets available are: year, make, model, badge, series, transmission, body, body_style, fuel, engine and wheelbase.

    If you would like to return aggregations of factes, use a comma-separated list in the facets field: eg. facets=badge,series,transmission.

    Facets User Interface Example

    This function is useful when supplying data to drop-downs for display on a form. A good example of using Facets API is .

    For a preview of how facets in implemented inside the AutoGrab web app see the video below.

    Valuation Widget

    The Valuation Widget offers an easy-to-configure and install instant cash offer journey for your website.

    Overview

    The widget can capture leads by auto-filling vehicle information, asking key questions and making a conditional offer informed by your preset valuation strategy.

    It is highly customisable to your dealership brand or corporate imagery requirements, feeling at home on your existing website.

    The resulting leads are deployed over email or select LMS providers depending on your region.

    Example Implementations

    You can find an example of the valuation widget operating on the. For a more brand / corporate imagery-compliant implementation refer to

    Implementation

    Speak to your sales rep about your desired implementation pattern. We will supply you with staging and production iFrame url code as part of your deployment process.

    Position On Page

    You have two options to embed the iframe inside your website. In both these options, it is critical that you set the iframe width to 650px and centred.

    Popup - holding the iframe in a popup container and ensuring you conform to the AUTOGRAB_VALUATION_HIDE to event listening to close the popup container and AUTOGRAB_VALUATION_DIMENSIONS resize the height dynamically.

    On Page - holding the iframe on a page ensuring you let us know so we can remove the close button. Since the page can still extend vertically you need to respond to the AUTOGRAB_VALUATION_DIMENSIONS alert.

    Event Listeners

    Please ensure your implementation meets the minimum event listener requirements.

    The valuation widget will send messages you need to pay attention to via the iframe postMessage function. The messages are as follows.

    AUTOGRAB_VALUATION_SUCCESS

    The widget loaded successfully, no intervention is needed.

    AUTOGRAB_VALUATION_ERROR

    There was an exception or error delivering the iframe contents.

    AUTOGRAB_VALUATION_HIDE

    The close button at the end of the workflow or close X in the interface has been pressed.

    AUTOGRAB_VALUATION_DIMENSIONS

    The iframe has resized due to changed in the contents. Please respond by resizing the iframe container to hold the new contents without cropping.

    Pre-Accident Valuation API Suite

    Deliver you own PAV style product by leveraging a range of AutoGrab API products.

    To deliver a PAV-style experience you can leverage existing API endpoints to deliver your desired UX. Below is a broad guide on how to achieve a similar outcome. Each integration will have nuances and specific commercial differences - don't hesitate to speak to your Integrations support person or sales executive for guidance.

    Workflow Overview

    Marketplace ID Lookup

    A special use case endpoint for our marketplace customers to find their own leads on AutoGrab systems.

    Overview

    In a scenario where you want to understand the vehicle ID or data on listed vehicles, you can use the marketplace search system.

    Prerequisites to access:

    1. To be approved to access this special use case endpoint, contact your account manager.

    URL Linking Structure

    Jump directly out of your own applications into a valuable part of the AutoGrab product suit.

    As an approved integration partner you can create buttons inside your system that link directly to parts of the AutoGrab product suite. This can create valuable user experiences for your customers giving them new abilities to explore datasets outside your platform.

    The "app.autograb.com.au/" prefix applies for most users, consider if your AutoGrab customer audiences use SSO to access the app. If so you may need to dynamically update your prefix like "example.autograb.com.au/".

    Valuation Basics

    The Valuation API set allows you to predict current and future prices on vehicles. This API requires and an appropriate license attached to it.

    {
      "region": "nz",
      "odometer": 10000,
      "listing_price": 30000,
      "vehicle_id": "5257788510961664",
      "vin": "2T1BY32E95C347786",
      "rego": "BMT038",
      "vehicle_description": "2015 Toyota Corolla Ascent Automatic",
      "marketplace": "autotrader.co.nz",
      "marketplace_id": "13495712"
    }
    {
      "success": true,
      "gauge": {
        "id": "b2824bfd-d4a4-45e4-a81a-bed7b92c5cd9",
        "fill": 0.5,
        "listing_price": 24000,
        "market_range_min": 21000,
        "market_range_max": 26000,
        "confidence": 0.85,
        "sample_size": 10,
        "vehicle_title": "2015 Toyota Corolla Ascent Automatic"
      }
    }
    Real-Time Pricing

    At a minimum, a vehicle ID parameter must be included in the URL, as you can see below: https://app.autograb.com.au/pricing?vehicleId=6673067719786496 You will need to include a rego, vin and/or state parameter to pre-fill the registration search box without running a rego lookup. This will associate the pricing record with the correct rego and VIN and enable easy access to PPSR lookups as those details will also be pre-filled: https://app.autograb.com.au/pricing?vehicleId=6673067719786496&rego=CER226&vin=WBATR92040LE26311&state=VIC Ideally, the odometer reading should also be passed in the URL, otherwise, it will default to 0kms. You can use the odometer input with or without the rego/vin inputs, but the vehicle ID is always required. https://app.autograb.com.au/pricing?vehicleId=6673067719786496&rego=CER226&vin=WBATR92040LE26311&state=VIC&kms=10000 The expected integration pattern assumes your user has access to app.autograb already. If they are not signed in they will be asked to. You can find the vehicle ID by using a vehicle search mechanism as you would have already done in your product.

    This URL strategy will not submit the valuation request, your user will need to push the button.

    Sourcing

    To jump to a specific vehicle in sourcing you can provide identifiers in the following URL patterns. If the identifier is not able to be matched to a vehicle in sourcing we will notify the user of this in app.

    Identifier
    URL Example

    Lead ID

    https://app.autograb.com.au/sourcing/leads/3394e05f-281d-477d-9a4d-3c361307acaf

    VIN

    https://app.autograb.com.au/sourcing?vin=6G1ZX54775L481373

    Registration Plate

    https://app.autograb.com.au/sourcing?rego=S075AMU

    MyListings

    To jump to a specific vehicle in MyListings you can provide identifiers in the following URL patterns. If you pass in an identifier that is not associated with the logged in dealer we will show an error popup notifying the user of this.

    Identifier
    URL Example

    Lead ID

    https://app.autograb.com.au/portfolio?lead_id=d0233c61-f4b9-4e3e-87c7-66fca7731005

    VIN

    https://app.autograb.com.au/portfolio?vin=7AT0H61YX14006214

    Registration Plate

    https://app.autograb.com.au/portfolio?rego=1GAJ330

        "confidence": "standard",

    The match from the input provided was at our standard confidence and is reliable for all use cases.

        "confidence": "reduced",

    The match from the input provided was not reliably matched and we have a lower confidence for its usage in general use cases.

    https://status.autograb.com.au/
    AutoGrab corporate homepage here
    Berwick Motor Group.
    {
        "success": true,
        "prediction": {
            "id": "8ff23a62-110e-48d7-8205-672af45f6103",
            "vehicle_id": "5016997049925632",
            "kms": 30000,
            "price": 56083,
            "score": 0.858,
            "retail_price": 56083,
            "trade_price": 47671,
            "adjustment": null
        },
        "max_offer": {
            "reconditioning": 1250,
            "profit_margin": 6729.96,
            "lot": 1000,
            "transport": 300,
            "admin": 150,
            "price": 46653.04
        }
    }
    Max Offer configuration over API view the guide here

    Plain-text Search

    Get results with a text string search

    The Vehicle Search API allows you to search for matching vehicles by plain-text input. The API will return an array of vehicles and the confidence score in a match for that given vehicle.

    The request requires a region, search string & API key. The default page length is 10, however, you can adjust this based on your requirements.

    Example

    /v2/vehicles?region=nz&search=2019 Volkswagen Polo S

    Example Payload

    Residual Valuations

    Predict the future value of a vehicle.

    The Residual Value prediction API uses current market trends to influence the depreciation curve of newer vehicles. The API allows you to influence the outcome of the prediction by either mutating stored Recommended Retail Price or by providing your own Retail Value for the car.

    In the example below we are sending the vehicle ID along with other key details to /v2/valuations/residual. The example body of the post is below.

    {
        "region": "au",
        "vehicle_id": "5804870883868672",
        "initial_kms": 30000,
        "yearly_kms": 20000
    }

    This yields a prediction over the 5-year projection timeframe as below.

    {
        "success": true,
        "predictions": [
            {
                "year": 0,
                "kms": 30000,
                "valuation": 23103,
                "score": 0.818203282
            },
            {
                "year": 1,
                "kms": 50000,
                "valuation": 20601,
                "score": 0.81823397
            },
            {
                "year": 2,
                "kms": 70000,
                "valuation": 18323,
                "score": 0.818168287
            },
            {
                "year": 3,
                "kms": 90000,
                "valuation": 16250,
                "score": 0.818181818
            },
            {
                "year": 4,
                "kms": 110000,
                "valuation": 14365,
                "score": 0.818124288
            },
            {
                "year": 5,
                "kms": 130000,
                "valuation": 12655,
                "score": 0.818175287
            }
        ]
    }

    Be aware of your listing ID and use that for the marketplace_id parameter.

  • Be aware of your marketplace identifier, it is your public domain name, e.g drive.com.au

  • Example Usage

    For example, if you were AutoTrader located in NZ with listing 808159 you could form the request below.

    You will get this response with the vehicle ID "4969003601429068" allowing you to interact with other services like the Market Overlay, Pricing Prediction and more.

    Limitations

    You are only able to search for a vehicle once it is present on our service. If you receive the error below this means we are not yet aware of the listing due to its recency.

    In this scenario, we recommend falling back to a test lookup using the title in its most descriptive format. E.g 2024 Nissan X-TRAIL Ti Wagon Ti 2.5L SUV 4WD. Refer to the text searching guide here.

    POST https://api.autograb.com.au/auth-broker/request-token
    
    Post body
    { grant_type: client_credentials }
    Headers 
    Content-Type: application/x-www-form-urlencoded
    Authorization
    Basic Auth of form client_id:client_secret Base64 encoded
    
    Sample success response body
    {
        "access_token": "[obfuscated-token-string]",
        "expires_in": 3599,
        "scope": "",
        "token_type": "bearer"
    }
    {
      "region": "nz",
      "odometer": 10000,
      "listing_price": 30000,
      "marketplace": "example.co.nz",
      "marketplace_id": "53445712"
    }
    {
      "region": "nz",
      "odometer": 10000,
      "listing_price": 30000,
      "vehicle_id": "5257788510961664",
      "vehicle_description": "2015 Toyota Corolla Ascent Automatic",
    }
    {
      "region": "nz",
      "odometer": 10000,
      "listing_price": 30000,
      "vin": "2T1BY32E95C347786",
      "rego": "BMT038",
      "vehicle_description": "2015 Toyota Corolla Ascent Automatic",
    }
    {
        "success": true,
        "vehicles": [
            {
                "id": "4664292750131200",
                "legacy_id": "4664292750131200",
                "badge": "TSI",
                "make": "Volkswagen",
                "model": "Polo",
                "series": null,
                "title": "2019 Volkswagen Polo TSI Manual",
                "year": "2019",
                "body_config_type": null,
                "body_type": "Hatchback",
                "drive_type": "Front Wheel Drive",
                "engine_type": "Piston",
                "fuel_type": "Petrol",
                "transmission_type": "Manual",
                "wheelbase_type": null,
                "capacity_cc": 999,
                "power_kw": 70,
                "torque_nm": 175,
                "range": null,
                "num_cylinders": 3,
                "num_doors": 5,
                "num_gears": 5,
                "num_seats": 5,
                "model_year": "MY19",
                "release_month": 7,
                "release_year": 2019
            },
            {
                "id": "4814155836030976",
                "legacy_id": "4814155836030976",
                "badge": "TSI",
                "make": "Volkswagen",
                "model": "Polo",
                "series": null,
                "title": "2019 Volkswagen Polo TSI Automatic",
                "year": "2019",
                "body_config_type": null,
                "body_type": "Hatchback",
                "drive_type": "Front Wheel Drive",
                "engine_type": "Piston",
                "fuel_type": "Petrol",
                "transmission_type": "Automatic",
                "wheelbase_type": null,
                "capacity_cc": 999,
                "power_kw": 70,
                "torque_nm": 175,
                "range": null,
                "num_cylinders": 3,
                "num_doors": 5,
                "num_gears": 7,
                "num_seats": 5,
                "model_year": "MY19",
                "release_month": 1,
                "release_year": 2019
            },
            {
                "id": "5855535618326528",
                "legacy_id": "5855535618326528",
                "badge": "TSI",
                "make": "Volkswagen",
                "model": "Polo",
                "series": null,
                "title": "2019 Volkswagen Polo TSI Automatic",
                "year": "2019",
                "body_config_type": null,
                "body_type": "Hatchback",
                "drive_type": "Front Wheel Drive",
                "engine_type": "Piston",
                "fuel_type": "Petrol",
                "transmission_type": "Automatic",
                "wheelbase_type": null,
                "capacity_cc": 999,
                "power_kw": 70,
                "torque_nm": 175,
                "range": null,
                "num_cylinders": 3,
                "num_doors": 5,
                "num_gears": 7,
                "num_seats": 5,
                "model_year": "MY20",
                "release_month": 10,
                "release_year": 2019
            },
            {
                "id": "5958589734715392",
                "legacy_id": "5958589734715392",
                "badge": "TSI",
                "make": "Volkswagen",
                "model": "Polo",
                "series": null,
                "title": "2019 Volkswagen Polo TSI Manual",
                "year": "2019",
                "body_config_type": null,
                "body_type": "Hatchback",
                "drive_type": "Front Wheel Drive",
                "engine_type": "Piston",
                "fuel_type": "Petrol",
                "transmission_type": "Manual",
                "wheelbase_type": null,
                "capacity_cc": 999,
                "power_kw": 70,
                "torque_nm": 175,
                "range": null,
                "num_cylinders": 3,
                "num_doors": 5,
                "num_gears": 5,
                "num_seats": 5,
                "model_year": "MY20",
                "release_month": 10,
                "release_year": 2019
            }
        ],
        "total": 4,
        "confidence": "standard"
    }
    /v2/vehicles/marketplace/?marketplace=autotrader.co.nz&marketplace_id=808159&region=nz
    {
      "success": true,
      "vehicle": {
        "id": "4969003601429068",
        "region": "au",
        "title": "2023 GWM Haval H6GT Ultra Auto 4WD",
        "year": "2023",
        "make": "GWM",
        "model": "Haval H6GT",
        "badge": "Ultra",
        "series": "B03",
        "model_year": null,
        "release_month": 8,
        "release_year": 2022,
        "body_type": "SUV",
        "body_config": null,
        "transmission": "Dual Clutch Automatic (DCT)",
        "transmission_type": "Automatic",
        "wheelbase": null,
        "wheelbase_type": null,
        "fuel": "Petrol",
        "fuel_type": "Petrol",
        "engine": "Piston",
        "engine_type": "Piston",
        "drive": "AWD",
        "drive_type": "Four Wheel Drive",
        "num_doors": 5,
        "num_seats": 5,
        "num_gears": 7,
        "num_cylinders": 4,
        "capacity_cc": 1998,
        "power_kw": 150,
        "torque_nm": 320,
        "range": 714,
        "options": [
          {
            "detail": "Metallic Paint",
            "price": 495
          },
          {
            "detail": "Standard Paint",
            "price": 0
          }
        ]
      }
    }
    {
      "error": true,
      "message": "Vehicle via marketplace drive.com.au/969515013 not found in database"
    }
    Isolate The Vehicle ID

    To begin the journey you will need to convert a real-world identifier into an vehicle ID to progress through the wider set of data. You can do this in four common ways;

    1. Registration Plate Search - the most common identifier consumers and agents are familiar with.

    2. VIN Search - for unregistered or for scenarios where a plate is not known

    3. Facet (Drop Down) Search - for scenarios where a standard identifier is not known or where the data delivered from upstream (Road Authority) is not reliable.

    Explore other vehicle discovery mechanisms here.

    For example, the response from a Registration search is below. Importantly you want to identify the ID, "id": "5932950835167232" for use in future steps.

    We offer a range of data enrichment packs to deliver more information in your registration or VIN lookups, explore them all here. Consider the usage of the compliance information or vehicle age products.

    Extrapolate Into Your Workflows

    Get Market Data

    To understand the position of that vehicle in the market you would call on the Market Overlay service. This would deliver you a large payload of information on the competitive set of the vehicle.

    To enrich your Overlay information we suggest employing additional features. For this use case, those are

    1. All Images - to get all the images attached to the lead inside AutoGrab.

    2. Primary Description - to get the primary detailed description of each listing for UI display purposes.

    Perform A Valuation

    To understand the value of the vehicle you will want to run a Valuation using the Pricing endpoint. That will give you the current retail and trade values for the vehicle. Consider employing the Bounds feature to understand the valuation upper and lower thresholds as part of this calculation.

    A basic overview of the PAV-Style integration workflow
    Westside Auto
    authentication

    Current Valuation

    Use this to generate market accurate predictions for vehicles.

    Residual Valuation

    Use this to predict the future value of a vehicle.

    VIN & Rego Valuation

    Generate a valuation with a Registration Plate or VIN

    Max Offer Configuration

    Use this to set your in app or API level max offer config.

    AutoGauge

    Use this to generate inputs for your own AutoGauge

    Features

    Enrich your market overlay payloads with additional data.

    The market overlay can be enhanced by passing option feature parameters. You can request a single feature or combine them to enrich your responses. You must have a unique permission enabled by your sales representative for each feature.

    Dealer Contact Details

    This feature will deliver the contact details of the advertising dealership as per the listing. Use features=dealer_contact_details

    Lead Starting Price

    This feature will deliver the initial price the lead was advertised at. Use features=lead_starting_price

    Lead Price Drops

    This feature will deliver the count of times the price has been dropped. If you would like to know what each drop (or increase) was consider the endpoint. Use features=lead_price_drops

    Vehicle RRP

    This feature will deliver the RRP of the vehicle when it was new according to our vehicle data catalogue, the same data and more is available via our . Use features=vehicle_rrp

    All Listing URLs

    This feature will deliver the listing URLs related to the lead across all sites it is listed on. Use features=listing_urls

    Primary Cover Image

    This feature will deliver the cover image for each record where available. Each image is stored for 90 days after delisting. Use features=cover_image

    All Images

    This feature will deliver all primary images for each record where available. Each image is stored for 90 days after delisting. Use features=all_images

    Primary Listing Description

    This feature will deliver the primary listing description for each record where available. Use features=primary_description

    Registration Plate

    This feature will deliver the vehicle's registration plate in the market overlay payload. Use features=rego

    VIN

    This feature will deliver the vehicle's VIN in the market overlay payload. Use features=VIN

    Stock Number

    This feature will deliver the vehicle's stock number in the market overlay payload. Use features=stock_no

    Factory Build Data

    Request data the vehicle was fitted with at the factory

    Overview

    To request an extensive factory build data list call the /build-data endpoint. If the relevant manufacturer is participating in our Options data product you will see it in the response.

    For example, you could request build information VIN:WVWZZZAWZKU065305 as below.

    The VIN decodes to a Volkswagen Polo, as VW is participating in the Build data program we are able to deliver the following build data.

    Vehicle History

    Request a vehicles history on marketplaces

    Overview

    The Vehicle History API allows you to access historical lead listing data from a variety of used car marketplaces. This API requires authentication and an appropriate license attached to it.

    The endpoint can be queried using a range of identifiers. VIN is the most readily matched identifier, you can pass in many identifiers to increase the likelihood of matching to a valid listing. See the table below for a list of all supported identifiers.

    Title
    Parameter

    Market Insights Snapshot

    The Market Insights Snapshot system provides insights into the marketability of a given car in a marketplace.

    Overview

    The widget can show regionalised market insights based on input vehicles. It is customisable to your brand via a hero brand icon. The resulting market information can help your customers understand the market reception to a given vehicle.

    Valuation Predictions

    Generate market accurate predictions for vehicles.

    Overview

    The Valuation API can be used to determine the present retail & trade values, as well as the residual values of new vehicles.

    This API requires and an appropriate license attached to it.

    To use the API, a Vehicle ID returned from the Vehicle Search API or Vehicle Facet API is required.

    "contact_name": "Example Motors",
    "contact_number": "+61 3 2568 6587",
    Vehicle History
    Specifications endpoint
    If we are unable to provide build information for the requested VIN we will return an error like this.

    If you are not using a valid VIN we will respond with this.

    Coverage

    The Factory build data program covers most major manufacturers back to vehicles built in 1999. Contact us to request if we have coverage of a specific area.

    As of 2023 the system has coverage across 40 manufacturers as below:

    • Abarth

    • Alfa Romeo

    • Alpina

    • Audi

    • Bentley

    • BMW

    • Buick

    • Cadillac

    • Chevrolet

    • Chrysler

    • Citroën

    • Dacia

    • Daewoo

    • Dodge

    • DS

    • Fiat

    • Ford

    • GMC

    • Hummer

    • Hyundai

    • Isuzu

    • Jaguar

    • Jeep

    • KIA

    • Lancia

    • Land Rover

    • Lincoln

    • Maybach

    • Mercedes-Benz

    • MINI

    • Opel

    • Porsche

    • Peugeot

    • Renault

    • Rolls-Royce

    • Saab

    • SEAT

    • Skoda

    • smart

    • Vauxhall

    • Volkswagen

    • Volvo

    Example

    Request

    To retrieve a Vehicle ID, use the Vehicle Search APIs.

    Starting with a vehicle ID post it to /v2/valuations/predict

    The condition score is optional and can be used to further refine your pricing prediction.

    Payload

    Pricing ID

    The payload returned by price prediction requests will include an ID, which you can use to refer to the pricing request in the future. The /v2/valuations/history/{PRICING_ID method will return the response from a previous pricing request, and you can also use the Pricing ID to track price changes with the Price Changes API, if licenced.

    To get a paginated list of all your previous price predictions, you can use the /v2/valuations/history endpoint.

    Condition Score

    By supplying a condition score, you can manipulate the trade_price returned by the prediction endpoint. The condition score can be between 1 and 5. A condition of 1 being poor condition and a condition of 5 excellent condition.

    Supplying any other numbers will return the default trade_price which assumes excellent condition.

    If you're building a user interface where you allow the user to choose a condition it is recommended you follow the industry standard in the table below.

    Condition
    Condition Score

    Poor

    1

    Fair

    2

    Average

    3

    Good

    4

    Excellent

    5

    authentication
    "starting_price": 73990,
    "price_drop_count": 2,
    "price_when_new": 46990,
                "listing_url": "https://www.autotrader.co.nz/used-cars-for-sale/volkswagen/polo/781308",
                "is_outlier": false,
                "listing_details": [
                    {
                        "source": "autotrader.co.nz",
                        "url": "https://www.autotrader.co.nz/used-cars-for-sale/volkswagen/polo/781308"
                    }
                ]
    "cover_image_url": "https://storage.googleapis.com/download/storage/v1/b/ag-img/o/1700380596629%2F402495842_660380.jpg?generation=1700380597213918&alt=media"
    "all_images": [
                    "https://storage.googleapis.com/download/storage/v1/b/ag-img/o/1713129285535%2Fd7ec39ad-671b-4b.jpg?generation=1713129287041771&alt=media",
                    "https://storage.googleapis.com/download/storage/v1/b/ag-img/o/1713129291498%2Fd3c1928d-a0f4-4f.jpg?generation=1713129292538543&alt=media",
                    "https://storage.googleapis.com/download/storage/v1/b/ag-img/o/1713129296398%2Ff982ef2b-a25f-47.jpg?generation=1713129297432084&alt=media",
                    "https://storage.googleapis.com/download/storage/v1/b/ag-img/o/1713129300707%2Fb4350079-4f04-4c.jpg?generation=1713129302187962&alt=media",
                    "https://storage.googleapis.com/download/storage/v1/b/ag-img/o/1713129306170%2F2a88d686-c4b7-4a.jpg?generation=1713129307655700&alt=media"
                ]
     "primary_description": "Near new condition 2022 Jeep Grand Cherokee Limited 4x4 <br> <br> <br> * Panormaic roof <br> * All Wheel Drive <br> * 20-inch Alloy Wheels <br> * 10.1-inch Touchscreen Display <br> * Wireless Apple CarPlay and Android Auto <br> * Leather Seats <br> * Heated & Ventillated front seats <br> * Heated steering wheel <br> * 9 Speaker Premium Audio System <br> * Power liftgate with adjustable height settings <br> * Automatic LED headlamps with Automatic highbeam <br> * Automatic Windscreen Wipers <br> * 10.25\" Multiview Display cluster <br> * 360 ParkView Rear Back-up Camera <br> * Front and Rear Park Assist with Stop <br> * Tyre Pressure Monitoring <br> * Keyless Entry with Push Button Start <br> * Blind Spot Monitoring with Rear Cross-Path Detection <br> * Adaptive Cruise Control with Stop and Go <br> * Active Lane Management <br> * Pedestrian Automatic Emergency Braking (with cyclist detection) <br> <br> We also accept trade ins, So bring down your pride and joy and we can price it on the spot! <br> <br> With easy onsite finance pre approvals available you can be in your new car in no time. <br> <br> WE ARE A PRIVATE OWNED DEALERSHIP JUST 20 MINUTES NORTH OF PERTH CITY,<br/><strong>Motor Mall WA</strong><br/>41 Buckingham Drive Wangara, WA 6065<br/>License number: 29875"
    "rego": "FDT46H",
    "vin": "MR0BA3CD900173054",
    "stock_no": 123ABC,
    /v2/vehicles/vins/SALWA2KE5EA312255/build-data?region=nz
    {
        "success": true,
        "vehicle": {
            "vin": "WVWZZZAWZKU065305",
            "build_date": "2019-03-19",
            "make": "VOLKSWAGEN",
            "model": "POLO",
            "features": [
                {
                    "code": "00A",
                    "value": "Rear overhang, short"
                },
                {
                    "code": "0A2",
                    "value": "4 doors"
                },
                {
                    "code": "0AR",
                    "value": "Front stabilizer bar"
                },
                {
                    "code": "0B1",
                    "value": "Wheelbase"
                },
                {
                    "code": "0EG",
                    "value": "Dual-clutch transmission DSG DQ200"
                },
                {
                    "code": "0FV",
                    "value": "South Africa manufacturing sequence"
                },
                {
                    "code": "0K0",
                    "value": "Without alternative drive system"
                }
    
            ]
        }
    }
    ```
    {
        "error": true,
        "message": "Invalid or Unsupported VIN"
    }
    {
        "error": true,
        "message": "Invalid VIN, must be 17 characters."
    }
    {
        "region": "nz",
        "vehicle_id": "5804870883868672"
        "kms": 30000,
        "condition_score": 2
    }
    {
        "success": true,
        "prediction": {
            "id": "a2955915-9611-40ef-8b98-b827dad76ff4",
            "vehicle_id": "5804870883868672",
            "kms": 57306,
            "price": 20622,
            "score": 0.9239,
            "retail_price": 20622,
            "trade_price": 17122,
            "adjustment": null
        }
    }
    Example

    Year

    year

    2019

    Make

    make

    Volkswagen

    Model

    model

    Polo

    Registration Plate

    registration_plate

    BMT038

    Vin

    VIN

    Example

    For example, if you were to use all available identifiers your request would resemble the request below.

    If that vehicle is found, all its relevant events will be included in the response, an example is below.

    Vehicle History Events

    The Vehicle History endpoint delivers detailed information on events related to a listing. The following events are possible on a given listing.

    Listing - the detection of a listing being added to its relevant marketplace.

    Delisting - the detection of a listing being removed from its relevant marketplace, this is frequently and reliably related to a sale of the vehicle.

    Price Change - the detection of a movement in the price, see the features section below for more information.

    Example

    To perform an example request:

    An example payload is included below to illustrate a potential response.

    Features

    You can opt to enrich to your vehicle history payload by passing in a feature or features separated by commas.

    Price Changes

    Currently, we support the price_changes feature that will show you fluctuations in the price. Passing this feature will return upward on downward movements in the listings' price.

    Contact your sales rep to understand your commercial rate card for each feature.

    Implementation

    Speak to your sales rep about your desired implementation pattern. We will supply you with staging and production iFrame url code as part of your deployment process.

    You must implement your own trigger button to launch the iframe and load in all required inputs as below.

    Example Implementation Inputs

    To load the iframe you need to share the following input variables.

    Label
    Description
    Example
    Requirement

    Region

    The country you would like to load insights for.

    NZ

    Required

    Odometer

    The odometer of the vehicle used in the valuation process

    1000

    Optional

    Vehicle_Description

    The most descriptive title of the vehicle you can provide so we can match it to our catalogue.

    2014 Tesla MODEL S Model S Electric Sedan

    Vehicle Identifier Preferences

    The system will take the most economically logical identifier and fall back to others when provided with options. The preference list is below.

    1. If provided with a Vehicle_Description it will use that.

    2. If not, VIN will be used,

    3. If not, Registration

    If your commercial agreement does not include the VIN and Registration fallbacks the system will provide an error when a vehicle description is insufficient for any match at all.

    Example Implementation iFrame

    Example Configuration For New Zealand Markets

    Position On Page

    You have two options to embed the iframe inside your website. In both these options, it is critical that you set the iframe width to 650px and centred.

    Popup - holding the iframe in a popup container and ensuring you conform to the AUTOGRAB_INSIGHTS_HIDE to event listening to close the popup container and AUTOGRAB_INSIGHTS_DIMENSIONS resize the height dynamically.

    On Page - holding the iframe on a page ensuring you let us know so we can remove the close button. Since the page can still extend vertically you need to respond to the AUTOGRAB_INSIGHTS_DIMENSIONS alert.

    Event Listeners

    Please ensure your implementation meets the minimum event listener requirements.

    The valuation widget will send messages you need to pay attention to via the iframe postMessage function. The messages are as follows.

    AUTOGRAB_INSIGHTS_SUCCESS

    The widget loaded successfully, no intervention is needed.

    AUTOGRAB_INSIGHTS_ERROR

    An exception or error was delivering the iframe contents.

    AUTOGRAB_INSIGHTS_HIDE

    The close button at the end of the workflow or close X in the interface has been pressed.

    AUTOGRAB_INSIGHTS_DIMENSIONS

    The iframe has resized due to changes in the contents. Please respond by resizing the iframe container to hold the new contents without cropping.

    Adjustments

    Adjust valuations we send you based on a rule set.

    Both the Residual Value and Used Value APIs support pricing adjustments. These can be used to retrieve a more accurate price prediction of a vehicle if the provided price is not already accurate enough.

    Recommended Retail Price Adjustment

    To adjust the stored Recommended Retail Price you can supply a rrp_adjustment value in the payload which accepts a number — positive or negative.

    This is useful when a car is fitted with factory extras, the Price When New can be increased for each of the options to get a better price prediction.

    Recommended Retail Price Overwrite

    To overwrite the systems stored Recommended Retail Price with your own, use the rrp_overwrite value in the payload which accepts a number.

    Predicted Retail and Trade Price Adjustments

    The Pricing Adjustments API (/v2/valuations/adjustments) allows you to configure fixed or percentage adjustments for specific Vehicle IDs.

    Per-vehicle pricing adjustments will apply to price predictions that you perform using the same API Key and for the same Vehicle ID.

    If you set a Retail Price Adjustment for a vehicle, the trade price will also be affected because the trade price is derived from the retail price. If you set an adjustment for both the retail price and the trade price, both adjustments will be applied to the trade price while the retail price is only affected by the retail price adjustment.

    When you perform a price prediction, you will receive a summary of the price adjustments that were applied, if any.

    Predicted Retail/Trade Adjustments do not apply to residual valuations.

    Example

    Below is an example price prediction payload with predicted trade and retail adjustments applied.

    Predicted Retail and Trade Price Overrides

    As well as Price Adjustments, you also have the option to override Retail and Trade prices for specific Vehicle IDs where the odometer reading falls within a set range. Price overrides are configured using the Price Override API at /v2/valuations/adjustments/{VEHICLE_ID}/overrides.

    If you have configured a retail or trade price override that applies to a price prediction, the overridden price will be returned instead of the AutoGrab valuation. This will bypass any price adjustments that you may have configured, and the response payload will indicate this with the {overridden: true} flag.

    Retail price overrides will impact the predicted trade price in the same way that retail price adjustments impact the trade price - unless you have configured a trade price override. In the case where you have both a trade override and a retail override, the two overridden prices will be returned without any pre-processing (except to calculate condition scores, if applicable - see below).

    As with Predicted Retail/Trade Adjustments, price overrides do not apply to residual valuations

    Example

    Below is an example price prediction payload where both price adjustments and price overrides have been configured. In this example, the retail price adjustment has been overridden by the retail price override, and the trade price adjustment has been applied.

    Vehicle Searching Basics

    Vehicle discovery is the starting place for almost all functions on the AutoGrab API.

    The Vehicle Search API set allows you to find matching vehicles within our database. This API requires authentication and an appropriate license attached to it.

    AutoGauge

    AutoGrabs dynamic pricing indicator for your website

    The AutoGrab AutoGauge is an iFrame widget that displays a valuation as well as some high-level market data for a vehicle listing. We host a configuration file that controls a range of labelling and styling variables that we will guide you through as part of your integration.

    An example gauge configuration

    You can access this over API if you would like to make your own implementation over the iFrame, read more here.

    Query Parameters

    Since the gauge operates in an iFrame, it is controlled using query parameters. These parameters are separated into two distinct groups: Base parameters and vehicle-type parameters. The base parameters are applicable for all use cases, whereas you only need to choose one set of vehicle-type parameters in order to use the gauge.

    Base parameters

    api_key: string; Your Gauge API Key (locked to your provided domains).

    region: Region; The country code (‘au’, ‘nz’ or ‘my’)

    odometer: number; The odometer reading for the vehicle you are valuing

    listing_price: number; The listing price for the vehicle you are valuing

    layout?: string; The desired layout style (‘horizontal’ or vertical). If a layout type is not provided, this will default to ‘vertical’.

    Vehicle Type Parameters

    These parameters are used to determine the type of vehicle that you are valuing, and only one of these sets of properties are required to match a vehicle. Depending on your use case, it may be easier to use certain sets of parameters over others.

    vehicle_id The AutoGrab vehicle ID

    marketplace and marketplace_id The marketplace domain name where the vehicle is publicly listed (e.g. ‘carsales.com.au’) and the unique listing ID on the marketplace (e.g. ‘OAG-AD-216621’)

    vin The vehicle's VIN number

    rego The registration plate (e.g. ‘BMT038’).

    vehicle_description The plain text vehicle description (e.g. ‘2019 Volkswagen Polo 85TSI Comfortline Auto MY19’)

    Example Usage

    With VIN

    With Rego

    With Marketplace/Marketplace ID

    With Vehicle Description

    Local Testing

    To test the gauge locally, simply create an index.html file with the following contents:

    You can then host this file on localhost:8080 using the npx-server package. You can use the ‘npx’ command line tool to do this:

    > npx html-server ./index.html

    The localhost:8080 URL is whitelisted for your API key, therefore enabling this workflow.

    Event Listeners

    If the Gauge is successfully rendered, we send a message via the iframe postMessage function. The way for a client to listen for the event is as follows:

    There is no minimum valuation threshold set per API key. We can configure this to your requirements.

    Market Overlay

    Get a view of the market as it relates to a specific vehicle.

    The Sourcing API allows you to access lead and listing data from a variety of used car marketplaces.

    This API requires and an appropriate license attached to it.

    Market Overlay API

    When viewing a lead on the web app, a view of similar leads that are currently listed for sale or recently sold is available on the side of the page (the 'Market Overlay'). The Market Overlay API gives you programmatic access to this data, enabling you to show price justifications or re-create our market comparison view for your own purposes.

    To access a Market Overlay, you will need to specify a Vehicle ID to search for relevant listings. To retrieve a Vehicle ID, use any of the

    Registration & VIN Valuations

    Generate a valuation with a Registration Plate or VIN

    Registration Valuation

    POST the registration plate and region to /v2/valuations/registrations/BMT038?

    Example Response

    /v2/sourcing/history?region=nz&registration_plate=BMT038&year=2019&make=Volkswagen&features=price_changes&model=Polo&vin=KL3TA48E9CB053071
    {
      "success": true,
      "id": "dfe4d117-74e1-4545-9e79-a0baac8208a7",
      "events": [
        {
          "type": "listing",
          "odometer": 100000,
          "price": 100000,
          "marketplace": "Gumtree",
          "timestamp": "2022-09-20T10:22:07.072",
          "seller_type": "string"
        }
      ]
    }
      {
          "type": "listing",
          "odometer": 100000,
          "price": 100000,
          "marketplace": "Gumtree",
          "timestamp": "2022-09-20T10:22:07.072",
          "seller_type": "string"
        }
      {
          "type": "delisting",
          "odometer": 100000,
          "price": 100000,
          "marketplace": "Gumtree",
          "timestamp": "2022-09-20T10:22:07.072",
          "seller_type": "string"
        }
    curl '/v2/sourcing/history?region=nz&vin=KL3TA48E9CB053071' \
          -H 'ApiKey: {API_KEY}'
    {
      "success": true,
      "id": "dfe4d117-74e1-4545-9e79-a0baac8208a7",
      "events": [
        {
          "type": "listing",
          "odometer": 100000,
          "price": 100000,
          "marketplace": "Gumtree",
          "timestamp": "2022-09-20T10:22:07.072",
          "seller_type": "string"
        }
      ]
    }
    curl '/v2/sourcing/history?region=nz&registration_plate=BMT038&year=2019&make=Volkswagen&features=price_changes&model=Polo&vin=KL3TA48E9CB053071'
          -H 'ApiKey: {API_KEY}'
    <iframe
    src="http://localhost:3000/?region=nz&odometer=10000&vehicle_description=2017%20Mazda%20CX-3%20Maxx&vin=123ABC&registration_plate=ABC123&api_key={yourkey}"
    />

    KL3TA48E9CB053071

    VIN Valuation

    POST the encapsulated VIN to /v2/valuations/vins/7AT08G0RX19303899

    Example Response

    Implementation Constrains

    This integration approach relies on the successful lookup of the vehicle. We recommend staggering your integration so you isolate the vehicle ID first using vehicle search methods and then proceed to valuation driven by the vehicle ID.

    This is done to avoid issues where the VIN lookup component of the valuation fails blocking your workflow. In the recommended scenario if your VIN or Rego lookup fails, you can fall back to Facet or Text Search informed by the "upstream_vehicle" parameter.

    {
        "region": "nz",
    }
    {
        "region": "nz",
        "kms": 216000
    }
    {
        "success": true,
        "prediction": {
            "id": "d028809e-0ef5-42de-9699-8b71fd1aee65",
            "vehicle_id": "5631424535199744",
            "price": 12347,
            "score": 0.81820,
            "retail_price": 14847,
            "trade_price": 2042.46,
            "adjustment": {
                "vehicle_id": "5631424535199744",
                "enabled": true,
                "retail_adjustment": {
                    "type": "fixed",
                    "amount": 2500,
                    "overridden": false
                },
                "trade_adjustment": {
                    "type": "percentage",
                    "amount": 0.2,
                    "overridden": false
                },
                "overrides": []
            }
        }
    }
    {
        "success": true,
        "prediction": {
            "id": "faa847f1-d428-46e1-b2d6-b47a00173d6e",
            "vehicle_id": "5631424535199744",
            "price": 11697,
            "score": 0.81820,
            "retail_price": 12000,
            "trade_price": 1700,
            "adjustment": {
                "vehicle_id": "5631424535199744",
                "retail_adjustment": {
                    "type": "fixed",
                    "amount": 2500,
                    "overridden": true
                },
                "trade_adjustment": {
                    "type": "percentage",
                    "amount": 0.2,
                    "overridden": false
                },
                "overrides": [
                    {
                        "id": "1ef42b79-c580-4055-a39b-e5257f81d0d9",
                        "min_kms": 80000,
                        "max_kms": 90000,
                        "trade_price": null,
                        "retail_price": 12000
                    }
                ]
            }
        }
    }
    {
        "success": true,
        "prediction": {
            "id": "bc3df5a9-0488-4486-acb9-ca22482f127c",
            "vehicle_id": "5804870883868672",
            "kms": 57306,
            "price": 20622,
            "score": 0.9239,
            "retail_price": 20622,
            "trade_price": 17122,
            "adjustment": null
        }
    }
    {
        "success": true,
        "prediction": {
            "id": "efa792e6-8071-4289-a5b6-c098ac041702",
            "vehicle_id": "4871414033154048",
            "kms": 216000,
            "price": 9546,
            "score": 0.5407,
            "retail_price": 9546,
            "trade_price": 6205,
            "adjustment": null
        }
    }
    .

    When retrieving market data for a Vehicle ID, a best-effort attempt is made to find at least four listings. This search begins by looking at the latest 60 days, and if there is not enough data in this time period, another 10 days of data is added until the minimum quota of four is reached.

    If you would like a larger sample of market data, you can specify a minimum_days value and this will override the default minimum of 60 days.

    Example

    To perform an example request:

    An example payload is included below, although only the first lead is shown to save space:

    Request Parameters

    Name
    Description

    vehicle_id

    The ID of the vehicle you are requesting a market overlay on.

    minimum_days

    The minimum number of days to show listings for

    Default value : 60

    include_adjacent_years

    If enabled, vehicles that were manufactured up to one year before and one year after your chosen vehicle will also be included in the results.

    Default value : false

    --true / false

    exclude_outliers

    If enabled, leads that are considered outliers will be excluded from the results.

    Default value : false

    --true / false

    exclude_all_delisted

    If enabled, leads that are not currently on the market will be excluded from the results.

    Default value : false

    --true / false

    include_all_active

    If enabled, all listings that are currently on the market will be returned, instead of only listings which were uploaded within the specified timeframe (minimum_days). Additionally, if this is enabled, delisted leads will be returned based on the number of days since they were sold, rather than the number of days since they were listed.

    Default value : false

    --true / false

    authentication
    Vehicle Search APIs

    Required

    API_Key

    Your API key used to securely load the iframe and load your brand configuration.

    123ABC

    Required

    Registration_Plate

    The registration plate of the vehicle

    123ABC

    Optional

    VIN

    The VIN, if known, for the vehicle.

    123ABC

    Optional

    Text Search

    Use this search mechanism if you have a vehicle description or title as a text string and want to resolve to an vehicle ID.

    VIN Search

    Use this search mechanism if you have a VIN and want summary data to resolve to an vehicle ID.

    Registration Plate Search

    Use this search mechanism if you have a registration plate and want summary data to resolve to an vehicle ID.

    Facet Search

    Use this search mechanism if you would like your users to interact with drop downs to resolve to a vehicle ID.

    Upstream VIN & Registration Search

    Use this search mechanism if you would like to understand registration information without being given an vehicle ID.

    Vehicle ID Search

    Use this to get summary data on a vehicle if you already have its ID.

    Marketplace ID

    A special use case search function for marketplace partners.

    Facet Integration Worked Example

    Read a step by step example guide on how to work with Facets.

    Let's work backwards from the end result which is one or a few results for your user to pick from driven by previous drop-down. There are a few ways to make facets work for you, we'll go through the most common integration method.

    Form your GET request for makes

    /v2/vehicles/facets?region=nz&facet=make

    Ask your user to choose a make from the list then call all available models based on that selection. Let's say your user chose Toyota.

    Form your request for a list of Models

    /v2/vehicles/facets?region=nz&make=Toyota&facet=model

    Ask your user to choose a Model from the list then call all available models based on that selection. Let's say your user chose

    Registration Plate Search

    Find vehicle information from a registration plate.

    Overview

    The Vehicle Registration API allows you to search for a vehicle by supplying its number plate. The request requires a region, the state (dependent on region), number plate & API key. This will return either a matching vehicle with possible option packs, or a null.

    In all cases, and importantly if a matching vehicle is unable to be identified, we will return the upstream_vehicle field allowing you to identify how the relevant road transport authority describes the vehicle. Depending on your use case you may wish to allow front-end users to manually classify the vehicle using the upstream_vehicle as a guide to fill out a Facet-style.

    curl 'https://api.autograb.com.au/v2/sourcing/market_overlay/{VEHICLE_ID}?region=nz' \
          -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "sample_size": 9,
        "days_checked": 100,
        "outlier_count": 0,
        "avg_days_to_sell": 9.771373972800927,
        "leads": [
            {
                "id": "20266890-4091-4353-b5ba-ca335ce76b2d",
                "vehicle_id": "5233518187642880",
                "year": 2010,
                "release_year": 2010,
                "release_month": 1,
                "listed_at": "2024-05-06T14:42:45.646Z",
                "removed_at": "2024-05-12T01:06:15.367Z",
                "seller_type": "dealer",
                "color": "Black",
                "state": "AUK",
                "tag_ids": [
                    "nz_new"
                ],
                "price": 11880,
                "drive_away_price": null,
                "price_before_govt_charges": 11880,
                "price_includes_govt_charges": false,
                "kms": 30933,
                "listing_sources": [
                    "autotrader.co.nz"
                ],
                "listing_url": "https://www.autotrader.co.nz/used-cars-for-sale/volkswagen/polo/781308",
                "is_outlier": false
            },
    <iframe
    src="http://localhost:3000?region=nz&odometer=10000&listing_price=100
    00&vin=MM0DK2W7A0W207162&api_key={yourkey}"
    />
    <iframe
    src="http://localhost:3000?region=nz&odometer=10000&listing_price=100
    00&rego=AOM964&api_key={yourkey}"
    />
    <iframe
    src="http://localhost:3000/?region=nz&odometer=10000&listing_price=10
    000&marketplace=carsales.com.au&marketplace_id=OAG-AD-21662144&api_ke
    y={yourkey}"
    />
    <iframe
    src="http://localhost:3000/?region=nz&odometer=10000&listing_price=10
    000&vehicle_description=2017%20Mazda%20CX-3%20Maxx&api_key={yourkey}"
    />
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width,
    initial-scale=1.0" />
    <title>Iframe Test</title>
    </head>
    <body>
    <iframe
    src="https://gauge.autograb.com.au?region=nz&odometer=10000&listing_p
    rice=26005&vin=MM0DK2W7A0W207162&api_key={yourkey}"
    width="100%"
    height="600px"
    ></iframe>
    </body>
    </html>
    window.addEventListener('message', event => {
    if (
    event.data === 'AUTOGRAB_GAUGE_SHOW' &&
    event.origin === 'https://gauge.autograb.com.au'
    ) {
    // show the gauge iframe element
    }
    });
    If there is a redirect to the 500 page, we send a message via the iframes postMessage
    function.. The 500 page is used for any error that occurs server side, as well as if the gauge
    valuation is below the threshold defined in your configuration (this is per API key).
    The way for a client to listen for the event is as follows:
    window.addEventListener('message', event => {
    if (
    event.data === 'AUTOGRAB_GAUGE_HIDE' &&
    event.origin === 'https://gauge.autograb.com.au'
    ) {
    // hide the gauge iframe element
    }
    });

    include_trash

    If enabled, leads that are considered trash, written off, damaged, or missing details will be included in the results. The tag_ids array can then be used to determine if a lead is trash, damaged, etc.

    Default value : false

    --true / false

    features

    Comma-separated array of additional overlay feature codes as specified in your contract

    See available features here.

    odometer_range_min

    The minimum range observed against similar vehicles

    Example : 50000

    odometer_range_max

    The maximum range observed against similar vehicles

    Example : 100000

    region

    nz

    Corolla
    .

    Form your request for a list of badges

    v2/vehicles/facets?model=Corolla&region=nz&make=Toyota&facet=badge

    Select A Badge A Load Vehicles From A Search

    Ask your user to choose a badge from the list. Let's say your user chose Sprint. You can see the count is 3, meaning there are only 2 badges. You could send that directly to them or repeat the process with the year (&facet=year) to refine it further.

    Let's say you'd like to present the three options to the user.

    /v2/vehicles/facets/search?region=nz&badge=Sprint&make=Toyota&model=Corolla

    If you do not pay attention to the counts under each facet there may be to many vehicle to perform a search on. You will know you have triggered this limitation if you see the error below.

    {
        "success": true,
        "make": [
            {
                "value": "Abarth",
                "count": 47
            },
            {
                "value": "Acura",
                "count": 1
            },
            {
                "value": "Alfa Romeo",
                "count": 713
            },
            {
                "value": "AM General",
                "count": 2
            },
            {
                "value": "Aston Martin",
                "count": 169
    // trimmed - this would show all makes in the NZ region
    {
        "error": true,
        "message": "Too many vehicles, you must return at least make, model, badge, series, year"
    }

    That would produce the payload below.

    Components

    Success - this denotes the outcome of the lookup, if this is not true there are several possible reasons. The plate does not exist, was entered incorrectly or the registration authority could be experiencing an outage (refer to our status page).

    Vehicle - this is the array that holds the vehicle data as a result of our matching operation. If Vehicle:Null then we have not been able to identify a matching vehicle. If this is powering a front end UX, you should prompt the user to search via Facets Search to resolve to an vehicle ID. You can use the Upstream_Vehicle below as a UI guide.

    Upstream_Vehicle - this is what the Registration Authority has told us the vehicle is. We use this input to match our catalogue.

    ID - this is the platform ID of the vehicle, your gateway to leveraging this vehicle in future Valuation, Vehicle Data and more requests.

    Summary Data - you will find basic information about the vehicle that you can use to power your UX. If you require more information that is in the Vehicle array consider usage of Vehicle Data endpoints.

    Options - these are fittable (not fitted) options available on this vehicle. If you require fitted (from factory data) use the Options Data endpoint.

    Confidence - this is the prediction confidence of the match. There are two types of output for this parameter (Standard and degraded).

    Additional Vehicle - if there are additional lower confidence matches we will show them to you here.

    Features

    You can pass in features to request additional data to be sent in the response. Refer to the Features section for more information.

    Prefer More Results

    This feature will show you additional results at lower-quality matches. Only use this if you would like to see other vehicles that are not likely to be the one you are requesting. Use headerprefer_more_results=true to request this response.

    search
    {
        "success": true,
        "model": [
            {
                "value": "4Runner",
                "count": 41
            },
            {
                "value": "86",
                "count": 72
            },
            {
                "value": "Allex",
                "count": 26
      // trimmed - this would show all models in the NZ region
    {
        "success": true,
        "badge": [
            {
                "value": "SE Ltd",
                "count": 6
            },
            {
                "value": "SE LTD",
                "count": 2
            },
            {
                "value": "Sprint",
                "count": 3
            },
            {
                "value": "Sprinter",
                "count": 5
            },
            {
                "value": "Sprinter SR",
                "count": 1
            },
            {
                "value": "SR",
                "count": 4
            },
     // trimmed - this would show all badges in the NZ region
    {
        "success": true,
        "vehicles": [
            {
                "id": "5364630897557504",
                "region": "nz",
                "title": "1997 Toyota Corolla Sprint Manual",
                "year": "1997",
                "make": "Toyota",
                "model": "Corolla",
                "badge": "Sprint",
                "series": null,
                "model_year": null,
                "release_month": 9,
                "release_year": 1995,
                "body_type": "Hatchback",
                "body_config": null,
                "transmission": "Manual",
                "transmission_type": "Manual",
                "wheelbase": null,
                "wheelbase_type": null,
                "fuel": "Petrol",
                "fuel_type": "Petrol",
                "engine": "Piston",
                "engine_type": "Piston",
                "drive": "FWD",
                "drive_type": "Front Wheel Drive",
                "num_doors": 5,
                "num_seats": 5,
                "num_gears": 5,
                "num_cylinders": 4,
                "capacity_cc": 1587,
                "power_kw": null,
                "torque_nm": null,
                "range": null,
                "options": []
            },
            {
                "id": "6033133967245312",
                "region": "nz",
                "title": "1999 Toyota Corolla Sprint Manual",
                "year": "1999",
                "make": "Toyota",
                "model": "Corolla",
                "badge": "Sprint",
                "series": null,
                "model_year": null,
                "release_month": 9,
                "release_year": 1995,
                "body_type": "Hatchback",
                "body_config": null,
                "transmission": "Manual",
                "transmission_type": "Manual",
                "wheelbase": null,
                "wheelbase_type": null,
                "fuel": "Petrol",
                "fuel_type": "Petrol",
                "engine": "Piston",
                "engine_type": "Piston",
                "drive": "FWD",
                "drive_type": "Front Wheel Drive",
                "num_doors": 5,
                "num_seats": 5,
                "num_gears": 5,
                "num_cylinders": 4,
                "capacity_cc": 1587,
                "power_kw": null,
                "torque_nm": null,
                "range": null,
                "options": []
            },
            {
                "id": "6563011892346880",
                "region": "nz",
                "title": "1998 Toyota Corolla Sprint Manual",
                "year": "1998",
                "make": "Toyota",
                "model": "Corolla",
                "badge": "Sprint",
                "series": null,
                "model_year": null,
                "release_month": 9,
                "release_year": 1995,
                "body_type": "Hatchback",
                "body_config": null,
                "transmission": "Manual",
                "transmission_type": "Manual",
                "wheelbase": null,
                "wheelbase_type": null,
                "fuel": "Petrol",
                "fuel_type": "Petrol",
                "engine": "Piston",
                "engine_type": "Piston",
                "drive": "FWD",
                "drive_type": "Front Wheel Drive",
                "num_doors": 5,
                "num_seats": 5,
                "num_gears": 5,
                "num_cylinders": 4,
                "capacity_cc": 1587,
                "power_kw": null,
                "torque_nm": null,
                "range": null,
                "options": []
            }
        ],
        "total": 3
    }
    curl "https://api.autograb.com.au/v2/vehicles/registrations/{number_plate}?region=nz"
    -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "vehicle": {
            "id": "5233518187642880",
            "region": "nz",
            "title": "2010 Volkswagen Polo Comfortline Automatic",
            "year": "2010",
            "make": "Volkswagen",
            "model": "Polo",
            "badge": "Comfortline",
            "series": "6R",
            "model_year": "MY10",
            "release_month": 1,
            "release_year": 2010,
            "body_type": "Hatchback",
            "body_config": null,
            "transmission": "Dual Clutch Automatic (DCT)",
            "transmission_type": "Automatic",
            "wheelbase": null,
            "wheelbase_type": null,
            "fuel": "Petrol",
            "fuel_type": "Petrol",
            "engine": "Piston",
            "engine_type": "Piston",
            "drive": "FWD",
            "drive_type": "Front Wheel Drive",
            "num_doors": 5,
            "num_seats": 5,
            "num_gears": 7,
            "num_cylinders": 4,
            "capacity_cc": 1390,
            "power_kw": 63,
            "torque_nm": 132,
            "range": null,
            "options": []
        },
        "upstream_vehicle": "2010 Volkswagen POLO Polo Automatic Petrol Hatchback 1,380cc",
        "vin": "WVWZZZ6RZAU020000",
        "colour": "SILVER",
        "confidence": "standard",
        "additional_vehicles": []
    }

    Customer Recapture

    The Customer Recapture API allows you to upload, view and delete Customer Recapture customers.

    This API requires authentication and an appropriate license attached to it.

    Uploading Customer Lists

    The main purpose of the Customer Recapture API is to facilitate the automated upload of new Recapture customers.

    Customer lists are often very long, so the Customer Recapture API allows you to queue customer uploads without immediately processing every customer in the list. There is an endpoint to queue the upload, and separate endpoints to check the status of the upload, and cancel it, if necessary.

    Upload a list of customers

    A POST request to https://api.autograb.com.au/v2/recapture/upload?region=nz will initiate a new queued customer list upload.

    The request body has three key parameters:

    • name: A name to assign to the upload, for personal reference

    • enable_rego_lookups: When rego lookups are enabled if the registration plate is provided, but no VIN is provided for a customer, we will perform a VIN lookup (at additional cost to you) and save the VIN along with the customer. When a customer record includes a VIN number, we can cross-reference the VIN with new vehicle listings posted in the future, and use this to verify that the car being sold is definitely the same car that you are tracking.

    • customers

    If you try to upload an empty list, you will receive a You must upload at least one customer record error.

    Example

    To perform an example request:

    An example response payload is:

    You can explore this request further in the .

    Check upload status

    Once you've queued a customer upload, you may want to check on the upload progress. Sending a GET request to /v2/recapture/upload/{UPLOAD_ID}?region=nz will return information about the upload, including the progress and the number of errors.

    The key properties to check the upload progress are total_uploaded_customers and total_processed_customers. Creating a new Recapture customer consists of two steps - uploading and processing - and these two counters reflect the progress made for each of these steps.

    Once total_processed_customers is equal to total_uploaded_customers, the upload is complete. If there are any unexpected errors during the upload, total_errors will increase to signify this, but total_processed_customers is inclusive of errors.

    Example

    To perform an example request:

    An example response payload is:

    Cancel an upload

    If you queue a customer upload and later change your mind, you can cancel the upload, stopping the creation of any more customer records.

    The response payload will include the details of the deleted upload.

    Example

    To perform an example request:

    An example response payload is:

    Viewing and updating customers

    Once you have uploaded a customer list, you are able to use the Customer Recapture API to view your newly uploaded customers, as well as edit and delete individual customer records.

    Get a list of all customers

    You can use the /v2/recapture/customers?region={REGION} endpoint to retrieve a list of all your Recapture customers.

    This list is paginated, and you can move between pages using the offset and limit query parameters.

    If you want to get customer records associated with a specific upload, you can pass the unique Upload ID to the upload_id query parameter.

    Example

    To perform an example request:

    An example response payload is:

    Get an individual customer's records

    You can get individual customer details using the GET method on /v2/recapture/customers/${CUSTOMER_ID}?region=nz.

    Trying to look up an invalid customer ID returns the Invalid Customer ID error, and trying to look up a customer that you don't have access to returns an You don't have permission to access that customer error. If you try to look for a customer that exists in a different region than the one specified in the request, you will receive an Incorrect Region error.

    Example

    To perform an example request:

    An example response payload is:

    Update an individual customer record

    If you need to make changes to an individual customer's details, you can use the PATCH method on the /v2/recapture/customers/${CUSTOMER_ID}?region=nz endpoint.

    Only the fields that you specify in the request body will be affected, and providing an empty value ("") will set the field to null where applicable.

    The response payload will include the updated customer object.

    You can update any of the following customer properties: - client_name - mobile_number - sale_date - expiry_date

    Example

    To perform an example request:

    An example response payload is:

    Delete a customer

    You can delete an individual customer by using the DELETE method on the /v2/recapture/customers/{CUSTOMER_ID}?region=nz endpoint.

    The response payload includes the details of the customer that was deleted, and there is no way to retrieve the customer other than manually re-creating it.

    The same error messages apply as with the Get Customer endpoint.

    Example

    To perform an example request:

    An example response payload is:

    : An array of the customers that you want to upload. Customers can have any of the following properties, but everything is optional (however, at least a rego OR a vin is necessary for tracking purposes):
  • rego: The registration plate of the customer's vehicle

  • vin: The Vehicle Identification Number corresponding to the customer's vehicle

  • client_name: The name of the customer/client, for reference purposes

  • mobile_number: The customer's phone number. This is used for reference purposes, as well as to find other listings that the same customer has posted online.

  • sale_date: The date that the vehicle was sold to the customer, if applicable. For reference only.

  • expiry_date: If provided, the customer will be automatically deleted from our system on this date. This may be useful for insurance clients where the customer is no longer of interest after a policy ends, for instance.

  • additional_fields: A map of any other properties that should be saved along with the customer record.

  • API Playground
    curl -XPOST -H 'ApiKey: {API_KEY}' \
        -H "Content-type: application/json" \
        -d '{
            "name": "June 2022 New Customers",
            "enable_rego_lookups": false,
            "customers": [
                {
                    "rego": "ZEN407",
                    "client_name": "Maya",
                    "expiry_date": "2023-05-01"
                }
            ]
        }' 'https://api.autograb.com.au/v2/recapture/upload?region=nz'
    {
        "success": true,
        "upload": {
            "id": "99aa2d8e-348b-4321-beeb-f2fa67bab3eb",
            "created_at": "2022-07-21T08:07:16.580Z",
            "enable_rego_lookups": false,
            "name": "June 2022 New Customers",
            "total_uploaded_customers": 1,
            "total_processed_customers": 0,
            "total_errors": 0
        }
    }
    curl "https://api.autograb.com.au/v2/recapture/upload/{UPLOAD_ID}?region=nz" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "upload": {
            "id": "80230301-9d26-45d7-85d6-fbb8c519c014",
            "created_at": "2022-07-16T06:22:05.289Z",
            "enable_rego_lookups": false,
            "name": "August 2022 New Customers",
            "total_uploaded_customers": 1000,
            "total_processed_customers": 800,
            "total_errors": 0
        }
    }
    curl -XDELETE "https://api.autograb.com.au/v2/recapture/upload/{UPLOAD_ID}?region=nz" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "upload": {
            "id": "80230301-9d26-45d7-85d6-fbb8c519c014",
            "created_at": "2022-07-16T06:22:05.289Z",
            "enable_rego_lookups": false,
            "name": "August 2022 New Customers",
            "total_uploaded_customers": 1000,
            "total_processed_customers": 850,
            "total_errors": 0
        }
    }
    curl -XDELETE "https://api.autograb.com.au/v2/recapture/customers/{UPLOAD_ID}?region=nz&limit=100&offset=0" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "customers": [
            {
                "id": "000005cb-6d2f-49bc-a5a3-b596ede9202b",
                "last_updated": "2022-07-21T05:41:02.941Z",
                "rego": null,
                "state": 'VIC',
                "vin": '1N4AL11D16N337720',
                "client_name": "Jack",
                "mobile_number": null,
                "sale_date": "2022-01-07T00:00:00.000Z",
                "expiry_date": null,
                "vehicle_title": null,
                "sightings": [],
                "additional_fields": {}
            },
            {
                "id": "0000993c-f21a-445e-9829-21786098df16",
                "last_updated": "2022-07-21T05:45:05.174Z",
                "rego": null,
                "state": 'NSW',
                "vin": '4T1BE46K28U742135',
                "client_name": "Jeffery",
                "mobile_number": null,
                "sale_date": "2020-03-31T00:00:00.000Z",
                "expiry_date": null,
                "vehicle_title": null,
                "sightings": [],
                "additional_fields": {}
            }
        ]
    }
    curl "https://api.autograb.com.au/v2/recapture/customers/{CUSTOMER_ID}?region=nz" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "customer": {
            "id": "0000c339-1fb4-4d15-9b46-6509f2c5a2a4",
            "last_updated": "2022-07-21T02:27:03.543Z",
            "rego": '1EW2WA',
            "state": null,
            "vin": null,
            "client_name": "Johnny",
            "mobile_number": null,
            "sale_date": "2020-07-18T00:00:00.000Z",
            "expiry_date": null,
            "vehicle_title": null,
            "sightings": [],
            "additional_fields": {}
        }
    }
    curl -XPATCH -H 'ApiKey: {API_KEY}' \
        -H "Content-type: application/json" -d '{
            "mobile_number": "+64 111 222 333",
        }' 'https://api.autograb.com.au/v2/recapture/customers/{CUSTOMER_ID}?region=nz'
    {
        "success": true,
        "customer": {
            "id": "0000c339-1fb4-4d15-9b46-6509f2c5a2a4",
            "last_updated": "2022-07-21T02:27:03.543Z",
            "state": null,
            "vin": null,
            "client_name": "Johnny",
            "mobile_number": "+64 111 222 333",
            "sale_date": "2020-07-18T00:00:00.000Z",
            "expiry_date": null,
            "vehicle_title": null,
            "sightings": [],
            "additional_fields": {}
        }
    }
    curl -XDELETE "https://api.autograb.com.au/v2/recapture/customers/{CUSTOMER_ID}?region=nz" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "customer": {
            "id": "0000c339-1fb4-4d15-9b46-6509f2c5a2a4",
            "last_updated": "2022-07-21T02:27:03.543Z",
            "rego": '1EW2WA',
            "state": null,
            "vin": null,
            "client_name": "Johnny",
            "mobile_number": null,
            "sale_date": "2020-07-18T00:00:00.000Z",
            "expiry_date": null,
            "vehicle_title": null,
            "sightings": [],
            "additional_fields": {}
        }
    }

    Stock Feeds

    Pipe your stock feed into a range of AutoGrab products.

    Creating a stock feed

    Your organisation will need at least one stock feed before uploading stock to the platform.

    To create a stock feed, make a single POST request to the following Autograb API:

    POST /v2/stock?region=nz

    Sample response:

    {
        "success": true,
        "stockFeed": {
            "id": "ff7ff637-e4c1-40f2-9f9d-8f76d6c201fb",
            "display_name": "ff7ff637-e4c1-40f2-9f9d-8f76d6c201fb",
            "stock_feed_api_keys": [
                "YOUR_API_KEY"
            ]
        }
    }

    The stock feed ID is required to post stock items to Autograb. Please note the stock feed is linked to your API key, so you will need to use the same API key when posting stock items to the stock feed.

    Stock item schema

    Stock items must be posted in a format that complies with the Stock item schema:

    Posting stock items

    To post a stock item, make a single POST request to the following Autograb API:

    POST /v2/stock/{stock_feed_id}/{external_dealership_id}/{external_id}?region=nz

    The post payload should be the stock item payload, as detailed above. Note that you need to provide your stock_feed_id, as well as external_dealership_id (that is, your own dealership identifier external to Autograb) and the stock item external_id (that is, your own stock item identifier, external to Autograb).

    Note that the system allows a single stock feed to contain stock items across multiple dealerships

    When you post stock to Autograb, the system will overwrite any previous stock with the latest details contained in the post payload.

    Sample response:

    {
      region: {
        type: 'string',
        required: true,
        description: 'The stock item region',
      },
      created_at: {
        type: 'string',
        required: true,
        description: 'ISO 8601 created at utc date and time string',
      },
      updated_at: {
        type: 'string',
        required: true,
        description: 'ISO 8601 updated at utc date and time string',
      },
      checked_at: {
        type: 'string',
        required: true,
        description: 'ISO 8601 checked at utc date and time string',
      },
      stocked_at: {
        type: 'string',
        required: true,
        description: 'ISO 8601 stocked at utc date and time string',
      },
      removed_at: {
        type: 'string',
        required: false,
        description:
          'ISO 8601 removed at utc date and time string, only to be supplied for items that have been removed',
      },
      condition: {
        type: 'string',
        required: true,
        description: 'The stock condition',
        example: 'New',
      },
      stock_no: {
        type: 'string',
        required: false,
        description: 'The stock number',
      },
      rego: {
        type: 'string',
        required: false,
        description: 'The registration plate',
      },
      rego_expiry: {
        type: 'string',
        required: false,
        description: 'ISO 8601 rego_expiry utc date and time string',
      },
      vin: {
        type: 'string',
        required: false,
        description: 'The Vehicle Identification Number',
      },
      year: {
        type: 'number',
        required: false,
        description: 'The vehicle year',
      },
      kms: {
        type: 'number',
        required: false,
        description: 'The vehicle odometer reading',
      },
      color: {
        type: 'string',
        required: false,
        description: 'The vehicle body colour',
      },
      description: {
        type: 'string',
        required: false,
        description: 'The vehicle description',
      },
      make: {
        type: 'string',
        required: false,
        description: 'The vehicle make',
      },
      model: {
        type: 'string',
        required: false,
        description: 'The vehicle model',
      },
      series: {
        type: 'string',
        required: false,
        description: 'The vehicle series',
      },
      badge: {
        type: 'string',
        required: false,
        description: 'The vehicle badge',
      },
      tranmission: {
        type: 'string',
        required: false,
        description: 'The vehicle tranmission',
      },
      location: {
        type: 'string',
        required: false,
        description: 'The vehicle location',
      },
      suburb: {
        type: 'string',
        required: false,
        description: 'The vehicle suburb',
      },
      postcode: {
        type: 'string',
        required: false,
        description: 'The vehicle postcode',
      },
      lat: {
        type: 'number',
        required: false,
        description: 'The vehicle latitude',
      },
      lng: {
        type: 'number',
        required: false,
        description: 'The vehicle longtitude',
      },
      price_egc: {
        type: 'number',
        required: false,
        description: 'The vehicle price excluding government charges',
      },
      price_dap: {
        type: 'number',
        required: false,
        description: 'The vehicle drive away price',
      },
      purchase_price: {
        type: 'number',
        required: false,
        description: 'The vehicle purchase price',
      },
      video_url: {
        type: 'string',
        required: false,
        description: 'The vehicle video url',
      },
      images: {
        type: 'array',
        items: {
          type: 'object',
          properties: {
            url: {
              type: 'string',
              required: true,
            },
          },
        },
      },
    }
    {
        "success": true,
        "stockItemResult": {
            "id": "3842b20f-423b-4eab-b87a-69bed4582725",
            "region": "nz",
            "lead_id": "3f026858-5b0e-4221-8338-af40fb5d3865",
            "listing_id": null,
            "external_id": "000000001",
            "stock_feed_account_id": "1798a10c-977a-4ba8-b15b-0d9cb581b36b",
            "source": "ff7ff637-e4c1-40f2-9f9d-8f76d6c201fb",
            "listing_source": null,
            "listing_source_id": null,
            "external_vehicle_catalogue": null,
            "created_at": "2023-09-28T17:53:33.000Z",
            "updated_at": "2023-09-28T17:53:33.000Z",
            "checked_at": "2023-09-28T17:53:33.000Z",
            "stocked_at": "2023-09-28T17:53:33.000Z",
            "removed_at": null,
            "condition": "Used",
            "stock_no": "8567",
            "rego": "1REGOYG",
            "vin": "6FPAAAAAAAAAAAA5",
            "rego_expiry": "2023-09-28T00:00:00.000Z",
            "vehicle_id": "agv-ford-3399971153459088",
            "year": 2023,
            "compliance_year": null,
            "compliance_month": null,
            "build_year": null,
            "build_month": null,
            "make": "Ford",
            "model": "Transit",
            "badge": "350L",
            "series": "VO",
            "vehicle_title": null,
            "vehicle_rrp": null,
            "vehicle_age_years": null,
            "model_year": "MY23",
            "release_year": 2022,
            "release_month": 9,
            "body_type": "Van",
            "engine_type": "Piston",
            "transmission_type": "Automatic",
            "drive_type": "Front Wheel Drive",
            "fuel_type": "Diesel",
            "wheelbase_type": null,
            "body_config_type": null,
            "range": null,
            "power_kw": 125,
            "torque_nm": 390,
            "num_doors": 4,
            "num_seats": 3,
            "num_gears": 6,
            "num_cylinders": 4,
            "capacity_cc": 1995,
            "matcher_input": "year 2023 make FORD model TERRITORY series SZ badge  transmission 6 SP AUTOMATIC ",
            "matcher_inputs": {
                "make": "FORD",
                "year": 2023,
                "badge": "",
                "model": "TERRITORY",
                "series": "SZ",
                "transmission": "6 SP AUTOMATIC"
            },
            "kms": 150000,
            "color": null,
            "description": null,
            "purchase_price": null,
            "costs": null,
            "acquisition_channel": null,
            "purchaser": null,
            "est_retail": 35266,
            "est_trade": 29976,
            "price_egc": 36999,
            "price_dap": 55000,
            "price_includes_govt_charges": null,
            "price_egc_rel_to_est_trade": 1.234287429943955,
            "price_egc_diff_to_est_trade": 0.2342874299439552,
            "price_egc_rel_to_est_retail": 1.049140815516361,
            "price_egc_diff_to_est_retail": 0.04914081551636129,
            "video_url": null,
            "is_certified": null,
            "location_input": "",
            "state": null,
            "suburb": "Bluewood",
            "suburb_input": "Bluewood",
            "postcode": "3200",
            "postcode_input": "3200",
            "lat": 55.4324,
            "lng": -42.432,
            "formatted_location": null,
            "raw_payload": {
                "kms": 150000,
                "lat": 55.4324,
                "lng": -42.432,
                "vin": "6FPAAAAAAAAAAAA5",
                "make": "FORD",
                "rego": "1REGOYG",
                "year": 2023,
                "badge": "",
                "model": "TERRITORY",
                "images": [],
                "region": "nz",
                "series": "SZ",
                "suburb": "Bluewood",
                "location": "",
                "postcode": "3200",
                "stock_no": "8567",
                "condition": "Used",
                "price_dap": 55000,
                "price_egc": 36999,
                "checked_at": "2023-09-28T17:53:33Z",
                "created_at": "2023-09-28T17:53:33Z",
                "stocked_at": "2023-09-28T17:53:33Z",
                "updated_at": "2023-09-28T17:53:33Z",
                "rego_expiry": "2023-09-28T17:53:33Z",
                "transmission": "6 SP AUTOMATIC"
            },
            "pipeline_state_id": 19
        }
    }

    Webhooks Integration

    Receive notifications from AutoGrab system on events to power your own experiences.

    The Webhooks API allows you to configure endpoints that will receive PUSH events from AutoGrab.

    This API requires authentication and an appropriate license attached to it.

    Webhook Events

    There are several types of events that you can listen to using the Webhooks API. The names and descriptions of each of these events are included below.

    You can find example payloads for each of these events at the bottom of this page.

    Name
    Definition

    Currently, only the ping, recapture_new and price_change events are in use. You can still configure your webhooks to listen to the other events to enable these events once they are supported.

    If you need immediate access to Recapture price change and delist events for your use case, please reach out to us at [email protected]

    Create a new Webhook

    To set up a webhook event subscriber, you'll first need to create the webhook using the webhook API.

    You must provide a few options in the request body:

    • name: A name for the webhook. This is used for reference only.

    • region: The region that you want to subscribe to events in (nz)

    • format: The format that you want the PUSH events to be sent in (Currently, only

    Example

    To perform an example request:

    An example response payload is:

    You can explore this request further in the .

    Get a list of your webhooks

    A GET request to /v2/webhooks?region=nz will return a list of all your configured webhooks in the given region.

    Example

    To perform an example request:

    An example response payload is:

    You can explore this request further in the .

    Get the configuration of a single webhook

    A GET request to /v2/webhooks/{WEBHOOK_ID}?region={REGION} will return the configuration of the webhook with the corresponding ID.

    The payloads are the same as the /v2/webhooks route but only a single webhook is returned instead of an array.

    If you try to access a webhook in a different region to the one specified in the request, you will receive an Invalid Region error. Additionally, accessing a webhook that your account does not have permission to view will return an You don't have permission to access that webhook error.

    If you attempt to view a webhook that doesn't exist, you will receive an Invalid Webhook ID error.

    Example

    To perform an example request:

    An example response payload is:

    You can explore this request further in the .

    Modify the configuration of a single webhook

    A PATCH request to /v2/webhooks/{WEBHOOK_ID}?region={REGION} allows you to modify any of the properties of the corresponding Webhook.

    Only the fields specified in the request body will be modified, and passing a blank ("") value will remove the property from the webhook where applicable.

    The response includes the updated webhook, as well as a map of every property that changed.

    The same errors as the above (GET /v2/webhooks/${WEBHOOK_ID}) request apply, and a Request validation failed error may also be thrown if you provide any invalid Webhook Event names. Refer to the top of this page for a list of Webhook Events and their descriptions.

    Example

    To perform an example request:

    An example response payload is:

    You can explore this request further in the .

    Delete a webhook

    A DELETE request to /v2/webhooks/{WEBHOOK_ID}?region={REGION} will permenantly delete the webhook.

    The response payload includes the configuration of the deleted webhook, as seen in the examples below.

    You may receive a small number of additional messages on your webhook's endpoint after deleting the webhook due to queued messages being sent through, but no new messages will be sent to your webhook after it has been deleted, and there is no way to recover the webhook without re-creating it.

    Example

    To perform an example request:

    An example response payload is:

    You can explore this request further in the .

    Ping a webhook

    A POST request to /v2/webhooks/{WEBHOOK_ID}/ping?region={REGION} will send a ping event to your webhook with an example payload.

    You can't explicitly subscribe to ping events, as it is a special event type that is only sent when requested using this endpoint.

    Example

    To perform an example request:

    An example response payload is:

    You can explore this request further in the .

    Webhook Payloads

    Example payloads for the webhook events that are currently in use are included below.

    ping

    recapture_new

    valuation_change

    json
    is supported)
  • endpoint: The HTTP endpoint that you want the webhook to push to. You can include URL parameters in this to facilitate token-based auth.

  • ping

    If you use the POST /v2/webhooks/{WEBHOOK_ID}/ping endpoint, your webhook will be called with the ping event to test the connection.

    recapture_new

    One of your Recapture customers was spotted on a used car listing website.

    recapture_price_change

    The listing price on one of your active Recapture customers changed.

    recapture_delist

    One of your Recapture customers removed their vehicle listing - either to cancel the sale or because it has been sold.

    valuation_change

    One of your previous price predictions has changed by (at least) the threshold defined in your valuation changes config (/valuations/changes)

    API Playground
    API Playground
    API Playground
    API Playground
    API Playground
    API Playground
    curl -XPOST -H 'ApiKey: {API_KEY}' \
        -H "Content-type: application/json" \
        -d '{
            "region": "nz",
            "name": "Sandbox Webhook",
            "format": "json",
            "endpoint": "https://sandbox.webhook.new"
        }' 'https://api.autograb.com.au/v2/webhooks'
    {
        "success": true,
        "webhook": {
            "id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
            "created_at": "2022-07-15T03:53:59.872Z",
            "name": "Sandbox Webhook",
            "format": "json",
            "events": ["recapture_new"],
            "endpoint": "https://example.com/push"
        }
    }
    curl "https://api.autograb.com.au/v2/webhooks?region=nz" \
         -H 'ApiKey: {API_KEY}'
    {
      "success": true,
      "webhooks": [
        {
          "id": "9a275d4f-5476-4d86-b691-f0f37d985909",
          "created_at": "2022-07-15T03:54:07.431Z",
          "name": "Sandbox Webhook",
          "format": "json",
          "events": ["recapture_new", "recapture_delist"],
          "endpoint": "https://sandbox.example.com/push"
        },
        {
          "id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
          "created_at": "2022-07-15T03:53:59.872Z",
          "name": "Production Webhook",
          "format": "json",
          "events": ["recapture_new"],
          "endpoint": "https://example.com/push"
        }
      ]
    }
    curl "https://api.autograb.com.au/v2/webhooks/{WEBHOOK_ID}?region=au" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "webhook": {
            "id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
            "created_at": "2022-07-15T03:53:59.872Z",
            "name": "Sandbox Webhook",
            "format": "json",
            "events": ["recapture_price_change"],
            "endpoint": "https://example.com/push"
        }
    }
    curl -XPATCH -H 'ApiKey: {API_KEY}' \
        -H "Content-type: application/json" -d '{
            "name": "Updated Sandbox Webhook",
            "endpoint": "https://sandbox.example.com/push",
            "events": ["recapture_new"]
        }' 'https://api.autograb.com.au/v2/webhooks/{WEBHOOK_ID}?region=au'
    {
        "success": true,
        "webhook": {
            "id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
            "created_at": "2022-07-15T03:53:59.872Z",
            "name": "Updated Sandbox Webhook",
            "format": "json",
            "events": ["recapture_new"],
            "endpoint": "https://example.com/push"
        },
        "updates": {
            "name": "Updated Sandbox Webhook",
            "endpoint": "https://sandbox.example.com/push",
            "events": ["recapture_new"]
        }
    }
    curl -XDELETE "https://api.autograb.com.au/v2/webhooks/{WEBHOOK_ID}?region=au" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "webhook": {
            "id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
            "created_at": "2022-07-15T03:53:59.872Z",
            "name": "Sandbox Webhook",
            "format": "json",
            "events": ["recapture_price_change"],
            "endpoint": "https://example.com/push"
        }
    }
    curl -XPOST "https://api.autograb.com.au/v2/webhooks/{WEBHOOK_ID}/ping?region=au" \
         -H 'ApiKey: {API_KEY}'
    {
        "success": true,
        "ping": {
            "webhook_id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
            "at": "2022-07-15T03:53:59.872Z",
            "format": "json",
            "endpoint": "https://example.com/push",
            "response_time_ms": 83,
            "response_status": 200
        }
    }
    {
        // The Webhook Event type (required)
        "event": "ping",
        // The webhook event payload (required)
        "data": {
            "webhook_id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
            "at": "2022-09-03T00:37:57.095Z"
        }
    }
    {
        // The Webhook Event type (required)
        "event": "recapture_new",
        // The Webhook Event payload (required)
        "data": {
            // The Recapture record which has been seen online
            "customer": {
                // The internal ID of the Recapture client (required)
                "id": "05df2f33-1d03-404c-b0c2-dfbecaa65fff", // Required
                // The ISO timestamp when the event took place (required)
                "last_updated": "2022-09-03T00:37:57.095Z",
                // The registration plate that you were tracking (nullable)
                "rego": "BMT038",
                // The VIN uploaded for the Recapture customer (nullable)
                "vin": null,
                // The name uploaded for the Recapture Customer (nullable)
                "client_name": "Raph",
                // The mobile number uploaded for the Recapture Customer (nullable)
                "mobile_number": "+61 123 456 789",
                // The ISO formatted sale date uploaded alongside the customer record, if applicable (nullable)
                "sale_date": "2022-03-02T00:00:00.000Z",
                // The ISO formatted expiry date for the Recapture customer record, if applicable (nullable)
                "expiry_date": "2022-11-20T00:00:00.000Z",
                // The vehicle title, determined by a registration or listing lookup (nullable)
                "vehicle_title": "2019 Volkswagen Polo 85TSI Comfortline",
                // Any additional data that was uploaded alongside the customer record (required)
                "additional_fields": {
                    "notes": "Three free services included in the package"
                },
                // An array including details for each time one of the customer's vehicles was spotted online (required)
                "sightings": [
                    {
                        // The date when the vehicle was spotted online (required)
                        "at": "2022-09-03T00:37:57.095Z", 
                        // The Lead ID that includes the listing where the vehicle was spotted online (required)
                        "lead_id": "nz_volkswagen_bmt038",
                        // The URL where the vehicle was listed online (required)
                        "listing_url": "https://autotrader.co.nz/used-cars-for-sale/volkswagen/polo/806849",
                        // The title of the listing (required)
                        "listing_title": "2019 Volkswagen Polo 85TSI Comfortline AW Auto MY19",
                        // The price that the vehicle was listed for at the time of capture (nullable)
                        "listing_price": 26890,
                    }
                ]
            }
        }
    }
    {
        // The Webhook Event type (required)
        "event": "valuation_change",
        // The webhook event payload (required)
        "data": {
            // The pricing record which has changed in value
            "pricing_record": {
                // The unique Pricing Record ID (required)
                "id": "a9fb47f6-3d1d-4945-9f4d-f45b12a63797",
                // The AutoGrab Vehicle ID associated with the pricing record (required)
                "vehicle_id": "5478860653068288",
                // The ISO timestamp when the pricing record was first created (required)
                "created_at": "2022-08-20T07:20:32.412Z",
                // The registration plate associated with the pricing record (nullable)
                "rego": "ZXX678",
                // The registration state associated with the pricing record, if applicable (nullable)
                "state": "VIC",
                // The VIN associated with the pricing record (nullable)
                "vin": null,
                // The odometer input for the pricing record (required)
                "kms": 32000,
                // The current price prediction for the given vehicle at the kilometers entered (required)
                "price": 36782,
                // The current predicted retail price (required)
                "retail_price": 36782,
                // The current predicted trade price (required)
                "trade_price": 32100,
                // The adjustments and overrides that are currently applied to the pricing record (nullable)
                // Matches the adjustment schema from the `/v2/valuations/predict` endpoint
                "adjustment": null,
                // An array of all the recorded valuation changes that this pricing record has had (required)
                "changes": [
                    {
                        // The unique change ID (required)
                        "id": "ba4b3912-ae25-44c1-8a66-36ca68fac859",
                        // The change type (valuation or configuration) (required)
                        // A valuation change implies that the market has shifted, 
                        // whereas a configuration change is simply a result of your 
                        // adjustments/overrides configuration changing
                        "type": "valuation",
                        // The ISO timestamp when the change occurred (required)
                        "at": "2022-09-03T01:03:55.382Z",
                        // The new price (required)
                        "new_price": 36782,
                        // The new retail price (required)
                        "new_retail_price": 36782,
                        // The new trade price (required)
                        "new_trade_price": 32100,
                        // The old price (required)
                        "old_price": 38520,
                        // The old retail price (required)
                        "old_retail_price": 38520,
                        // The old trade price (required)
                        "old_trade_price": 34200
                    },
                    {
                        // Any previous changes to the pricing record will also be
                        // included here, following the same schema as above
                        "id": "46610b56-f3c7-4744-8adf-021c0aba1cc4",
                        "type": "configuration",
                        "at": "2022-09-01T03:12:32.524Z",
                        "new_price": 38520,
                        "new_retail_price": 38520,
                        "new_trade_price": 34200,
                        "old_price": 38520,
                        "old_retail_price": 37520,
                        "old_trade_price": 33900 
                    }
                ]
            },
            // This is a copy of the specific valuation change that caused the webhook to trigger (required)
            // in case many changes occur in a short time span, this is the source of truth for the
            // exact change that triggered the event.
            "change": {
                "id": "ba4b3912-ae25-44c1-8a66-36ca68fac859",
                "type": "valuation",
                "at": "2022-09-03T01:03:55.382Z",
                "new_price": 36782,
                "new_retail_price": 36782,
                "new_trade_price": 32100,
                "old_price": 38520,
                "old_retail_price": 38520,
                "old_trade_price": 34200
            }
        }
    }