> ## Documentation Index
> Fetch the complete documentation index at: https://smartcar.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors Overview

> A comprehensive breakout of all Smartcar errors.

# Connect Errors

| Error Type           | Error Code                                                           | Description                                                                                                                     |
| -------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Access Denied        | [access\_denied](/errors/connect-errors/access-denied)               | This error occurs when a user denies your application access to the requested scope of permissions.                             |
| Invalid Subscription | [invalid\_subscription](/errors/connect-errors/invalid-subscription) | This error occurs when a user’s vehicle is compatible but their connected services subscription is inactive or never activated. |
| Configuration Error  | [configuration\_error](/errors/connect-errors/configuration-error)   | This error occurs when the user has encountered an Error page in Connect and has chosen to return to your application.          |
| No Vehicles          | [no\_vehicles](/errors/connect-errors/no-vehicles)                   | This error occurs when a vehicle owner has a connected services account, but there are no vehicles associated with the account. |
| Vehicle Incompatible | [vehicle\_incompatible](/errors/connect-errors/vehicle-incompatible) | This error occurs when a user tries to authorize an incompatible vehicle in Smartcar Connect.                                   |
| Server Error         | [server\_error](/errors/connect-errors/server-error)                 | If there is a server error, the user will return to your application.                                                           |

<br />

# API Errors

API errors are returned from requests made via Smartcar API.
Smartcar uses HTTP status codes to indicate success or failure of API requests. This includes:

* `2XX`: indicates success
* `4XX`: indicates an invalid request (e.g. a required parameter is missing from the request body)
* `5XX`: indicates Smartcar-related issues (e.g. a vehicle is not capable of fulfilling a request).

## Error Response

All Smartcar errors contain the following fields:

| Name                 | Type   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| type                 | string | A unique identifier that groups codes into broad categories of errors                                                                                                                                                                                                                                                                                                                                                                                        |
| code                 | string | A short, descriptive identifier for the error that occurred                                                                                                                                                                                                                                                                                                                                                                                                  |
| title                | string | A human readable representation of the code                                                                                                                                                                                                                                                                                                                                                                                                                  |
| detail               | string | A short description of the code that provides additional information about the error. Always provided in English.                                                                                                                                                                                                                                                                                                                                            |
| status               | number | The HTTP status code (In long running commands, may differ from http response header)                                                                                                                                                                                                                                                                                                                                                                        |
| resolution           | object | An object with at least one enumerated property named as "type" that specifies which action can be taken to resolve this error. There are three possible values for the property "type": `RETRY_LATER` - Retry the request at a later time; `REAUTHENTICATE` - Prompt the user to re-authenticate in Smartcar Connect; and `CONTACT_SUPPORT` - Contact Smartcar’s support team. This object could contain other properties depending on the "type" of error. |
| suggestedUserMessage | object | A friendly message to describe transient errors to application users                                                                                                                                                                                                                                                                                                                                                                                         |
| links                | object | Links to error documentation                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| meta                 | object | Contains debugging information useful when contacting customer support                                                                                                                                                                                                                                                                                                                                                                                       |

<br />

