Upload Payload (POST)
Main API for updating the current status of the vehicle. The mileage portion of the API is important for driving maintenance and predictive failure information, while odometer and OBD2 data is required for the vehicle diagnostic information.
http://api2.carmd.com/v2.0/upload
In order for CarMD to assure our customers of accurate maintenance and diagnostic results, it is important for us to receive regular mileage inputs. Missing, outdated or incorrect mileage degrades our ability to provide accurate maintenance recommendations and predicted repairs. A determination of wear and tear, mileage can also affect the fix. This is similar to how a doctor might treat a baby versus a senior citizen with similar symptoms.
To help assure the accuracy of scheduled maintenance, predictive diagnostics and recommended fix when you need it most, we ask that you report mileage to us at least daily for each vehicle.
Request Data
{
"vehicleID" : "5549adf43c10810994bdae08",
"mileage" : "50000",
"rawType" : "1",
"latitude": "",
"latitude": "",
"formattedData" :
{
"codes" :
{
"pwrPrimary" : "P0113",
"pwrStored" : "P0113,U1022",
"pwrPending" : "P0113,U1022,P1234",
"absPrimary" : "",
"absStored" : "C0012",
"absPending" : "",
"srsPrimary" : "",
"srsStored" : "B0015",
"absPending" : ""
},
"monitor" : "0101486B09410181076500EB",
"freezeFrame" : "$09,00,P0113,03:0100,04:56,05:4A,06:7E,07:81,0B:22,0C:1510,0D:00,0E:A1,0F:00,11:2F,20:00000001,40:08000000,45:15"
}
}
{
"vehicleID" : "5549adf43c10810994bdae08",
"mileage" : "50000",
"rawType" : "0",
"rawData" : "02 01 B0 00 9F 5B 03 8D 64 A3 0D D0 98 E0 63 0C C5 63 7C A4 47 4E B4 3F EE 26 BD B4 FA 48 AC 42 55 ED F9 B7 D9 C7 CB 94 0C 2B C7 78 CB C5 2A 6A 21 62 EA 79 36 CE BA 6F 5C 42 38 32 C4 7A 0F FE 68 B5 E7 9E D1 45 53 00 63 34 75 45 9C 1E C3 09 79 2C FA CF D1 45 53 00 63 34 75 45 9C 1E C3 09 79 2C FA CF 50 AA 64 9C 1F 7B F9 7B F3 A2 A2 00 23 B8 99 2C D1 45 53 00 63 34 75 45 9C 1E C3 09 79 2C FA CF DE 05 11 1C A6 89 0D FE 85 41 E8 F0 96 30 A3 97 FD 85 DF C2 6B 1A AC 2D 1E C7 E2 4D A1 38 47 E3 A0 53 56 7A A9 9D D7 49 43 BF EC 8D D1 0D F4 6C 02 04 00 31 01 16 33 04 11 31 46 54 59 52 31 30 44 35 37 50 41 33 30 34 38 34 05 04 03 00 07 00"
}
{
"vehicleID" : "5549adf43c10810994bdae08",
"mileage" : "50000",
"rawType" : "1",
"rawData" : "HQEDAQAAAhAAMDEAMDAANDUAAAAAAAAADQECDgEE/wP1fCkU3vyx0lucWWMTjzAx+yNE5mUIz34D59tSFfwPhgawq2VgkGoUiU1qIHrUA6e18X/BtXPctf+QdfEdrNixg1+k4bZcGxt3q2n9vi/tqwNPYpRH1njRFOwox1FRDfO7lR+kMmGD3XH1/lP1zPQs4x6YGcNQKOHdvvHtgFndMs6CZNeCdZfdr7ZrHGnt5KiuTVW67JwbbgNrVJ60TwrdjBrQFUO426VERzMZoDmAhbdR3OqNQs6AF1Yoq+X0TdxJ9WBB51Em8dUegdyved/bVs8d4OWMamBIq1HvB2twVowkq96rRBfAAi18LmCMCLIbDMBSEffBaNM4QM5YYwRuENIticiyQY8RNFkcVMmfUgi4BPKzpBfwuXNsclB8TdFNgqHXd1K/b/1GsBPm4kNMKM2zHNoHec4XfwclkRb5gvUDQbPeEYnkkqK5UDP/c//Mq5CP8KxKpMDVM0tnt2ntIJ62hp2F3bCJ7qyfuMc5en1/HLfPPEFAROYEiyUc2J4L8vrBKmiPm1Tprn5NN47N54PkTVpkJFjKUTgTmiP+57G41HYCltSACtEdEfg/tgJ7hAEwY7rRkSorrXcKYUn2ONfVRIhuE2aRaPkfAobTM4apyv2leKSLkB4jkdmwsSjXQgqFha8mJJnrotUHqE3ui3Ycd6AAw32wg3vS/QNRLtouZJFVVg1eN39hI2KjsekSizo0Dq8TaDyWTn86wf0DYzNXC9Os4olX2g7DC5C237JBvrIzAPciqXjwmw3q/g228I5QM580GYD+or1vREBGoRbBpSsFDVrDQhdXqlsfuxuQfhH4yyJltQAwDFrGKUCzRZzmawMn8H2y6bv5kQ0gAFoEdCSvDNldkinn1oMZ9uANUT2cyXlMoDspKfeXLLQOwIPpe+3gVqWYWLDUMONbUAk6yCrVkOC00Ii7oYKvnS8eLH2iJmb+M4oFkGYxF0835YAKha9jCzlSPTHuY0sSzUoHVD97mDA9aPzaLzCtG6YAu7rkOgeQEXT7JZp8sG/2lgyWTj4xBH06/njWinsIYBW7EZ97aahAKqlvig5hk50JcEVFUItncwCdBjZbIlO0KU6URQb0M4+UysuhCmKHNMzxNhfDej5IVdlC3cAyQUOrtb4KS9Xv8PmzemHJY1hrTP5iqIBYbiMzVfTMHvENCBhwoRo+exX4y8B4krA0VtBUoS8LhG00sCGMBKMeavEkP2pGfYOrhfrcyqcR3aHF4lcklD6ECgnbrUjMKUgHaFsGDJ5+ukDnoxge2q86AO9cqQ+UtSHq+Owo3+QhpuLq+LUqWsOArRiA2EtuZ/ULgubmrQJb8PpcdbukikbVXBs1V5pwa5wPrAFbtfPjZw=="
}
Must submit either raw or formatted data.
Field | Type | Notes |
vehicleID | string | Required. The vehicle this update is for. |
mileage | integer | Required. Accurate mileage is required. |
rawType | integer | Optional. If using raw data, specify which type of raw data is being posted. 0 – (default) OFM Hex data string 1 – Old raw data string |
rawData | string | Optional. Raw data from the OBD2 port. |
formattedData | FormattedOBDData | Optional. Formatted OBD2 data if raw is unavailable. |
latitude | string | Optional. GPS data. |
longitude | string | Optional. GPS data. |
FormattedOBDData object
Field | Type | Notes |
codes | ErrorCode | Optional. The available codes from the OBD2 port. |
monitor | string | Optional. Monitor information. |
freezeFrame | string | Optional. While this data optional, it is needed in case CarMD does not yet have a fix for a DTC issue. This data helps us and our repair team understand the context of how the issue occurred and begin seeking possible repair solutions. |
ErrorCode object
Field | Type | Notes |
pwrPrimary | string | Optional. The primary powertrain DTC is the DTC that caused an issue severe enough for the check engine light to come on. Also known as the MIL DTC. |
pwrStored | string | Optional. Separate by commas |
pwrPending | string | Optional. Separate by commas. These are powertrain DTCs which have occurred at least once and the system is holding onto to see if it reoccurs. If the DTC fails to occur again, it is erased. If it reoccurs it matures into a primary powertrain DTC causing the check engine light to come on. |
absPrimary | string | Optional. The primary ABS DTC is the DTC that caused an issue severe enough for the ABS warning light to come on. Also known as the ABS MIL DTC. |
absStored | string | Optional. Separate by commas |
absPending | string | Optional. Separate by commas. Similar to pwrPending but for ABS. |
srsPrimary | string | Optional. The primary SRC DTC is the DTC that caused an issue severe enough for the SRS warning light to come on. Also known as the SRS MIL DTC. |
srsStored | string | Optional. Separate by commas |
srsPending | string | Optional. Separate by commas. Similar to pwrPending but for SRS. |
Key Value object
Field | Type | Notes |
key | string | Optional. |
value | string/int/bool | Optional. |
Response
{
"message": {
"code": 0,
"message": "OK",
"credentials": "Valid",
"version": "v2.0.0",
"account": "Premium",
"method": "Upload Payload",
"action": "POST",
"counter": 31
},
"data": {
"vehicle": {
"vehicleID": "5549adf43c10810994bdae08",
"fleetID": "5539bdce3c10810d7c4e484c",
"vehCustomID": "2005 HONDA CIVIC",
"vin": "2HGES16525H550717",
"vehName": "2005 Honda Civic",
"year": 2005,
"make": "HONDA",
"model": "CIVIC",
"engine": "L4, 1.7L; SOHC",
"mileage": 59000,
"tag": "Car, White",
"fuelMpgCombined": "32.00",
"fuelMpgCity": "29.00",
"fuelMpgHighway": "36.00",
"active": true
},
"response": {
"status": {
"report": "Red",
"mil": "Not Supported",
"engine": "Red",
"powerTrain": "Red",
"abs": "Green",
"srs": "Green",
"emission": "Ready"
},
"uploadID": "5552d0943c1081139466af66",
"reportID": null,
"isNew": true
}
}
}
Field | Type | Notes |
message | Message | |
data | UploadResponse |
Message object
Field | Type | Notes |
code | string | Message code. |
message | string | Ok or Failed. |
credentials | string | Valid or Invalid. |
version | string | v2.0.0 |
account | string | Free or Premium |
method | string | Name of the API called |
action | string | returns a GET, POST, PUT, DELETE |
counter | integer | Counter for this request. Increments by one for every request made. This is only important for free users who have a limited number of API requests. |
UploadResponse object
Field | Type | Notes |
vehicle | Vehicle | Information on the vehicle. |
response | UpdateResponseData | Response data to the uploaded payload. |
Vehicle object
Field | Type | Notes |
vehName | string | Name of this vehicle. |
mileage | integer | Number of miles this vehicle has travelled. |
vin | string | Vehicle Identification Number. |
year | string | Year this vehicle was manufactured. |
make | string | Make of this vehicle. |
model | string | Model of this vehicle. |
engine | string | Engine type of this vehicle. |
vehicleID | string | CarMD’s generated ID for this vehicle. This ID will always be unique to this fleet. |
fleetID | string | CarMD’s fleet ID for this vehicle. |
tag | list<string> | Tags applied to this vehicle. |
vehCustomID | string | Null or returns the vehCustomID of this vehicle. |
active | boolean | True or False. True if services are available for this vehicle. |
UpdateResponseData object
uploadID vs reportID
uploadID is generated for every payload
reportID remains the same unless new information has been generated.
Field | Type | Notes |
uploadID | string | The reference ID to this payload. Can be used to pull the diagnostic report for this payload. |
reportID | string | The reference ID to the generated diagnostic report. Can be used to pull the diagnostic report. |
status | Status | Various system status. |
isNew | boolean | Our system will let you know if the payload to our service has updated any data or if the data has remained the same since the last upload. True – Payload is new, may produce a different diagnostic report. False – Payload is the same as last upload. |
Status object
Field | Type | Notes |
report | string | Overall report status. Which are: red – Primary DTC found, check engine light(CEL) is on yellow – Pending DTC detected, CEL is not on green – No DTCs found, vehicles are ok |
mil | string | |
engine | string | |
powerTrain | string | |
abs | string | |
srs | string | |
emission | string |