MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with Plus-Auto Marketplace API.

Authorize

Authorize Dealer

requires authentication

Log-in dealer and generate API token.

This endpoint authenticates and authorizes a dealer to use the API by using the provided dealer main account email and password. On success, it revokes any previous tokens and generates a new API token.

Note: Token is valid for 30 days from the date when is generated.

Use the token to authenticate requests to API by including it as follows:

Authorization: Bearer token
Example request:
curl --request POST \
    "https://api.plus-auto.ro/authorize" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json" \
    --data "{
    \"email\": \"user@example.com.\",
    \"password\": \"yewfeVD5FA%GDaa5.\"
}"
const url = new URL(
    "https://api.plus-auto.ro/authorize"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

let body = {
    "email": "user@example.com.",
    "password": "yewfeVD5FA%GDaa5."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/authorize';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
        'json' => [
            'email' => 'user@example.com.',
            'password' => 'yewfeVD5FA%GDaa5.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/authorize'
payload = {
    "email": "user@example.com.",
    "password": "yewfeVD5FA%GDaa5."
}
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "Authenticated"
    },
    "data": {
        "token": "tJW8z0yyj4q2Oio1Lygkeoc08SizTWsfzk5UppmK4b7c9a1f"
    }
}
 

Example response (415):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Content-Type must be application/vnd.api+json",
            "status": "415",
            "title": "Error"
        }
    ]
}
 

Request      

POST authorize

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Body Parameters

email   string   

The dealer's main account email address.
Example: user@example.com.

password   string   

The dealer's main account password.
Example: yewfeVD5FA%GDaa5.

De-authorize Dealer

requires authentication

Logout dealer and delete API token.

This endpoint deauthenticates and logout dealer from Plus Auto Marketplace API. On success, it revokes the current active token. Use the token to logout from API by including it as follows:

Authorization: Bearer token
Example request:
curl --request POST \
    "https://api.plus-auto.ro/deauthorize" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/deauthorize"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/deauthorize';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/deauthorize'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "Success"
    },
    "data": []
}
 

Example response (415):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Content-Type must be application/vnd.api+json",
            "status": "415",
            "title": "Error"
        }
    ]
}
 

Request      

POST deauthorize

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Ads

List

requires authentication

Retrieve a paginated list of Ads. By default, this endpoint returns up to a pre-defined number of Ads per page, but you can change the pagination settings by using query parameters.

Note: The returned list contains only limited information for each Ad. To view full Ad details, you must use the corresponding "Ads -> Show" endpoint.

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/ads?page%5Bsize%5D=3&page%5Bnumber%5D=6" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json" \
    --data "{
    \"sort\": \"\\\"rollingKm,-publicationDate\\\" filters by rollingKm ascending and by publicationDate descending.\",
    \"filter[status]\": 0,
    \"filter[saleType]\": \"filter[saleType]=1,2\",
    \"filter[priceType]\": 0,
    \"filter[seller]\": \"filter[seller]=razvan-casian\",
    \"filter[renewal]\": 0,
    \"filter[expirationDate]\": \"filter[expirationDate]=2025-04-25,2025-06-04\",
    \"filter[publicationDate]\": \"filter[publicationDate]=2025-01-15,2025-03-18\",
    \"filter[createdAt]\": \"filter[createdAt]=2025-05-25\"
}"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads"
);

const params = {
    "page[size]": "3",
    "page[number]": "6",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

let body = {
    "sort": "\"rollingKm,-publicationDate\" filters by rollingKm ascending and by publicationDate descending.",
    "filter[status]": 0,
    "filter[saleType]": "filter[saleType]=1,2",
    "filter[priceType]": 0,
    "filter[seller]": "filter[seller]=razvan-casian",
    "filter[renewal]": 0,
    "filter[expirationDate]": "filter[expirationDate]=2025-04-25,2025-06-04",
    "filter[publicationDate]": "filter[publicationDate]=2025-01-15,2025-03-18",
    "filter[createdAt]": "filter[createdAt]=2025-05-25"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
        'query' => [
            'page[size]' => '3',
            'page[number]' => '6',
        ],
        'json' => [
            'sort' => '"rollingKm,-publicationDate" filters by rollingKm ascending and by publicationDate descending.',
            'filter[status]' => 0,
            'filter[saleType]' => 'filter[saleType]=1,2',
            'filter[priceType]' => 0,
            'filter[seller]' => 'filter[seller]=razvan-casian',
            'filter[renewal]' => 0,
            'filter[expirationDate]' => 'filter[expirationDate]=2025-04-25,2025-06-04',
            'filter[publicationDate]' => 'filter[publicationDate]=2025-01-15,2025-03-18',
            'filter[createdAt]' => 'filter[createdAt]=2025-05-25',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads'
payload = {
    "sort": "\"rollingKm,-publicationDate\" filters by rollingKm ascending and by publicationDate descending.",
    "filter[status]": 0,
    "filter[saleType]": "filter[saleType]=1,2",
    "filter[priceType]": 0,
    "filter[seller]": "filter[seller]=razvan-casian",
    "filter[renewal]": 0,
    "filter[expirationDate]": "filter[expirationDate]=2025-04-25,2025-06-04",
    "filter[publicationDate]": "filter[publicationDate]=2025-01-15,2025-03-18",
    "filter[createdAt]": "filter[createdAt]=2025-05-25"
}
params = {
  'page[size]': '3',
  'page[number]': '6',
}
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 1,
        "perPage": 3,
        "to": 3,
        "total": 3
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "https://api.plus-auto.ro/v1/ads?page%5Bnumber%5D=1&page%5Bsize%5D=3",
        "last": "https://api.plus-auto.ro/v1/ads?page%5Bnumber%5D=1&page%5Bsize%5D=3"
    },
    "data": [
        {
            "type": "ads",
            "id": 78345,
            "attributes": {
                "salesType": 1,
                "title": "Test API 1",
                "status": 1,
                "publicationDate": "2025-04-23T21:00:00.000000Z",
                "expirationDate": "2025-05-23T21:00:00.000000Z"
            }
        },
        {
            "type": "ads",
            "id": 78346,
            "attributes": {
                "salesType": 1,
                "title": "Test API 2",
                "status": 0,
                "publicationDate": null,
                "expirationDate": null
            }
        },
        {
            "type": "ads",
            "id": 78347,
            "attributes": {
                "salesType": 1,
                "title": "Test API 3",
                "status": 0,
                "publicationDate": null,
                "expirationDate": null
            }
        },
        {
            "type": "ads",
            "id": 78348,
            "attributes": {
                "salesType": 1,
                "title": "Test API 4",
                "status": 0,
                "publicationDate": null,
                "expirationDate": null
            }
        },
        {
            "type": "ads",
            "id": 78349,
            "attributes": {
                "salesType": 1,
                "title": "Test API 5",
                "status": 0,
                "publicationDate": null,
                "expirationDate": null
            }
        },
        {
            "type": "ads",
            "id": 78350,
            "attributes": {
                "salesType": 1,
                "title": "Test API 6",
                "status": 1,
                "publicationDate": "2025-04-23T21:00:00.000000Z",
                "expirationDate": "2025-05-23T21:00:00.000000Z"
            }
        }
    ]
}
 

Example response (401):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Unauthenticated",
            "status": "401",
            "title": "Unauthenticated"
        }
    ]
}
 

Request      

GET v1/ads

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Query Parameters

page[size]   integer  optional  

The number of Ads per page. Default is 10.
Example: 3

page[number]   integer  optional  

The page number to retrieve.
Example: 6

Body Parameters

sort   string  optional  

Comma separated sorting attributes.
Plus-Auto Marketplace API allows Ads sorting by the following fields:

  • id,
  • status,
  • saleType,
  • priceType,
  • seller,
  • rollingKm,
  • expirationDate,
  • publicationDate,
  • createdAt.

By default direction is ascending but if you'd like to sort descending you have to add "-" before filter.
Example: "rollingKm,-publicationDate" filters by rollingKm ascending and by publicationDate descending.

filter[status]   integer  optional  

Filter Ads by status: 0 = Deactivated Ads, 1 = Active Ads. Accepts single integer value only.
Example: 0

filter[saleType]   string  optional  

Filter Ads by sale type: 0 = On order, 1 = In stock, 2 = Brokerage. Accepts multiple integer values separated by comma.
Example: filter[saleType]=1,2

filter[priceType]   integer  optional  

Filter Ads by priceType: 0 = Net, 1 = Gross. Accepts single integer value only.
Example: 0

filter[seller]   string  optional  

Filter Ads by seller. Accepts only one string value (seller).
Example: filter[seller]=razvan-casian

filter[renewal]   integer  optional  

Filter Ads by automatic renewal status: 0 = Manual renewal, 1 = Automatic renewal. Accepts single value only.
Example: 0

filter[expirationDate]   dates  optional  

Filter Ads by expiration date. Accepts only two (start, end) valid dates in format YYYY-MM-DD.
Example: filter[expirationDate]=2025-04-25,2025-06-04

filter[publicationDate]   dates  optional  

Filter Ads by publication date. Accepts only two (start, end) valid dates in format YYYY-MM-DD.
Example: filter[publicationDate]=2025-01-15,2025-03-18

filter[createdAt]   dates  optional  

Filter Ads by creation date. Accepts exac two (start, end) valid dates in format YYYY-MM-DD.
Example: filter[createdAt]=2025-05-25

Show

requires authentication

Retrieve Ad full details. By default, this endpoint returns all Ad fields but no related resources. Use the include query parameter to load related resources.

Note: Possible related resources to include are: class, category, maker, model, parameters, features, seller, location, facilities, exchangeRule

Example: v1/ads/{adId}?include=class,category,maker,model,parameters,features,seller,location

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/ads/78350?include=class%2Ccategory%2Cmaker%2Cmodel%2Cparameters%2Cfeatures%2Clocation" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/78350"
);