| Error Type                   | Error Code                                                                                               | Status | Description                                                                                                                                                                                                   |
| ---------------------------- | -------------------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AUTHENTICATION`             | [UNAUTHORIZED](/errors/api-errors/v3/authentication-errors#UNAUTHORIZED)                                 | 401    | Thrown when there is an issue with your authorization headers.                                                                                                                                                |
| `AUTHENTICATION`             | [ACCESS\_DENIED](/errors/api-errors/v3/authentication-errors#ACCESS_DENIED)                              | 403    | Thrown when the presented token does not have access to the requested resource.                                                                                                                               |
| `BILLING`                    | [INVALID\_PLAN](/errors/api-errors/v3/billing-errors#invalid-plan)                                       | 430    | Thrown when limits have been reached based on your plan or if the feature is not available.                                                                                                                   |
| `BILLING`                    | [VEHICLE\_LIMIT](/errors/api-errors/v3/billing-errors#vehicle-limit)                                     | 430    | Thrown when limits have been reached based on your plan or if the feature is not available.                                                                                                                   |
| `BILLING`                    | [VEHICLE\_REQUEST\_LIMIT](/errors/api-errors/v3/billing-errors#vehicle-request-limit)                    | 430    | Thrown when limits have been reached based on your plan or if the feature is not available.                                                                                                                   |
| `BILLING`                    | [ACCOUNT\_SUSPENDED](/errors/api-errors/v3/billing-errors#account-suspended)                             | 430    | Thrown when limits have been reached based on your plan or if the feature is not available.                                                                                                                   |
| `COMPATIBILITY`              | [MAKE\_NOT\_COMPATIBLE](/errors/api-errors/v3/compatibility-errors#make-not-compatible)                  | 501    | Thrown when Smartcar does not support a make or feature for a vehicle.                                                                                                                                        |
| `COMPATIBILITY`              | [SMARTCAR\_NOT\_CAPABLE](/errors/api-errors/v3/compatibility-errors#smartcar-not-capable)                | 501    | Thrown when Smartcar does not support a make or feature for a vehicle.                                                                                                                                        |
| `COMPATIBILITY`              | [VEHICLE\_NOT\_CAPABLE](/errors/api-errors/v3/compatibility-errors#vehicle-not-capable)                  | 501    | Thrown when Smartcar does not support a make or feature for a vehicle.                                                                                                                                        |
| `COMPATIBILITY`              | [PLATFORM\_NOT\_CAPABLE](/errors/api-errors/v3/compatibility-errors#platform-not-capable)                | 501    | Thrown when the OEM integration does not support this endpoint. The vehicle owner may need to reauthenticate.                                                                                                 |
| `CONNECTED_SERVICES_ACCOUNT` | [ACCOUNT\_ISSUE](/errors/api-errors/v3/connected-services-account-errors#account-issue)                  | 400    | Thrown when there are issues with the user's connected service account.                                                                                                                                       |
| `CONNECTED_SERVICES_ACCOUNT` | [AUTHENTICATION\_FAILED](/errors/api-errors/v3/connected-services-account-errors#authentication-failed)  | 400    | Thrown when there are issues with the user's connected service account.                                                                                                                                       |
| `CONNECTED_SERVICES_ACCOUNT` | [NO\_VEHICLES](/errors/api-errors/v3/connected-services-account-errors#no-vehicles)                      | 400    | Thrown when there are issues with the user's connected service account.                                                                                                                                       |
| `CONNECTED_SERVICES_ACCOUNT` | [SUBSCRIPTION](/errors/api-errors/v3/connected-services-account-errors#subscription)                     | 400    | Thrown when there are issues with the user's connected service account.                                                                                                                                       |
| `CONNECTED_SERVICES_ACCOUNT` | [VEHICLE\_MISSING](/errors/api-errors/v3/connected-services-account-errors#vehicle-missing)              | 400    | Thrown when there are issues with the user's connected service account.                                                                                                                                       |
| `CONNECTED_SERVICES_ACCOUNT` | [PERMISSION](/errors/api-errors/v3/connected-services-account-errors#permission)                         | 400    | Thrown when there are permission issues with the user's connected service account.                                                                                                                            |
| `CONNECTED_SERVICES_ACCOUNT` | [VIRTUAL\_KEY\_REQUIRED](/errors/api-errors/v3/connected-services-account-errors#virtual-key-required)   | 400    | Thrown when a virtual key is required to complete the request.                                                                                                                                                |
| `RATE_LIMIT`                 | [SMARTCAR\_API](/errors/api-errors/v3/rate-limit-errors#smartcar-api)                                    | 429    | Thrown when there is an issue with the frequency of your requests.                                                                                                                                            |
| `RATE_LIMIT`                 | [VEHICLE](/errors/api-errors/v3/rate-limit-errors#vehicle)                                               | 429    | Thrown when there is an issue with the frequency of your requests.                                                                                                                                            |
| `RESOURCE_NOT_FOUND`         | [PATH](/errors/api-errors/v3/resource-not-found-errors)                                                  | 404    | Thrown if the requested path does not exist.                                                                                                                                                                  |
| `RESOURCE_NOT_FOUND`         | [VERSION](/errors/api-errors/v3/resource-not-found-errors#version)                                       | 404    | Thrown if the requested path does not exist.                                                                                                                                                                  |
| `SERVER`                     | [INTERNAL](/errors/api-errors/v3/server-errors#internal)                                                 | 500    | Thrown when Smartcar runs into an unexpected issue and was unable to process the request.                                                                                                                     |
| `SERVER`                     | [MULTIPLE\_RECORDS\_FOUND](/errors/api-errors/v3/server-errors#multiple-records-found)                   | 500    | Thrown when multiple records are found but only one was expected.                                                                                                                                             |
| `SERVER`                     | [RECORD\_NOT\_FOUND](/errors/api-errors/v3/server-errors#record-not-found)                               | 500    | Thrown when a required record could not be found.                                                                                                                                                             |
| `UPSTREAM`                   | [INVALID\_DATA](/errors/api-errors/v3/upstream-errors#invalid-data)                                      | 502    | Thrown when the OEM or vehicle failed to process the request.                                                                                                                                                 |
| `UPSTREAM`                   | [KNOWN\_ISSUE](/errors/api-errors/v3/upstream-errors#known-issue)                                        | 502    | Thrown when the OEM or vehicle failed to process the request.                                                                                                                                                 |
| `UPSTREAM`                   | [NO\_RESPONSE](/errors/api-errors/v3/upstream-errors#no-response)                                        | 502    | Thrown when the OEM or vehicle failed to process the request.                                                                                                                                                 |
| `UPSTREAM`                   | [RATE\_LIMIT](/errors/api-errors/v3/upstream-errors#rate-limit)                                          | 502    | Thrown when the OEM or vehicle failed to process the request.                                                                                                                                                 |
| `UPSTREAM`                   | [UNKNOWN\_ISSUE](/errors/api-errors/v3/upstream-errors#unknown-issue)                                    | 502    | Thrown when the OEM or vehicle failed to process the request.                                                                                                                                                 |
| `VALIDATION`                 | [INVALID\_INPUT\_FORMAT](/errors/api-errors/v3/validation-errors#INVALID_INPUT_FORMAT)                   | 400    | Thrown if there is an issue with the format of the request or body.                                                                                                                                           |
| `VEHICLE_STATE`              | [ASLEEP](/errors/api-errors/v3/vehicle-state-errors#asleep)                                              | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't retrieve vehicle data because the vehicle is asleep and not responding to network requests. |
| `VEHICLE_STATE`              | [CHARGING\_IN\_PROGRESS](/errors/api-errors/v3/vehicle-state-errors#charging-in-progress)                | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't unlock the charge port while the vehicle is actively charging.                              |
| `VEHICLE_STATE`              | [CHARGING\_PLUG\_NOT\_CONNECTED](/errors/api-errors/v3/vehicle-state-errors#charging-plug-not-connected) | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't start charging the vehicle if the cable is not plugged in.                                  |
| `VEHICLE_STATE`              | [DOOR\_OPEN](/errors/api-errors/v3/vehicle-state-errors#door-open)                                       | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't lock the vehicle if a door is open.                                                         |
| `VEHICLE_STATE`              | [FULLY\_CHARGED](/errors/api-errors/v3/vehicle-state-errors#fully-charged)                               | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't start charging because the battery is already fully charged.                                |
| `VEHICLE_STATE`              | [NOT\_CHARGING](/errors/api-errors/v3/vehicle-state-errors#not-charging)                                 | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't stop charging because the vehicle is not currently charging.                                |
| `VEHICLE_STATE`              | [CHARGE\_FAULT](/errors/api-errors/v3/vehicle-state-errors#charge-fault)                                 | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't start charging because the vehicle has detected a charging system fault.                    |
| `VEHICLE_STATE`              | [HOOD\_OPEN](/errors/api-errors/v3/vehicle-state-errors#hood-open)                                       | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't start the engine if the hood is open.                                                       |
| `VEHICLE_STATE`              | [IGNITION\_ON](/errors/api-errors/v3/vehicle-state-errors#ignition-on)                                   | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't perform certain remote actions while the ignition is on.                                    |
| `VEHICLE_STATE`              | [IN\_MOTION](/errors/api-errors/v3/vehicle-state-errors#in-motion)                                       | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't lock the doors while the vehicle is in motion.                                              |
| `VEHICLE_STATE`              | [REMOTE\_ACCESS\_DISABLED](/errors/api-errors/v3/vehicle-state-errors#remote-access-disabled)            | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't send remote commands because remote access is disabled in the vehicle settings.             |
| `VEHICLE_STATE`              | [TRUNK\_OPEN](/errors/api-errors/v3/vehicle-state-errors#trunk-open)                                     | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't lock the vehicle if the trunk is open.                                                      |
| `VEHICLE_STATE`              | [UNKNOWN](/errors/api-errors/v3/vehicle-state-errors#unknown)                                            | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, the vehicle reports an unknown state that prevents the requested action.                              |
| `VEHICLE_STATE`              | [UNREACHABLE](/errors/api-errors/v3/vehicle-state-errors#unreachable)                                    | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't send commands because the vehicle is offline or out of network range.                       |
| `VEHICLE_STATE`              | [VEHICLE\_OFFLINE\_FOR\_SERVICE](/errors/api-errors/v3/vehicle-state-errors#vehicle-offline-for-service) | 409    | Thrown when a request fails due to the state of a vehicle or logically cannot be completed—for example, you can't access vehicle data because the vehicle is offline for maintenance or service.              |