const params = {
    "include": "class,category,maker,model,parameters,features,location",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
        'query' => [
            'include' => 'class,category,maker,model,parameters,features,location',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/78350'
params = {
  'include': 'class,category,maker,model,parameters,features,location',
}
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": {
        "type": "ads",
        "id": 78345,
        "attributes": {
            "saleType": 1,
            "title": "Test API 1",
            "price": "55660.00",
            "priceType": 1,
            "renewal": true,
            "views": 0,
            "publicationDate": "2025-04-23T21:00:00.000000Z",
            "expirationDate": "2025-05-24T20:59:59.000000Z",
            "description": "Test API 1",
            "showVin": true,
            "status": 1,
            "exchangeRate": 4.95,
            "variant": "GT Line",
            "plugin": true,
            "capacity": 2000,
            "power": 250,
            "manufactureYear": 2015,
            "firstRegistration": "06.2023",
            "rollingKm": 45300,
            "vin": "1FVAF3CV84DM31820",
            "isImported": true,
            "ownWeight": 1520,
            "maxWeight": 2100,
            "seats": 5,
            "axles": 2,
            "numberOfBunks": 2,
            "loadCapacity": 1500,
            "length": 4.5,
            "videoUrl": "https://www.youtube.com/watch?v=abc1234dummy",
            "createdAt": "2025-04-24T10:20:36.000000Z"
        },
        "relationships": {
            "class": {
                "data": {
                    "type": "classes",
                    "id": "car"
                }
            },
            "category": {
                "data": {
                    "type": "categories",
                    "id": "offroad"
                }
            },
            "maker": {
                "data": {
                    "type": "makers",
                    "id": "abarth"
                }
            },
            "model": {
                "data": {
                    "type": "models",
                    "id": "andere"
                }
            },
            "parameters": {
                "data": [
                    {
                        "type": "parameters",
                        "id": "condition",
                        "values": [
                            "used"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "door-count",
                        "values": [
                            "two_or_three"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "speed-control",
                        "values": [
                            "cruise_control"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "parking-assistants",
                        "values": [
                            "front_sensors",
                            "rear_sensors",
                            "rear_view_cam"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "interior-type",
                        "values": [
                            "leather"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "airbag",
                        "values": [
                            "front_and_side_and_more_airbags"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "emission-class",
                        "values": [
                            "euro6d"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "interior-color",
                        "values": [
                            "black"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "climatisation",
                        "values": [
                            "automatic_climatisation_2_zones"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "fuel",
                        "values": [
                            "hybrid_diesel"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "gearbox",
                        "values": [
                            "automatic_gear"
                        ]
                    },
                    {
                        "type": "parameters",
                        "id": "exterior-color",
                        "values": [
                            "black"
                        ]
                    }
                ]
            },
            "features": {
                "data": {
                    "type": "features",
                    "ids": [
                        "ALL_SEASON_TIRES",
                        "CENTRAL_LOCKING",
                        "ISOFIX",
                        "PASSENGER_SEAT_ISOFIX_POINT",
                        "AMBIENT_LIGHTING",
                        "FULL_SERVICE_HISTORY"
                    ]
                }
            },
            "location": {
                "data": {
                    "type": "locations",
                    "id": 84
                }
            }
        }
    }
}
 

Example response (401):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Invalid type for field ad. Expected integer, but received string",
            "source": {
                "parameter": "adId"
            },
            "status": "400"
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Request      

GET v1/ads/{adId}

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to retrieve. Example: 78350

Query Parameters

include   string  optional  

Comma-separated list of relationships to include.
Example: class,category,maker,model,parameters,features,location

Create

requires authentication

Creates a new Ad record along with its associated vehicle data, relationships, and details.

Important: The list of parameters and features depends on the vehicle class. Please consult:

Request Attributes

Parameter Type Required/Optional Description
saleType int Required Sale type (e.g., 0 = On order, 1 = In stock, 2 = Brokerage)
title string Required Ad title, max. 60 characters
price number Required Ad price, no decimals
priceType int Required Price type (e.g., 0 = Net, 1 = Gross)
renewal boolean Optional (defaults to true if not provided) Renewal flag
description string Optional Ad description, max. 100000 characters
showVin boolean Required Flag to display VIN in the Marketplace
variant string Optional Vehicle model; required when the vehicle class is not "Car", optional otherwise, max. 20 characters
plugin boolean Optional Plugin flag indicating the vehicle is plugin type
capacity number Required Engine capacity in cm3
power number Required Engine power in horse power (hp)
manufactureYear int Required Year of manufacture
firstRegistration string (date m.Y) Required First registration date, month.year format
rollingKm int Required Mileage in km. For new vehicles max. accepted value is 50 km.
vin string Conditionally Required (if saleType is 1 or 2) Vehicle Identification Number (VIN)
exchangeRate number Conditionally Required (if exchangeRule customRate is true) Currency exchange rate EUR-RON used to convert price in RON, required only when exchangeRule customRate is true
isImported boolean Required Vehicle imported status flag (e.g., 0 = NO, 1 = YES)
ownWeight number Optional Vehicle's own weight in kg
maxWeight number Optional Maximum weight (vehicle plus load) in kg
seats int Optional Number of seats
axles int Optional Number of axles
numberOfBunks int Optional Number of bunks
loadCapacity number Optional Load capacity in kg
length int Optional Vehicle length in milimeters
videoUrl string Optional Video URL (YouTube or Vimeo accepted)

Ad Relationships

Parameter Type Required/Optional Description
class object Required Vehicle class id
category object Required Vehicle category id
maker object Required Vehicle maker id
model object Conditionally Required (if vehicle class is "Car") Vehicle model id (if not provided, use the variant field for non-Car classes)
parameters array of objects Required Vehicke parameters; each object must include a type ("parameters"), an id, and an array with values
features array of objects Optional Vehicle features
facilities array of objects Optional Dealer Facilities ids provided for the Ad
location object Required Dealer location id associated to the Ad
exchangeRule object Required Exchange rule id (criteria used for exchange rates)

Example Full Request Body

{
  "data": {
    "type": "ads",
    "attributes": {
      "saleType": 1,
      "title": "Exclusive Ford Fusion Offer",
      "price": 37999,
      "priceType": 1,
      "renewal": false,
      "description": "Ad published via Plus-Auto Marketplace API",
      "showVin": true,
      "plugin": true,
      "capacity": 2000,
      "power": 180,
      "manufactureYear": 2021,
      "firstRegistration": "08.2021",
      "rollingKm": 45300,
      "vin": "2FTRX18L4XCA01234",
      "exchangeRate": 4.99,
      "isImported": true,
      "ownWeight": 1600,
      "maxWeight": 2200,
      "seats": 5,
      "axles": 2,
      "numberOfBunks": null,
      "loadCapacity": 500,
      "length": 4400,
      "videoUrl": "https://youtube.com/video/38mjdogdmklp2"
    },
    "relationships": {
      "class": {
        "data": {
          "type": "classes",
          "id": "car"
        }
      },
      "category": {
        "data": {
          "type": "categories",
          "id": "estatecar"
        }
      },
      "maker": {
        "data": {
          "type": "makers",
          "id": "ford"
        }
      },
      "model": {
        "data": {
          "type": "models",
          "id": "fusion"
        }
      },
      "parameters": {
        "data": [
          {
            "type": "parameters",
            "id": "condition",
            "values": ["used"]
          },
          {
            "type": "parameters",
            "id": "door-count",
            "values": ["four"]
          },
          {
            "type": "parameters",
            "id": "speed-control",
            "values": ["cruise_control"]
          },
          {
            "type": "parameters",
            "id": "parking-assistants",
            "values": ["front_sensors","rear_sensors"]
          },
          {
            "type": "parameters",
            "id": "interior-type",
            "values": ["leather"]
          },
          {
            "type": "parameters",
            "id": "airbag",
            "values": ["front_side_airbags"]
          },
          {
            "type": "parameters",
            "id": "emission-class",
            "values": ["euro6"]
          },
          {
            "type": "parameters",
            "id": "interior-color",
            "values": ["black"]
          },
          {
            "type": "parameters",
            "id": "climatisation",
            "values": ["automatic"]
          },
          {
            "type": "parameters",
            "id": "fuel",
            "values": ["hybrid_diesel"]
          },
          {
            "type": "parameters",
            "id": "gearbox",
            "values": ["automatic"]
          },
          {
            "type": "parameters",
            "id": "exterior-color",
            "values": ["red"]
          }
        ]
      },
      "features": {
        "data": {
          "type": "features",
          "ids": [
            "LED_HEADLIGHTS",
            "KEYLESS_ENTRY",
            "PARKING_SENSORS",
            "CRUISE_CONTROL",
            "BLUETOOTH_CONNECTIVITY",
            "REAR_CAMERA"
          ]
        }
      },
       "seller": {
         "data": {
           "type": "sellers",
           "id": "razvan-casian"
         }
       },
      "location": {
        "data": {
          "type": "locations",
          "id": 10
        }
      },
      "facilities": {
         "data": {
           "type": "facilities",
           "ids": [204, 205]
         }
       },
      "exchangeRule": {
        "data": {
          "type": "exchangeRules",
          "id": 4
        }
      }
    }
  }
}
Example request:
curl --request POST \
    "https://api.plus-auto.ro/v1/ads" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json" \
    --data "{
    \"saleType\": 1,
    \"title\": \"\\\"Audi A6 Premium Red\\\".\",
    \"priceType\": 1,
    \"description\": \"\\\"A powerful Red Audi A6 in excellent condition.\\\"\",
    \"showVin\": true,
    \"variant\": \"\\\"Streetfighter V4 Lamborghini\\\" for a Ducati motorbike.\",
    \"plugin\": true,
    \"capacity\": 2000,
    \"power\": 250,
    \"manufactureYear\": 2023,
    \"firstRegistration\": \"\\\"06.2023\\\".\",
    \"rollingKm\": 45300,
    \"vin\": \"\\\"1FVAF3CV84DM31820\\\".\",
    \"exchangeRate\": 4.99,
    \"isImported\": true,
    \"ownWeight\": 2145,
    \"maxWeight\": 2800,
    \"seats\": 4,
    \"axles\": 2,
    \"numberOfBunks\": 2,
    \"loadCapacity\": 500,
    \"length\": 3500,
    \"videoUrl\": \"\\\"https:\\/\\/www.youtube.com\\/embed\\/tuvMZsH7sKU\\\".\",
    \"class\": \"{\\\"type\\\": \\\"classes\\\", \\\"id\\\": \\\"Car\\\"}.\",
    \"category\": \"{\\\"type\\\": \\\"categories\\\", \\\"id\\\": \\\"sport\\\"}.\",
    \"maker\": \"{\\\"type\\\": \\\"makers\\\", \\\"id\\\": \\\"mercedes-benz\\\"}.\",
    \"model\": \"{\\\"type\\\": \\\"models\\\", \\\"id\\\": \\\"GLC_200\\\"}.\",
    \"parameters\": \"[\\n   {\\n     \\\"type\\\": \\\"parameters\\\",\\n     \\\"id\\\": \\\"fuel\\\",\\n     \\\"values\\\": [\\\"hybrid_diesel\\\"]\\n   },\\n   {\\n     \\\"type\\\": \\\"parameters\\\",\\n     \\\"id\\\": \\\"airbag\\\",\\n     \\\"values\\\": [\\\"front_and_side\\\"]\\n   }\\n]\",
    \"features\": \"{\\n     \\\"type\\\": \\\"features\\\",\\n     \\\"ids\\\": [\\n       \\\"ALL_SEASON_TIRES\\\",\\n       \\\"CENTRAL_LOCKING\\\",\\n       \\\"ISOFIX\\\"\\n     ]\\n}\",
    \"sellers\": 0,
    \"facilities\": \"[{\\\"type\\\": \\\"facilities\\\", \\\"ids\\\": [2, 5]}].\",
    \"location\": \"{\\\"type\\\": \\\"locations\\\", \\\"id\\\": \\\"5\\\"}.\",
    \"exchangeRule\": \"{\\\"type\\\": \\\"exchange-rules\\\", \\\"id\\\": \\\"4\\\"}.\"
}"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

let body = {
    "saleType": 1,
    "title": "\"Audi A6 Premium Red\".",
    "priceType": 1,
    "description": "\"A powerful Red Audi A6 in excellent condition.\"",
    "showVin": true,
    "variant": "\"Streetfighter V4 Lamborghini\" for a Ducati motorbike.",
    "plugin": true,
    "capacity": 2000,
    "power": 250,
    "manufactureYear": 2023,
    "firstRegistration": "\"06.2023\".",
    "rollingKm": 45300,
    "vin": "\"1FVAF3CV84DM31820\".",
    "exchangeRate": 4.99,
    "isImported": true,
    "ownWeight": 2145,
    "maxWeight": 2800,
    "seats": 4,
    "axles": 2,
    "numberOfBunks": 2,
    "loadCapacity": 500,
    "length": 3500,
    "videoUrl": "\"https:\/\/www.youtube.com\/embed\/tuvMZsH7sKU\".",
    "class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
    "category": "{\"type\": \"categories\", \"id\": \"sport\"}.",
    "maker": "{\"type\": \"makers\", \"id\": \"mercedes-benz\"}.",
    "model": "{\"type\": \"models\", \"id\": \"GLC_200\"}.",
    "parameters": "[\n   {\n     \"type\": \"parameters\",\n     \"id\": \"fuel\",\n     \"values\": [\"hybrid_diesel\"]\n   },\n   {\n     \"type\": \"parameters\",\n     \"id\": \"airbag\",\n     \"values\": [\"front_and_side\"]\n   }\n]",
    "features": "{\n     \"type\": \"features\",\n     \"ids\": [\n       \"ALL_SEASON_TIRES\",\n       \"CENTRAL_LOCKING\",\n       \"ISOFIX\"\n     ]\n}",
    "sellers": 0,
    "facilities": "[{\"type\": \"facilities\", \"ids\": [2, 5]}].",
    "location": "{\"type\": \"locations\", \"id\": \"5\"}.",
    "exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"4\"}."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
        'json' => [
            'saleType' => 1,
            'title' => '"Audi A6 Premium Red".',
            'priceType' => 1,
            'description' => '"A powerful Red Audi A6 in excellent condition."',
            'showVin' => true,
            'variant' => '"Streetfighter V4 Lamborghini" for a Ducati motorbike.',
            'plugin' => true,
            'capacity' => 2000.0,
            'power' => 250.0,
            'manufactureYear' => 2023,
            'firstRegistration' => '"06.2023".',
            'rollingKm' => 45300,
            'vin' => '"1FVAF3CV84DM31820".',
            'exchangeRate' => 4.99,
            'isImported' => true,
            'ownWeight' => 2145.0,
            'maxWeight' => 2800.0,
            'seats' => 4,
            'axles' => 2,
            'numberOfBunks' => 2,
            'loadCapacity' => 500.0,
            'length' => 3500.0,
            'videoUrl' => '"https://www.youtube.com/embed/tuvMZsH7sKU".',
            'class' => '{"type": "classes", "id": "Car"}.',
            'category' => '{"type": "categories", "id": "sport"}.',
            'maker' => '{"type": "makers", "id": "mercedes-benz"}.',
            'model' => '{"type": "models", "id": "GLC_200"}.',
            'parameters' => '['."\n"
                .'   {'."\n"
                .'     "type": "parameters",'."\n"
                .'     "id": "fuel",'."\n"
                .'     "values": ["hybrid_diesel"]'."\n"
                .'   },'."\n"
                .'   {'."\n"
                .'     "type": "parameters",'."\n"
                .'     "id": "airbag",'."\n"
                .'     "values": ["front_and_side"]'."\n"
                .'   }'."\n"
                .']',
            'features' => '{'."\n"
                .'     "type": "features",'."\n"
                .'     "ids": ['."\n"
                .'       "ALL_SEASON_TIRES",'."\n"
                .'       "CENTRAL_LOCKING",'."\n"
                .'       "ISOFIX"'."\n"
                .'     ]'."\n"
                .'}',
            'sellers' => 0,
            'facilities' => '[{"type": "facilities", "ids": [2, 5]}].',
            'location' => '{"type": "locations", "id": "5"}.',
            'exchangeRule' => '{"type": "exchange-rules", "id": "4"}.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads'
payload = {
    "saleType": 1,
    "title": "\"Audi A6 Premium Red\".",
    "priceType": 1,
    "description": "\"A powerful Red Audi A6 in excellent condition.\"",
    "showVin": true,
    "variant": "\"Streetfighter V4 Lamborghini\" for a Ducati motorbike.",
    "plugin": true,
    "capacity": 2000,
    "power": 250,
    "manufactureYear": 2023,
    "firstRegistration": "\"06.2023\".",
    "rollingKm": 45300,
    "vin": "\"1FVAF3CV84DM31820\".",
    "exchangeRate": 4.99,
    "isImported": true,
    "ownWeight": 2145,
    "maxWeight": 2800,
    "seats": 4,
    "axles": 2,
    "numberOfBunks": 2,
    "loadCapacity": 500,
    "length": 3500,
    "videoUrl": "\"https:\/\/www.youtube.com\/embed\/tuvMZsH7sKU\".",
    "class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
    "category": "{\"type\": \"categories\", \"id\": \"sport\"}.",
    "maker": "{\"type\": \"makers\", \"id\": \"mercedes-benz\"}.",
    "model": "{\"type\": \"models\", \"id\": \"GLC_200\"}.",
    "parameters": "[\n   {\n     \"type\": \"parameters\",\n     \"id\": \"fuel\",\n     \"values\": [\"hybrid_diesel\"]\n   },\n   {\n     \"type\": \"parameters\",\n     \"id\": \"airbag\",\n     \"values\": [\"front_and_side\"]\n   }\n]",
    "features": "{\n     \"type\": \"features\",\n     \"ids\": [\n       \"ALL_SEASON_TIRES\",\n       \"CENTRAL_LOCKING\",\n       \"ISOFIX\"\n     ]\n}",
    "sellers": 0,
    "facilities": "[{\"type\": \"facilities\", \"ids\": [2, 5]}].",
    "location": "{\"type\": \"locations\", \"id\": \"5\"}.",
    "exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"4\"}."
}
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "Ad successfully created with id: 78313"
    },
    "data": {
        "adId": 78313
    }
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (422):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The is imported field must be true or false.",
            "status": "422",
            "title": "Validation Error"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Missing mandatory class relationship",
            "status": "500",
            "title": "Internal Server Error"
        }
    ]
}
 

Request      

POST v1/ads

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Body Parameters

saleType   integer   

Sale type. Accepted values are:

  • 0: On order
  • 1: In stock
  • 2: Brokerage
    Example: 1
title   string   

Ad title, max. 60 characters – The Ad title that will be shown on the Plus-Auto Marketplace.
Example: "Audi A6 Premium Red".

priceType   integer   

Price type. Accepted values:

  • 0: Net
  • 1: Gross
    Example: 1
description   string  optional  

Ad description, max. 100000 characters – Provide descriptive details about the Ad.
Example: "A powerful Red Audi A6 in excellent condition."

showVin   boolean   

Display VIN – Set to true if the VIN series should be visible on Marketplace; false otherwise.
Example: true

variant   string  optional  

Vehicle model, max. 20 characters – Required if the vehicle class is not "Car" and you need to specify a model/variant.
Example: "Streetfighter V4 Lamborghini" for a Ducati motorbike.

plugin   boolean  optional  

Plugin flag – Indicates if the vehicle is of plugin type (in combination with hybrid fuel types).
Example: true

capacity   number   

Engine capacity – The capacity of the vehicle's engine in cm3.
Example: 2000

power   number   

Engine power – The power of the engine in hp (horsepower).
Example: 250

manufactureYear   integer   

Manufacture year – The year the vehicle was built.
Example: 2023

firstRegistration   string   

First registration date in format "m.Y" – The month and year when the vehicle was first registered.
Example: "06.2023".

rollingKm   integer   

Kilometers driven – The vehicle mileage in km. For new vehicles max. accepted value is 50 km. Note: Please see max. accepted values per class as per Terms & Conditions https://plus-auto.ro/termeni-si-conditii-dealer-profesionist/
Example: 45300

vin   string   

if saleType is 1 or 2 VIN – The Vehicle Identification Number, max. 17 characters. Required if the sale type is 1 (In stock) or 2 (Brokerage).
Example: "1FVAF3CV84DM31820".

exchangeRate   number   

if exchangeRule customRate is true Curency EUR-RON exchange rate – Used to convert Ad price in EUR to RON for operations where price in RON is required.
Example: 4.99

isImported   boolean   

Import status – Set to true if the vehicle is imported; false otherwise.
Example: true

ownWeight   number  optional  

Own weight – The weight of the vehicle itself in kg.
Example: 2145

maxWeight   number  optional  

Maximum weight – The maximum allowable weight, including vehicle plus load, in kg.
Example: 2800

seats   integer  optional  

Number of seats – The total vehicle seating capacity.
Example: 4

axles   integer  optional  

Number of axles – The total number of axles the vehicle has, if applicable.
Example: 2

numberOfBunks   integer  optional  

Number of bunks – The number of bunks (beds) available, if applicable.
Example: 2

loadCapacity   number  optional  

Load capacity – The maximum load the vehicle is designed to carry in kg, if applicable.
Example: 500

length   number  optional  

Vehicle length – The length of the vehicle in meters.
Example: 3500

videoUrl   string  optional  

Video URL – A URL linking to a video showcasing the vehicle.
Example: "https://www.youtube.com/embed/tuvMZsH7sKU".

class   object/relation   

Vehicle class – Defines the vehicle class (e.g., Car, Motorbike, etc.).
Example: {"type": "classes", "id": "Car"}.

category   object/relation   

Vehicle category – Defines the vehicle category (e.g., sedan, offroad, sport).
Example: {"type": "categories", "id": "sport"}.

maker   object/relation   

Vehicle maker – The manufacturer/brand of the vehicle.
Example: {"type": "makers", "id": "mercedes-benz"}.

model   object/relation   

when the vehicle class is Car Otherwise, use the "variant" field to specify the vehicle model.
Example: {"type": "models", "id": "GLC_200"}.

parameters   object/relations   

List of parameters for the vehicle. Each item is an object with:

  • "type": "parameters",
  • "id" (the parameter key),
  • "values" (an array of possible values for that parameter).
    Example: [ { "type": "parameters", "id": "fuel", "values": ["hybrid_diesel"] }, { "type": "parameters", "id": "airbag", "values": ["front_and_side"] } ]
features   object/relations  optional  

Additional features. Provide an object containing:

  • "type": "features"
  • "ids": an array of feature IDs
    Example: { "type": "features", "ids": [ "ALL_SEASON_TIRES", "CENTRAL_LOCKING", "ISOFIX" ] }
sellers   integer   

Ad associated seller. Please use one of the dealer's sellers.
Example: 0

facilities   object/relations  optional  

Dealer facilities provided for this Ad. Each item is an object with "type": "facilities" and an "id".
Example: [{"type": "facilities", "ids": [2, 5]}].

location   object/relation   

Location – Specifies the dealer location associated with the Ad.
Example: {"type": "locations", "id": "5"}.

exchangeRule   object/relation   

Exchange rule – Determines the exchange rate criteria for the Ad.
Example: {"type": "exchange-rules", "id": "4"}.

Edit

requires authentication

Edits/Updates an existing Ad record. The request payload for updating Ad is identical to that used for creating Ad, excepting the Ad id that is required to identify the Ad to be edited/updated. For full details on the expected parameters and relationships, please refer to the Store Ad endpoint documentation.

Note: The Ad update request includes all parameters defined for Ad creation.

Example request:
curl --request PATCH \
    "https://api.plus-auto.ro/v1/ads/{adId}" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json" \
    --data "{
    \"saleType\": 1,
    \"title\": \"\\\"BMW M3\\\".\",
    \"priceType\": 1,
    \"description\": \"\\\"A powerful BMW M3 in excellent condition, first owner, no accidents.\\\"\",
    \"showVin\": true,
    \"variant\": \"\\\"Express Comfort\\\" for a Renault van.\",
    \"plugin\": true,
    \"capacity\": 2000,
    \"power\": 250,
    \"manufactureYear\": 2023,
    \"firstRegistration\": \"\\\"06.2023\\\".\",
    \"rollingKm\": 45300,
    \"vin\": \"\\\"1FVAF3CV84DM31820\\\".\",
    \"exchangeRate\": 4.99,
    \"isImported\": true,
    \"ownWeight\": 1500,
    \"maxWeight\": 2200,
    \"seats\": 7,
    \"axles\": 2,
    \"numberOfBunks\": 2,
    \"loadCapacity\": 800,
    \"length\": 5000,
    \"videoUrl\": \"\\\"https:\\/\\/www.vimeo.com\\/459msfnkjdfhde\\\".\",
    \"class\": \"{\\\"type\\\": \\\"classes\\\", \\\"id\\\": \\\"Car\\\"}.\",
    \"category\": \"{\\\"type\\\": \\\"categories\\\", \\\"id\\\": \\\"offroad\\\"}.\",
    \"maker\": \"{\\\"type\\\": \\\"makers\\\", \\\"id\\\": \\\"bmw\\\"}.\",
    \"model\": \"{\\\"type\\\": \\\"models\\\", \\\"id\\\": \\\"x6\\\"}.\",
    \"parameters\": \"[\\n  {\\n    \\\"type\\\": \\\"parameters\\\",\\n    \\\"id\\\": \\\"fuel\\\",\\n    \\\"values\\\": [\\\"hybrid_diesel\\\"]\\n  },\\n  {\\n    \\\"type\\\": \\\"parameters\\\",\\n    \\\"id\\\": \\\"airbag\\\",\\n    \\\"values\\\": [\\\"front_and_side\\\"]\\n  }\\n]\",
    \"features\": \"{\\n    \\\"type\\\": \\\"features\\\",\\n    \\\"ids\\\": [\\n      \\\"ALL_SEASON_TIRES\\\",\\n      \\\"CENTRAL_LOCKING\\\",\\n      \\\"ISOFIX\\\"\\n    ]\\n}\",
    \"sellers\": \"[{\\\"type\\\": \\\"sellers\\\", \\\"id\\\": \\\"120\\\"}].\",
    \"facilities\": \"[{\\\"type\\\": \\\"facilities\\\", \\\"id\\\": [7, 20]}].\",
    \"location\": \"{\\\"type\\\": \\\"locations\\\", \\\"id\\\": \\\"5\\\"}.\",
    \"exchangeRule\": \"{\\\"type\\\": \\\"exchange-rules\\\", \\\"id\\\": \\\"5\\\"}.\"
}"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/{adId}"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

let body = {
    "saleType": 1,
    "title": "\"BMW M3\".",
    "priceType": 1,
    "description": "\"A powerful BMW M3 in excellent condition, first owner, no accidents.\"",
    "showVin": true,
    "variant": "\"Express Comfort\" for a Renault van.",
    "plugin": true,
    "capacity": 2000,
    "power": 250,
    "manufactureYear": 2023,
    "firstRegistration": "\"06.2023\".",
    "rollingKm": 45300,
    "vin": "\"1FVAF3CV84DM31820\".",
    "exchangeRate": 4.99,
    "isImported": true,
    "ownWeight": 1500,
    "maxWeight": 2200,
    "seats": 7,
    "axles": 2,
    "numberOfBunks": 2,
    "loadCapacity": 800,
    "length": 5000,
    "videoUrl": "\"https:\/\/www.vimeo.com\/459msfnkjdfhde\".",
    "class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
    "category": "{\"type\": \"categories\", \"id\": \"offroad\"}.",
    "maker": "{\"type\": \"makers\", \"id\": \"bmw\"}.",
    "model": "{\"type\": \"models\", \"id\": \"x6\"}.",
    "parameters": "[\n  {\n    \"type\": \"parameters\",\n    \"id\": \"fuel\",\n    \"values\": [\"hybrid_diesel\"]\n  },\n  {\n    \"type\": \"parameters\",\n    \"id\": \"airbag\",\n    \"values\": [\"front_and_side\"]\n  }\n]",
    "features": "{\n    \"type\": \"features\",\n    \"ids\": [\n      \"ALL_SEASON_TIRES\",\n      \"CENTRAL_LOCKING\",\n      \"ISOFIX\"\n    ]\n}",
    "sellers": "[{\"type\": \"sellers\", \"id\": \"120\"}].",
    "facilities": "[{\"type\": \"facilities\", \"id\": [7, 20]}].",
    "location": "{\"type\": \"locations\", \"id\": \"5\"}.",
    "exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"5\"}."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/{adId}';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
        'json' => [
            'saleType' => 1,
            'title' => '"BMW M3".',
            'priceType' => 1,
            'description' => '"A powerful BMW M3 in excellent condition, first owner, no accidents."',
            'showVin' => true,
            'variant' => '"Express Comfort" for a Renault van.',
            'plugin' => true,
            'capacity' => 2000.0,
            'power' => 250.0,
            'manufactureYear' => 2023,
            'firstRegistration' => '"06.2023".',
            'rollingKm' => 45300,
            'vin' => '"1FVAF3CV84DM31820".',
            'exchangeRate' => 4.99,
            'isImported' => true,
            'ownWeight' => 1500.0,
            'maxWeight' => 2200.0,
            'seats' => 7,
            'axles' => 2,
            'numberOfBunks' => 2,
            'loadCapacity' => 800.0,
            'length' => 5000.0,
            'videoUrl' => '"https://www.vimeo.com/459msfnkjdfhde".',
            'class' => '{"type": "classes", "id": "Car"}.',
            'category' => '{"type": "categories", "id": "offroad"}.',
            'maker' => '{"type": "makers", "id": "bmw"}.',
            'model' => '{"type": "models", "id": "x6"}.',
            'parameters' => '['."\n"
                .'  {'."\n"
                .'    "type": "parameters",'."\n"
                .'    "id": "fuel",'."\n"
                .'    "values": ["hybrid_diesel"]'."\n"
                .'  },'."\n"
                .'  {'."\n"
                .'    "type": "parameters",'."\n"
                .'    "id": "airbag",'."\n"
                .'    "values": ["front_and_side"]'."\n"
                .'  }'."\n"
                .']',
            'features' => '{'."\n"
                .'    "type": "features",'."\n"
                .'    "ids": ['."\n"
                .'      "ALL_SEASON_TIRES",'."\n"
                .'      "CENTRAL_LOCKING",'."\n"
                .'      "ISOFIX"'."\n"
                .'    ]'."\n"
                .'}',
            'sellers' => '[{"type": "sellers", "id": "120"}].',
            'facilities' => '[{"type": "facilities", "id": [7, 20]}].',
            'location' => '{"type": "locations", "id": "5"}.',
            'exchangeRule' => '{"type": "exchange-rules", "id": "5"}.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/{adId}'
payload = {
    "saleType": 1,
    "title": "\"BMW M3\".",
    "priceType": 1,
    "description": "\"A powerful BMW M3 in excellent condition, first owner, no accidents.\"",
    "showVin": true,
    "variant": "\"Express Comfort\" for a Renault van.",
    "plugin": true,
    "capacity": 2000,
    "power": 250,
    "manufactureYear": 2023,
    "firstRegistration": "\"06.2023\".",
    "rollingKm": 45300,
    "vin": "\"1FVAF3CV84DM31820\".",
    "exchangeRate": 4.99,
    "isImported": true,
    "ownWeight": 1500,
    "maxWeight": 2200,
    "seats": 7,
    "axles": 2,
    "numberOfBunks": 2,
    "loadCapacity": 800,
    "length": 5000,
    "videoUrl": "\"https:\/\/www.vimeo.com\/459msfnkjdfhde\".",
    "class": "{\"type\": \"classes\", \"id\": \"Car\"}.",
    "category": "{\"type\": \"categories\", \"id\": \"offroad\"}.",
    "maker": "{\"type\": \"makers\", \"id\": \"bmw\"}.",
    "model": "{\"type\": \"models\", \"id\": \"x6\"}.",
    "parameters": "[\n  {\n    \"type\": \"parameters\",\n    \"id\": \"fuel\",\n    \"values\": [\"hybrid_diesel\"]\n  },\n  {\n    \"type\": \"parameters\",\n    \"id\": \"airbag\",\n    \"values\": [\"front_and_side\"]\n  }\n]",
    "features": "{\n    \"type\": \"features\",\n    \"ids\": [\n      \"ALL_SEASON_TIRES\",\n      \"CENTRAL_LOCKING\",\n      \"ISOFIX\"\n    ]\n}",
    "sellers": "[{\"type\": \"sellers\", \"id\": \"120\"}].",
    "facilities": "[{\"type\": \"facilities\", \"id\": [7, 20]}].",
    "location": "{\"type\": \"locations\", \"id\": \"5\"}.",
    "exchangeRule": "{\"type\": \"exchange-rules\", \"id\": \"5\"}."
}
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "Ad with id: 78313 was successfully updated."
    },
    "data": {
        "adId": 78313
    }
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (422):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The is imported field must be true or false.",
            "status": "422",
            "title": "Validation Error"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Missing mandatory class relationship",
            "status": "500",
            "title": "Internal Server Error"
        }
    ]
}
 

Request      

PATCH v1/ads/{adId}

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Body Parameters

saleType   integer   

Sale type. Accepted values are:

  • 0: On order
  • 1: In stock
  • 2: Brokerage
    Example: 1
title   string   

Ad title, max. 60 characters – The title that will appear on the Ad.
Example: "BMW M3".

priceType   integer   

Price type. Accepted values:

  • 0: Net
  • 1: Gross
    Example: 1
description   string  optional  

Ad description, max. 100000 characters – Provide descriptive details about the Ad.
Example: "A powerful BMW M3 in excellent condition, first owner, no accidents."

showVin   boolean   

Display VIN – Set to true if the VIN should be visible; false otherwise.
Example: true

variant   string  optional  

Vehicle model, max. 20 characters – Required if the vehicle class is not "Car" and you need to specify a model/variant.
Example: "Express Comfort" for a Renault van.

plugin   boolean  optional  

Plugin flag – Indicates if the vehicle is of plugin type (in combination with hybrid fuel types).
Example: true

capacity   number   

Engine capacity – The capacity of the vehicle's engine in cm3.
Example: 2000

power   number   

Engine power – The power of the engine in horsepower (hp).
Example: 250

manufactureYear   integer   

Manufacture year – The year the vehicle was built.
Example: 2023

firstRegistration   string   

First registration date in format "m.Y" – The month and year when the vehicle was first registered.
Example: "06.2023".

rollingKm   integer   

Kilometers driven – The total distance the vehicle has been driven. For new vehicles max. accepted value is 50 km. Note: Please see max. accepted values per class as per Terms & Conditions https://plus-auto.ro/termeni-si-conditii-dealer-profesionist/
Example: 45300

vin   string   

if saleType is 1 or 2, fixed 17 characters length VIN – The Vehicle Identification Number. Required if the sale type is 1 (In stock) or 2 (Brokerage).
Example: "1FVAF3CV84DM31820".

exchangeRate   number   

if exchangeRule customRate is true Curency EUR-RON exchange rate – Used to convert Ad price in EUR to RON for operations where price in RON is required.
Example: 4.99

isImported   boolean   

Import status – Set to true if the vehicle is imported; false otherwise.
Example: true

ownWeight   number  optional  

Own weight – The weight of the vehicle itself in kg.
Example: 1500

maxWeight   number  optional  

Maximum weight – The maximum allowable weight, including vehicle plus load in kg.
Example: 2200

seats   integer  optional  

Number of seats – The total seating capacity of the vehicle.
Example: 7

axles   integer  optional  

Number of axles – The total count of axles the vehicle has.
Example: 2

numberOfBunks   integer  optional  

Number of bunks – The number of bunks (beds) available, if applicable.
Example: 2

loadCapacity   number  optional  

Load capacity – The maximum load the vehicle is designed to carry in kg.
Example: 800

length   number  optional  

Vehicle length – The length of the vehicle in millimeters.
Example: 5000

videoUrl   string  optional  

Video URL – A URL linking to a video showcasing the vehicle.
Example: "https://www.vimeo.com/459msfnkjdfhde".

class   object/relation   

Vehicle class – Specifies the type of vehicle (e.g., Car, Truck, etc.).
Example: {"type": "classes", "id": "Car"}.

category   object/relation   

Vehicle category – Defines the category of the vehicle (e.g., sedan, off-road).
Example: {"type": "categories", "id": "offroad"}.

maker   object/relation   

Vehicle maker – The manufacturer or brand of the vehicle.
Example: {"type": "makers", "id": "bmw"}.

model   object/relation   

when the vehicle class is "Car" Otherwise, use the "variant" field to specify the vehicle model.
Example: {"type": "models", "id": "x6"}.

parameters   object/relations   

List of parameters for the vehicle. Each item is an object with:

  • "type": "parameters",
  • "id" (the parameter key),
  • "values" (an array of possible values for that parameter).
    Example: [ { "type": "parameters", "id": "fuel", "values": ["hybrid_diesel"] }, { "type": "parameters", "id": "airbag", "values": ["front_and_side"] } ]
features   object/relations  optional  

Additional features. Provide an object containing:

  • "type": "features"
  • "ids": an array of feature IDs
    Example: { "type": "features", "ids": [ "ALL_SEASON_TIRES", "CENTRAL_LOCKING", "ISOFIX" ] }
sellers   object/relation   

Ad associated seller. Please use one of the dealer's sellers.
Example: [{"type": "sellers", "id": "120"}].

facilities   object/relations  optional  

Facilities associated with the vehicle or dealer. Each item is an object with "type": "facilities" and an "id".
Example: [{"type": "facilities", "id": [7, 20]}].

location   object/relation   

Location – Specifies the geographical location associated with the Ad.
Example: {"type": "locations", "id": "5"}.

exchangeRule   object/relation   

Exchange rule – Determines the exchange rate criteria for the Ad.
Example: {"type": "exchange-rules", "id": "5"}.

Delete

requires authentication

Removes Ad from dealer's account.

Preconditions:

Example request:
curl --request DELETE \
    "https://api.plus-auto.ro/v1/ads/78350" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/78350"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/78350'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The ad has been deleted."
    },
    "data": {}
}
 

Example response (400):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Invalid type for field ad. Expected integer, but received string",
            "source": {
                "parameter": "adId"
            },
            "status": "400"
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Operation could not be done",
            "meta": {
                "reason": "Your ad expires on 2025-04-30. You can manually extend it in 16 days."
            },
            "status": "500",
            "title": "Operation failed"
        }
    ]
}
 

Request      

DELETE v1/ads/{adId}

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to delete.
Example: 78350

Publish

requires authentication

Publishes an Ad online by setting its status to active, enabling automatic renewal, and establishing its initial validity period by adding 30 days from the date of publication.

Important: This action is available only at the initial publication of the Ad. In order to successfully publish the Ad, all of the following conditions must be met:

Once the Ad is published, it becomes active, visibile in the Marketplace (online) and a validity period of 30 days is applied.

Example request:
curl --request PATCH \
    "https://api.plus-auto.ro/v1/ads/78350/activate" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/78350/activate"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/activate';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/78350/activate'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The ad has been published online."
    }
}
 

Example response (400):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Invalid type for field ad. Expected integer, but received string",
            "source": {
                "parameter": "adId"
            },
            "status": "400"
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Operation could not be done",
            "meta": {
                "reason": "Ad cannot be published because not all required conditions are met: permission is granted and ad status is active. Please verify that you meet these requirements."
            },
            "status": "500",
            "title": "Operation failed"
        }
    ]
}
 

Request      

PATCH v1/ads/{adId}/activate

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to publish.
Example: 78350

Deactivate

requires authentication

Deactivates an active Ad by changing its status to inactive.

When to Use: Use this endpoint to manually deactivate an Ad that is currently active.

Preconditions: Ad can be deactivated if:

Upon success, the Ad's status is updated to inactive, is removed from the Marketplace, and the Ad seller is notified.

Example request:
curl --request PATCH \
    "https://api.plus-auto.ro/v1/ads/78350/deactivate" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/78350/deactivate"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/deactivate';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/78350/deactivate'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The ad has been deactivated (removed from Marketplace)."
    }
}
 

Example response (400):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Invalid type for field ad. Expected integer, but received string",
            "source": {
                "parameter": "adId"
            },
            "status": "400"
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Operation could not be done",
            "meta": {
                "reason": "Ad cannot be deactivated because not all required conditions are met: edit permission is granted and ad status is inactive. Please verify that you meet these requirements."
            },
            "status": "500",
            "title": "Operation failed"
        }
    ]
}
 

Request      

PATCH v1/ads/{adId}/deactivate

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to deactivate.
Example: 78350

Republish

requires authentication

Republish an Ad that was previously published online and it's currently deactivated.

Behavior: Republishing can be done in one of these cases:

The endpoint will republish the Ad by setting its status to Active (online in Marketplace).

When to Use: An Ad is eligible for republishing if:

Additional Checks: The endpoint also verifies that:

Example request:
curl --request PATCH \
    "https://api.plus-auto.ro/v1/ads/78350/republish" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/78350/republish"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/republish';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/78350/republish'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The ad has been republished online."
    }
}
 

Example response (400):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Invalid type for field ad. Expected integer, but received string",
            "source": {
                "parameter": "adId"
            },
            "status": "400"
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Operation could not be done",
            "meta": {
                "reason": "Ad cannot be republished because not all required conditions are met: status is active, the expiration date is 2025-05-12. Please verify that you meet all these conditions."
            },
            "status": "500",
            "title": "Operation failed"
        }
    ]
}
 

Request      

PATCH v1/ads/{adId}/republish

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to republish.
Example: 78350

Extend

requires authentication

Extends Ad validity period by adding 30 days to its current expiration date. Note: This action will deduct credits from the dealer's subscription.

This endpoint performs the following checks before allowing a manual Ad validity period extension:

Manual Extension Eligibility: The Ad can be manually extended if:

Example request:
curl --request PATCH \
    "https://api.plus-auto.ro/v1/ads/78350/extend" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/78350/extend"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/extend';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/78350/extend'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The ad validity has been extended by 30 days."
    }
}
 

Example response (400):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Invalid type for field ad. Expected integer, but received string",
            "source": {
                "parameter": "adId"
            },
            "status": "400"
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Operation could not be done",
            "meta": {
                "reason": "Your ad expires on 2025-04-30. You can manually extend it in 16 days."
            },
            "status": "500",
            "title": "Operation failed"
        }
    ]
}
 

Request      

PATCH v1/ads/{adId}/extend

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to extend.
Example: 78350

Stop AutoRenewal

requires authentication

Stops the automatic Ad renewal so that its validity will no longer be extended automatically.

When to Use: Use this endpoint to disable automatic renewal for an active Ad. This action is useful when the dealer needs to manually manage the Ad’s validity period and visibility in the Marketplace, rather than leaving it to be automatically renewed.

Pre-conditions: The following conditions must be met for the operation to succeed:

Automatic Renewal Eligibility: The Ad can only be auto-extended if:

If the Ad is already set for not automatic renewal, the operation will fail.

Upon success, the automatic renewal flag is set to false.

Example request:
curl --request PATCH \
    "https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/78350/stop-autorenewal'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "Automatic renewal has been stopped. You can now extend the ad validity by using the route for extend ad, which becomes available 3 days before expiration."
    }
}
 

Example response (400):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Invalid type for field ad. Expected integer, but received string",
            "source": {
                "parameter": "adId"
            },
            "status": "400"
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (500):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "Operation could not be done",
            "meta": {
                "reason": "Automatic renewal is already disabled for this ad."
            },
            "status": "500",
            "title": "Operation failed"
        }
    ]
}
 

Request      

PATCH v1/ads/{adId}/stop-autorenewal

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad for which to stop autorenewal.
Example: 78350

Ads Images

Show Ad Images

requires authentication

Returns list of images associated with an Ad. Images are sorted in the order provided/edited by the Dealer.

Preconditions:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/ads/74908/images" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/74908/images"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/74908/images';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/74908/images'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "data": [
        {
            "type": "images",
            "id": "1588821",
            "attributes": {
                "source_id": "IMG001",
                "displayorder": 1,
                "url": "https://plus-auto-test.fra1.cdn.digitaloceanspaces.com/vehicles_images/82956/82956-1588821.webp"
            }
        },
        {
            "type": "images",
            "id": "1588822",
            "attributes": {
                "source_id": "IMG002",
                "displayorder": 2,
                "url": "https://plus-auto-test.fra1.cdn.digitaloceanspaces.com/vehicles_images/82956/82956-1588822.webp"
            }
        },
        {
            "type": "images",
            "id": "1588823",
            "attributes": {
                "source_id": "IMG003",
                "displayorder": 3,
                "url": "https://plus-auto-test.fra1.cdn.digitaloceanspaces.com/vehicles_images/82956/82956-1588823.webp"
            }
        }
    ]
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Request      

GET v1/ads/{adId}/images

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The id of the Ad to retrieve images.
Example: 74908

Upload Ad Image

requires authentication

Uploads an image to the specified Ad. This endpoint validates the incoming image file according to the following rules:

Preconditions:

Example request:
curl --request POST \
    "https://api.plus-auto.ro/v1/ads/579084/images/upload" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json" \
    --data "{
    \"image\": \"Alfa Romeo Tonale 4.jpg\",
    \"source_id\": \"IMG20495\"
}"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/579084/images/upload"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

let body = {
    "image": "Alfa Romeo Tonale 4.jpg",
    "source_id": "IMG20495"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/579084/images/upload';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
        'json' => [
            'image' => 'Alfa Romeo Tonale 4.jpg',
            'source_id' => 'IMG20495',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/579084/images/upload'
payload = {
    "image": "Alfa Romeo Tonale 4.jpg",
    "source_id": "IMG20495"
}
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The image has been uploaded for the ad with id 1234."
    }
}
 

Example response (404):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The requested resource could not be found",
            "meta": {
                "model": "Ad",
                "id": "78185555"
            },
            "status": "404",
            "title": "Not Found"
        }
    ]
}
 

Example response (422):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The image field is required and must be a valid image (jpeg, png, or webp) with a maximum size of 8192 KB and minimum dimensions of 360x270 pixels.",
            "status": "422",
            "title": "Validation Error"
        }
    ]
}
 

Request      

POST v1/ads/{adId}/images/upload

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to upload an image.
Example: 579084

Body Parameters

image   File   

The image file must comply with the above mentioned conditions.
Example: Alfa Romeo Tonale 4.jpg

source_id   string  optional  

optional The image ID at source, max. 30 characters, used to keep tracing images with internal dealer system.
Example: IMG20495

Order Ad Images

requires authentication

Order Ad's images based on the supplied list of image IDs. The request must include an array of image IDs that exactly matches the list of Ad images and are sent in the desired order. If the number of images or the lists do not match, an error will be thrown.
Example: {"imageids": [1588006, 1588007, 1588008, 1588009, 1588010, 1588011, 1588012, 1588013, 1588014]}

Preconditions:

Example request:
curl --request PATCH \
    "https://api.plus-auto.ro/v1/ads/25657/images/order" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/25657/images/order"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/25657/images/order';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/25657/images/order'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The ad images have been successfully ordered."
    }
}
 

Example response (422):


{
    "jsonapi": {
        "version": "1.0"
    },
    "errors": [
        {
            "detail": "The provided image IDs do not match the database image IDs.",
            "status": "422",
            "title": "Validation Error"
        }
    ]
}
 

Request      

PATCH v1/ads/{adId}/images/order

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the Ad to order images for.
Example: 25657

Delete Ad Image

requires authentication

Deletes an Ad image and reorders the remaining images.

Preconditions:

Example request:
curl --request DELETE \
    "https://api.plus-auto.ro/v1/ads/69034/images/56780/delete" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/ads/69034/images/56780/delete"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/ads/69034/images/56780/delete';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/ads/69034/images/56780/delete'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
        "message": "The ad image has been successfully deleted."
    }
}
 

Request      

DELETE v1/ads/{adId}/images/{imageId}/delete

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

adId   integer   

The ID of the ad which owns the image to delete.
Example: 69034

imageId   integer   

The ID of the image to delete.
Example: 56780

Dealer

Locations

requires authentication

Returns list of dealer's locations.

Dealers must configure in the Plus-Auto web interface the list of selling locations. This endpoint returns a paginated list of pre-defined dealer's locations.

Optional Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/dealer/locations" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/dealer/locations"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/dealer/locations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/dealer/locations'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 1,
        "perPage": 10,
        "to": 10,
        "total": 10
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/dealer/locations?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/dealer/locations?page%5Bnumber%5D=1&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "locations",
            "id": 5,
            "attributes": {
                "name": "București",
                "address": "Str. Mihai Eminescu 10",
                "latitude": "44.4328",
                "longitude": "26.1025",
                "country_code": "RO",
                "region_code": "B",
                "locality": "Sector 1"
            }
        },
        {
            "type": "locations",
            "id": 6,
            "attributes": {
                "name": "Cluj-Napoca",
                "address": "Str. Avram Iancu 23",
                "latitude": "46.7712",
                "longitude": "23.6236",
                "country_code": "RO",
                "region_code": "CJ",
                "locality": "Cluj-Napoca"
            }
        },
        {
            "type": "locations",
            "id": 7,
            "attributes": {
                "name": "Timișoara",
                "address": "Bulevardul Libertății 45",
                "latitude": "45.7489",
                "longitude": "21.2087",
                "country_code": "RO",
                "region_code": "TM",
                "locality": "Timișoara"
            }
        },
        {
            "type": "locations",
            "id": 8,
            "attributes": {
                "name": "Constanța",
                "address": "Str. Marin Iancu 5",
                "latitude": "44.1598",
                "longitude": "28.6348",
                "country_code": "RO",
                "region_code": "CT",
                "locality": "Constanța"
            }
        },
        {
            "type": "locations",
            "id": 9,
            "attributes": {
                "name": "Iași",
                "address": "Str. Copou 15",
                "latitude": "47.1585",
                "longitude": "27.6014",
                "country_code": "RO",
                "region_code": "IS",
                "locality": "Iași"
            }
        },
        {
            "type": "locations",
            "id": 10,
            "attributes": {
                "name": "Brașov",
                "address": "Bulevardul Eroilor 30",
                "latitude": "45.6579",
                "longitude": "25.6012",
                "country_code": "RO",
                "region_code": "BV",
                "locality": "Brașov"
            }
        },
        {
            "type": "locations",
            "id": 11,
            "attributes": {
                "name": "Sibiu",
                "address": "Str. Nicolae Bălcescu 12",
                "latitude": "45.7924",
                "longitude": "24.1515",
                "country_code": "RO",
                "region_code": "SB",
                "locality": "Sibiu"
            }
        },
        {
            "type": "locations",
            "id": 12,
            "attributes": {
                "name": "Oradea",
                "address": "Str. Libertății 8",
                "latitude": "47.0725",
                "longitude": "21.9211",
                "country_code": "RO",
                "region_code": "BH",
                "locality": "Oradea"
            }
        },
        {
            "type": "locations",
            "id": 15,
            "attributes": {
                "name": "Arad",
                "address": "Calea Unirii 6",
                "latitude": "46.1660",
                "longitude": "21.3123",
                "country_code": "RO",
                "region_code": "AR",
                "locality": "Arad"
            }
        },
        {
            "type": "locations",
            "id": 41,
            "attributes": {
                "name": "Ploiești",
                "address": "Str. Unirii 18",
                "latitude": "44.9360",
                "longitude": "26.0360",
                "country_code": "RO",
                "region_code": "PL",
                "locality": "Ploiești"
            }
        }
    ]
}
 

Request      

GET v1/dealer/locations

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Facilities

requires authentication

Returns list of dealer's facilities.

Dealers can optionally configure in the Plus-Auto web interface a set of facilities to be used alongside with their Ads. This endpoint returns a paginated list of defined dealer facilities.

Optional Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/dealer/facilities" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/dealer/facilities"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/dealer/facilities';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/dealer/facilities'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 1,
        "perPage": 10,
        "to": 4,
        "total": 4
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/dealer/facilities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/dealer/facilities?page%5Bnumber%5D=1&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "facilities",
            "id": 2,
            "attributes": {
                "name": "Istoric Verificat",
                "isActive": true
            }
        },
        {
            "type": "facilities",
            "id": 27,
            "attributes": {
                "name": "Garanție 1 an",
                "isActive": true
            }
        },
        {
            "type": "facilities",
            "id": 29,
            "attributes": {
                "name": "Garanție 2 an - dezactivat",
                "isActive": false
            }
        },
        {
            "type": "facilities",
            "id": 31,
            "attributes": {
                "name": "Numere noi",
                "isActive": true
            }
        }
    ]
}
 

Request      

GET v1/dealer/facilities

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Sellers

requires authentication

Display list of dealer's sellers.

Dealers must configure in the Plus-Auto web interface the list of sellers to be used within published Ads. This endpoint returns paginated list of dealer's sellers.

Optional Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/dealer/sellers" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/dealer/sellers"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/dealer/sellers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/dealer/sellers'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 11,
        "perPage": 10,
        "to": 10,
        "total": 102
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/dealer/sellers?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/dealer/sellers?page%5Bnumber%5D=11&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/dealer/sellers?page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "sellers",
            "id": "cristina-popescu",
            "attributes": {
                "name": "CRISTINA POPESCU",
                "email": "cristina.popescu@example.ro",
                "phone": "40712345678",
                "isActive": true
            }
        },
        {
            "type": "sellers",
            "id": "mihai-ionescu",
            "attributes": {
                "name": "MIHAI IONESCU",
                "email": "mihai.ionescu@example.ro",
                "phone": "40798765432",
                "isActive": false
            }
        },
        {
            "type": "sellers",
            "id": "ana-georgescu",
            "attributes": {
                "name": "ANA GEORGESCU",
                "email": "ana.georgescu@example.ro",
                "phone": "40711122233",
                "isActive": false
            }
        },
        {
            "type": "sellers",
            "id": "andrei-dumitrescu",
            "attributes": {
                "name": "ANDREI DUMITRESCU",
                "email": "andrei.dumitrescu@example.ro",
                "phone": "40744455666",
                "isActive": false
            }
        },
        {
            "type": "sellers",
            "id": "elena-marin",
            "attributes": {
                "name": "ELENA MARIN",
                "email": "elena.marin@example.ro",
                "phone": "40755566778",
                "isActive": true
            }
        },
        {
            "type": "sellers",
            "id": "dragos-petrescu",
            "attributes": {
                "name": "DRAGOS PETRESCU",
                "email": "dragos.petrescu@example.ro",
                "phone": "40766677889",
                "isActive": false
            }
        },
        {
            "type": "sellers",
            "id": "ioana-constantin",
            "attributes": {
                "name": "IOANA CONSTANTIN",
                "email": "ioana.constantin@example.ro",
                "phone": "40777788990",
                "isActive": false
            }
        },
        {
            "type": "sellers",
            "id": "david-stoica",
            "attributes": {
                "name": "DAVID STOICA",
                "email": "david.stoica@example.ro",
                "phone": "40788899001",
                "isActive": true
            }
        },
        {
            "type": "sellers",
            "id": "ramona-olteanu",
            "attributes": {
                "name": "RAMONA OLTEANU",
                "email": "ramona.olteanu@example.ro",
                "phone": "40799900112",
                "isActive": false
            }
        },
        {
            "type": "sellers",
            "id": "ion-tudor",
            "attributes": {
                "name": "ION TUDOR",
                "email": "ion.tudor@example.ro",
                "phone": "40700011223",
                "isActive": true
            }
        }
    ]
}
 

Request      

GET v1/dealer/sellers

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Nomenclatures

Classes

requires authentication

Returns list of vehicle classes.

This endpoint returns a paginated list of vehicle classes. The response is localized based on the requested language, default in Romanian.

Note: Vehicle class is a mandatory parameter for all operations with Ads.

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/vehicle/classes" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/vehicle/classes"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/vehicle/classes'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 2,
        "perPage": 10,
        "to": 10,
        "total": 13
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/vehicle/classes?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/vehicle/classes?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/vehicle/classes?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "classes",
            "id": "bus",
            "attributes": {
                "name": "Autobuze"
            }
        },
        {
            "type": "classes",
            "id": "car",
            "attributes": {
                "name": "Autoturisme"
            }
        },
        {
            "type": "classes",
            "id": "vanupto7500",
            "attributes": {
                "name": "Autoutilitare"
            }
        },
        {
            "type": "classes",
            "id": "semitrailertruck",
            "attributes": {
                "name": "Camioane"
            }
        },
        {
            "type": "classes",
            "id": "truckover7500",
            "attributes": {
                "name": "Camioane peste 7,5t"
            }
        },
        {
            "type": "classes",
            "id": "ebike",
            "attributes": {
                "name": "E-Bike"
            }
        },
        {
            "type": "classes",
            "id": "motorbike",
            "attributes": {
                "name": "Motociclete"
            }
        },
        {
            "type": "classes",
            "id": "trailer",
            "attributes": {
                "name": "Remorci"
            }
        },
        {
            "type": "classes",
            "id": "motorhome",
            "attributes": {
                "name": "Rulote"
            }
        },
        {
            "type": "classes",
            "id": "semitrailer",
            "attributes": {
                "name": "Semiremorci"
            }
        }
    ]
}
 

Request      

GET v1/vehicle/classes

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Categories

requires authentication

Returns list of vehicle categories for a specific vehicle class.

This endpoint returns a paginated list of categories corresponding to the specified vehicle class. The response is localized based on the requested language, default in Romanian.

URL Parameter:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/vehicle/classes/Car/categories?page%5Bsize%5D=25" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/vehicle/classes/Car/categories"
);

const params = {
    "page[size]": "25",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/categories';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
        'query' => [
            'page[size]' => '25',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/categories'
params = {
  'page[size]': '25',
}
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 3,
        "perPage": 10,
        "to": 10,
        "total": 21
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/vehicle/classes/motorbike/categories?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/vehicle/classes/motorbike/categories?page%5Bnumber%5D=3&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/vehicle/classes/motorbike/categories?page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "categories",
            "id": "motorassistedbicycleandsmallmoped",
            "attributes": {
                "name": "Bicicletă cu motor/Motoretă"
            }
        },
        {
            "type": "categories",
            "id": "chopperandcruiser",
            "attributes": {
                "name": "Chopper / cruiser"
            }
        },
        {
            "type": "categories",
            "id": "racing",
            "attributes": {
                "name": "Cursă"
            }
        },
        {
            "type": "categories",
            "id": "enduroandtouringenduro",
            "attributes": {
                "name": "Enduro / touring-enduro"
            }
        },
        {
            "type": "categories",
            "id": "pocketbike",
            "attributes": {
                "name": "Minimotoretă"
            }
        },
        {
            "type": "categories",
            "id": "motorcycle",
            "attributes": {
                "name": "Motocicletă"
            }
        },
        {
            "type": "categories",
            "id": "combinationandsidecar",
            "attributes": {
                "name": "Motocicletă cu ataş"
            }
        },
        {
            "type": "categories",
            "id": "nakedbike",
            "attributes": {
                "name": "Motocicletă necarenată"
            }
        },
        {
            "type": "categories",
            "id": "trike",
            "attributes": {
                "name": "Motocicletă pe 3 roţi"
            }
        },
        {
            "type": "categories",
            "id": "dirtbike",
            "attributes": {
                "name": "Motocicletă pentru curse pe noroi"
            }
        }
    ]
}
 

Request      

GET v1/vehicle/classes/{classId}/categories

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

classId   string   

The unique key for the vehicle class. Example: Car

Query Parameters

page[size]   integer  optional  

Optional. The number of categories per page.
Example: 25

Makers

requires authentication

Returns list of vehicle makers for a specific vehicle class.

This endpoint returns a paginated list of vehicle makers (manufacturers/brands) associated with a given vehicle class. For example, for a "Car" vehicle class, you might see makers such as "Mercedes-Benz", "Toyota" or "Audi". The vehicle class is identified by the route parameter classId.

URL Parameter:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/vehicle/classes/Car/makers" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/vehicle/classes/Car/makers"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 17,
        "perPage": 10,
        "to": 10,
        "total": 169
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers?language=ro&page%5Bnumber%5D=17&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "makers",
            "id": "abarth",
            "attributes": {
                "name": "Abarth"
            }
        },
        {
            "type": "makers",
            "id": "ac",
            "attributes": {
                "name": "AC"
            }
        },
        {
            "type": "makers",
            "id": "acura",
            "attributes": {
                "name": "Acura"
            }
        },
        {
            "type": "makers",
            "id": "aiways",
            "attributes": {
                "name": "Aiways"
            }
        },
        {
            "type": "makers",
            "id": "aixam",
            "attributes": {
                "name": "Aixam"
            }
        },
        {
            "type": "makers",
            "id": "alfa_romeo",
            "attributes": {
                "name": "Alfa Romeo"
            }
        },
        {
            "type": "makers",
            "id": "alpina",
            "attributes": {
                "name": "ALPINA"
            }
        },
        {
            "type": "makers",
            "id": "alpine",
            "attributes": {
                "name": "Alpine"
            }
        },
        {
            "type": "makers",
            "id": "alvis",
            "attributes": {
                "name": "Alvis"
            }
        },
        {
            "type": "makers",
            "id": "ariel",
            "attributes": {
                "name": "Ariel"
            }
        }
    ]
}
 

Request      

GET v1/vehicle/classes/{classId}/makers

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

classId   string   

The unique key for the vehicle class.
Example: Car

Parameters

requires authentication

Returns list of vehicle parameters for a specific vehicle class.

This endpoint returns a paginated list of parameters associated with the specified vehicle class. Each parameter object includes an "id" and an "attributes" object with:

For example, a parameter like "condition" might be marked as mandatory and expect a single value, while a parameter such as "parking-assistants" may allow multiple values.

URL Parameter:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 2,
        "perPage": 10,
        "to": 10,
        "total": 13
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters?page%5Bnumber%5D=2&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters?page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "parameters",
            "id": "condition",
            "attributes": {
                "name": "Condiție",
                "responseType": "singleValue",
                "mandatory": true
            }
        },
        {
            "type": "parameters",
            "id": "door-count",
            "attributes": {
                "name": "Număr uși",
                "responseType": "singleValue",
                "mandatory": false
            }
        },
        {
            "type": "parameters",
            "id": "trailer-coupling-type",
            "attributes": {
                "name": "Mod cuplare remorcă",
                "responseType": "singleValue",
                "mandatory": false
            }
        },
        {
            "type": "parameters",
            "id": "speed-control",
            "attributes": {
                "name": "Pilot automat",
                "responseType": "singleValue",
                "mandatory": false
            }
        },
        {
            "type": "parameters",
            "id": "parking-assistants",
            "attributes": {
                "name": "Asistent parcare",
                "responseType": "multipleValues",
                "mandatory": false
            }
        },
        {
            "type": "parameters",
            "id": "interior-type",
            "attributes": {
                "name": "Material interior",
                "responseType": "multipleValues",
                "mandatory": true
            }
        },
        {
            "type": "parameters",
            "id": "airbag",
            "attributes": {
                "name": "Airbag-uri",
                "responseType": "multipleValues",
                "mandatory": false
            }
        },
        {
            "type": "parameters",
            "id": "emission-class",
            "attributes": {
                "name": "Clasă de emisii",
                "responseType": "singleValue",
                "mandatory": false
            }
        },
        {
            "type": "parameters",
            "id": "interior-color",
            "attributes": {
                "name": "Culoare interior",
                "responseType": "singleValue",
                "mandatory": true
            }
        },
        {
            "type": "parameters",
            "id": "climatisation",
            "attributes": {
                "name": "Sistem climatizare",
                "responseType": "singleValue",
                "mandatory": false
            }
        }
    ]
}
 

Request      

GET v1/vehicle/classes/{classId}/parameters

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

classId   string   

The unique key for the vehicle class.
Example: Car

Features

requires authentication

Returns list of features for a specific vehicle class.

This endpoint returns a filtered and paginated list of features that are available for the given vehicle class. For instance, a "Car" might include features such as ABS, AIR_SUSPENSION, or BLUETOOTH, while a "Motorbike" might have features such as KICKSTARTER, WINDSHIELD or CATALYTIC_CONVERTER.

URL Parameters:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/vehicle/classes/Car/features" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/vehicle/classes/Car/features"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/features';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/features'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 10,
        "perPage": 10,
        "to": 10,
        "total": 95
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/features?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/features?language=ro&page%5Bnumber%5D=10&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/features?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "features",
            "id": "ABS",
            "attributes": {
                "name": "ABS"
            }
        },
        {
            "type": "features",
            "id": "ANDROID_AUTO",
            "attributes": {
                "name": "Android Auto"
            }
        },
        {
            "type": "features",
            "id": "ALL_SEASON_TIRES",
            "attributes": {
                "name": "Anvelope All season"
            }
        },
        {
            "type": "features",
            "id": "WINTER_TIRES",
            "attributes": {
                "name": "Anvelope de iarnă"
            }
        },
        {
            "type": "features",
            "id": "SUMMER_TIRES",
            "attributes": {
                "name": "Anvelope de vară"
            }
        },
        {
            "type": "features",
            "id": "EMERGENCY_CALL_SYSTEM",
            "attributes": {
                "name": "Apelare automată în caz de urgență"
            }
        },
        {
            "type": "features",
            "id": "CARPLAY",
            "attributes": {
                "name": "Apple CarPlay"
            }
        },
        {
            "type": "features",
            "id": "HILL_START_ASSIST",
            "attributes": {
                "name": "Asistență la pornirea din rampă"
            }
        },
        {
            "type": "features",
            "id": "HIGH_BEAM_ASSIST",
            "attributes": {
                "name": "Asistență pentru faza lungă"
            }
        },
        {
            "type": "features",
            "id": "LANE_DEPARTURE_WARNING",
            "attributes": {
                "name": "Asistență schimbare bandă"
            }
        }
    ]
}
 

Request      

GET v1/vehicle/classes/{classId}/features

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

classId   string   

The unique key identifier for the vehicle class. Example: Car

Models

requires authentication

Returns list of vehicle models for a specific maker within a given vehicle class.

This endpoint returns a paginated list of vehicle models. For example, if the maker is "Audi", you might see models such as "A4" or "SQ8". The vehicle class is identified by the classId route parameter, and the maker by the makerId route parameter.

URL Parameters:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Audi/models'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 2,
        "perPage": 10,
        "to": 10,
        "total": 13
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Abarth/models?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Abarth/models?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/vehicle/classes/Car/makers/Abarth/models?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "models",
            "id": "124_spider",
            "attributes": {
                "name": "124 Spider"
            }
        },
        {
            "type": "models",
            "id": "500",
            "attributes": {
                "name": "500"
            }
        },
        {
            "type": "models",
            "id": "500c",
            "attributes": {
                "name": "500C"
            }
        },
        {
            "type": "models",
            "id": "595",
            "attributes": {
                "name": "595"
            }
        },
        {
            "type": "models",
            "id": "595_competizione",
            "attributes": {
                "name": "595 Competizione"
            }
        },
        {
            "type": "models",
            "id": "595_turismo",
            "attributes": {
                "name": "595 Turismo"
            }
        },
        {
            "type": "models",
            "id": "595c",
            "attributes": {
                "name": "595C"
            }
        },
        {
            "type": "models",
            "id": "600e",
            "attributes": {
                "name": "600e"
            }
        },
        {
            "type": "models",
            "id": "695",
            "attributes": {
                "name": "695"
            }
        },
        {
            "type": "models",
            "id": "695c",
            "attributes": {
                "name": "695C"
            }
        }
    ]
}
 

Request      

GET v1/vehicle/classes/{classId}/makers/{makerId}/models

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

classId   string   

The identifier key for the vehicle class.
Example: Car

makerId   string   

The identifier key for the vehicle maker.
Example: Audi

Parameter Values

requires authentication

Returns list of possible values for a specific vehicle parameter.

This endpoint returns a paginated list of parameter values for the specified vehicle parameter within the context of a given vehicle class. For example, if the parameter is "airbag", the response might include entries like FRONT_AND_SIDE_AIRBAGS or DRIVER_AIRBAG. If the parameter relates to exterior color, then a single value is expected, possible values could be BLACK, GREY, or RED.

Each result includes:

URL Parameters:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/airbag/parameter-values'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 1,
        "perPage": 10,
        "to": 10,
        "total": 10
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/fuel/parameter-values?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/vehicle/classes/Car/parameters/fuel/parameter-values?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "parameter-values",
            "id": "petrol",
            "attributes": {
                "name": "Benzină",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "diesel",
            "attributes": {
                "name": "Diesel",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "lpg",
            "attributes": {
                "name": "GPL",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "cng",
            "attributes": {
                "name": "Gaz petrolier compresat",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "electricity",
            "attributes": {
                "name": "Electric",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "hybrid",
            "attributes": {
                "name": "Hibrid (B/E)",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "hydrogenium",
            "attributes": {
                "name": "Hidrogen",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "ethanol",
            "attributes": {
                "name": "Etanol (FFV, E85 etc.)",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "hybrid_diesel",
            "attributes": {
                "name": "Hibrid (D/E)",
                "parameterId": "fuel"
            }
        },
        {
            "type": "parameter-values",
            "id": "other",
            "attributes": {
                "name": "Altele",
                "parameterId": "fuel"
            }
        }
    ]
}
 

Request      

GET v1/vehicle/classes/{classId}/parameters/{parameterId}/parameter-values

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

classId   string   

The unique key for the vehicle class.
Example: Car

parameterId   string   

The unique key for the parameter.
Example: airbag

Countries

requires authentication

Returns list of Countries defined within the Plus-Auto Marketplace.

Response Fields:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/countries" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/countries"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/countries';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/countries'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 25,
        "perPage": 10,
        "to": 10,
        "total": 249
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/countries?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/countries?language=ro&page%5Bnumber%5D=25&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/countries?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "countries",
            "id": 1,
            "attributes": {
                "name": "Afganistan"
            }
        },
        {
            "type": "countries",
            "id": 206,
            "attributes": {
                "name": "Africa de Sud"
            }
        },
        {
            "type": "countries",
            "id": 2,
            "attributes": {
                "name": "Albania"
            }
        },
        {
            "type": "countries",
            "id": 3,
            "attributes": {
                "name": "Algeria"
            }
        },
        {
            "type": "countries",
            "id": 5,
            "attributes": {
                "name": "Andorra"
            }
        },
        {
            "type": "countries",
            "id": 6,
            "attributes": {
                "name": "Angola"
            }
        },
        {
            "type": "countries",
            "id": 7,
            "attributes": {
                "name": "Anguilla"
            }
        },
        {
            "type": "countries",
            "id": 8,
            "attributes": {
                "name": "Antarctica"
            }
        },
        {
            "type": "countries",
            "id": 9,
            "attributes": {
                "name": "Antigua și Barbuda"
            }
        },
        {
            "type": "countries",
            "id": 195,
            "attributes": {
                "name": "Arabia Saudită"
            }
        }
    ]
}
 

Request      

GET v1/countries

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

Regions

requires authentication

Returns list of regions/counties for a given country.

This endpoint returns a paginated list of regions/counties for a specific country. The country is identified by the countryId URL parameter.

URL Parameter:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/countries/181/regions" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/countries/181/regions"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/countries/181/regions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/countries/181/regions'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 5,
        "perPage": 10,
        "to": 10,
        "total": 42
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/countries/181/regions?language=ro&page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/countries/181/regions?language=ro&page%5Bnumber%5D=5&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/countries/181/regions?language=ro&page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "regions",
            "id": 1,
            "attributes": {
                "name": "Alba"
            }
        },
        {
            "type": "regions",
            "id": 2,
            "attributes": {
                "name": "Arad"
            }
        },
        {
            "type": "regions",
            "id": 3,
            "attributes": {
                "name": "Argeş"
            }
        },
        {
            "type": "regions",
            "id": 4,
            "attributes": {
                "name": "Bacău"
            }
        },
        {
            "type": "regions",
            "id": 5,
            "attributes": {
                "name": "Bihor"
            }
        },
        {
            "type": "regions",
            "id": 6,
            "attributes": {
                "name": "Bistriţa Năsăud"
            }
        },
        {
            "type": "regions",
            "id": 7,
            "attributes": {
                "name": "Botoşani"
            }
        },
        {
            "type": "regions",
            "id": 8,
            "attributes": {
                "name": "Brăila"
            }
        },
        {
            "type": "regions",
            "id": 9,
            "attributes": {
                "name": "Braşov"
            }
        },
        {
            "type": "regions",
            "id": 42,
            "attributes": {
                "name": "București"
            }
        }
    ]
}
 

Request      

GET v1/countries/{countryId}/regions

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

countryId   integer   

The unique identifier of the country.
Example: 181

Localities

requires authentication

Returns list of localities for a given country and region.

This endpoint returns a paginated list of localities for a given country and region. The country is identified by the countryId URL parameter and the region by the regionId URL parameter.

URL Parameters:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/countries/181/regions/1/localities" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/countries/181/regions/1/localities"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/countries/181/regions/1/localities';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/countries/181/regions/1/localities'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 52,
        "perPage": 10,
        "to": 10,
        "total": 511
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/countries/181/regions/4/localities?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/countries/181/regions/4/localities?page%5Bnumber%5D=52&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/countries/181/regions/4/localities?page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "localities",
            "id": 1599,
            "attributes": {
                "name": "Agăş"
            }
        },
        {
            "type": "localities",
            "id": 1600,
            "attributes": {
                "name": "Albele"
            }
        },
        {
            "type": "localities",
            "id": 1601,
            "attributes": {
                "name": "Antoheşti"
            }
        },
        {
            "type": "localities",
            "id": 1602,
            "attributes": {
                "name": "Apa Asău"
            }
        },
        {
            "type": "localities",
            "id": 1603,
            "attributes": {
                "name": "Ardeoani"
            }
        },
        {
            "type": "localities",
            "id": 1604,
            "attributes": {
                "name": "Arini"
            }
        },
        {
            "type": "localities",
            "id": 1605,
            "attributes": {
                "name": "Asău"
            }
        },
        {
            "type": "localities",
            "id": 1606,
            "attributes": {
                "name": "Bacău"
            }
        },
        {
            "type": "localities",
            "id": 1607,
            "attributes": {
                "name": "Băcioiu"
            }
        },
        {
            "type": "localities",
            "id": 1608,
            "attributes": {
                "name": "Bâcleşti"
            }
        }
    ]
}
 

Request      

GET v1/countries/{countryId}/regions/{regionId}/localities

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json

URL Parameters

countryId   integer   

The unique identifier of the country.
Example: 181

regionId   integer   

The unique identifier of the region.
Example: 1

Currency exchange rules

requires authentication

Returns list of currency exchange rules (EUR-RON) defined within the Plus-Auto Marketplace. Currency exchange rule may be optionally provided when a new Ad is created and can be used when generating Ad one pager where price is presented in both EUR and RON. The Ad one pager feature is optional and can be accessed from the web interface.

Each result includes:

Query Parameters:

Example request:
curl --request GET \
    --get "https://api.plus-auto.ro/v1/exchange-rules" \
    --header "Authorization: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d" \
    --header "Content-Type: application/vnd.api+json" \
    --header "Accept: application/vnd.api+json"
const url = new URL(
    "https://api.plus-auto.ro/v1/exchange-rules"
);

const headers = {
    "Authorization": "Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d",
    "Content-Type": "application/vnd.api+json",
    "Accept": "application/vnd.api+json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.plus-auto.ro/v1/exchange-rules';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
            'Content-Type' => 'application/vnd.api+json',
            'Accept' => 'application/vnd.api+json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.plus-auto.ro/v1/exchange-rules'
headers = {
  'Authorization': 'Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d',
  'Content-Type': 'application/vnd.api+json',
  'Accept': 'application/vnd.api+json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "meta": {
        "currentPage": 1,
        "from": 1,
        "lastPage": 2,
        "perPage": 10,
        "to": 10,
        "total": 20
    },
    "jsonapi": {
        "version": "1.0"
    },
    "links": {
        "first": "http://api.plus-auto.ro/v1/exchange-rules?page%5Bnumber%5D=1&page%5Bsize%5D=10",
        "last": "http://api.plus-auto.ro/v1/exchange-rules?page%5Bnumber%5D=2&page%5Bsize%5D=10",
        "next": "http://api.plus-auto.ro/v1/exchange-rules?page%5Bnumber%5D=2&page%5Bsize%5D=10"
    },
    "data": [
        {
            "type": "exchange-rules",
            "id": 1,
            "attributes": {
                "name": "BNR",
                "customRate": false
            }
        },
        {
            "type": "exchange-rules",
            "id": 2,
            "attributes": {
                "name": "BNR+0.5%",
                "customRate": false
            }
        },
        {
            "type": "exchange-rules",
            "id": 3,
            "attributes": {
                "name": "BNR+1%",
                "customRate": false
            }
        },
        {
            "type": "exchange-rules",
            "id": 4,
            "attributes": {
                "name": "BRD",
                "customRate": true
            }
        },
        {
            "type": "exchange-rules",
            "id": 5,
            "attributes": {
                "name": "BNR+1.5%",
                "customRate": false
            }
        },
        {
            "type": "exchange-rules",
            "id": 6,
            "attributes": {
                "name": "ALPHA BANK",
                "customRate": true
            }
        },
        {
            "type": "exchange-rules",
            "id": 7,
            "attributes": {
                "name": "BANCA COMERCIALA INTESA SANPAOLO",
                "customRate": true
            }
        },
        {
            "type": "exchange-rules",
            "id": 8,
            "attributes": {
                "name": "BCR",
                "customRate": true
            }
        },
        {
            "type": "exchange-rules",
            "id": 9,
            "attributes": {
                "name": "BANCA TRANSILVANIA",
                "customRate": true
            }
        },
        {
            "type": "exchange-rules",
            "id": 10,
            "attributes": {
                "name": "CEC BANK",
                "customRate": true
            }
        }
    ]
}
 

Request      

GET v1/exchange-rules

Headers

Authorization      

Example: Bearer 81Dzg6D014fsVnkMrIrHCneuoveb6rhr0QYZYtjB4fd30d5d

Content-Type      

Example: application/vnd.api+json

Accept      

Example: application/vnd.api+json