Developer Documentation

Partner Integration API

Partner with EzzyRide to list your vehicle inventory on our platform. Get in touch, get onboarded, and start syncing programmatically.

Interested in Becoming a Partner?

To get started, reach out to our team. We'll discuss your needs, set up your partner account, configure your field mappings, and issue you a secure API key. Once onboarded, use this documentation to integrate your vehicle feed.

Contact Us

How It Works

1. Get in Touch

Contact our team to discuss a partnership. We'll walk you through the onboarding process.

2. Receive Your API Key

Once approved, we set up your account and issue a secure API key for authentication.

3. We Map Your Data

Share a sample payload and we configure how your fields, values, and feature names map to ours — no changes needed on your end.

4. Sync Vehicles

POST your vehicle data. Re-syncs update existing vehicles based on your reference ID.

Authentication

Once onboarded, you'll receive an API key. Include it in every request via the X-Api-Key header.

POST https://api.ezzyride.com/partner-api/v1/sync
Headers:
  X-Api-Key:    YOUR_API_KEY
  Content-Type: application/json
  Accept:       application/json

Request Body

Send an array of vehicle objects. Maximum 500 vehicles per request.

{
  "vehicles": [
    {
      "external_reference": "SBT-12345",      // Required — your unique ID
      "brand":              "Toyota",
      "model":              "Land Cruiser",
      "year":               2022,
      "transmission":       "Automatic",
      "fuel_type":          "Diesel",
      "mileage":            45000,
      "engine_cc":          2800,
      "selling_price":      85000000,
      "color":              "White",
      "status":             "In Stock",
      "features":           "Sunroof|Leather Seats|Navigation",
      "description":        "Clean vehicle, low mileage…"
    }
  ]
}

Field Reference

FieldTypeRequiredNotes
external_referencestringYesYour unique identifier for this vehicle
brandstringNoVehicle make (mapped via value mapping)
modelstringNoVehicle model name
yearintegerNoManufacture year
transmissionstringNoautomatic, manual, cvt (mapped)
fuel_typestringNopetrol, diesel, hybrid, electric (mapped)
drive_typestringNofwd, rwd, awd, 4wd (mapped)
mileageintegerNoOdometer reading in km
engine_ccintegerNoEngine displacement in cc
selling_pricenumberNoPrice in your default currency — UGX for local partners, CIF in USD/JPY etc. for international (smart parsing supported)
colorstringNoExterior color
statusstringNoVehicle status (mapped via value mapping)
featuresstringNoDelimited list (pipes, commas, or semicolons). Use your own feature names — we map them during onboarding.
descriptionstringNoFree-text description
imagesarrayNoArray of publicly accessible image URLs. First image becomes primary. Downloaded on first sync only.
videoUrlstringNoYouTube or video URL for the vehicle

Response

A successful sync returns a summary of what happened.

{
  "success": true,
  "data": {
    "sync_id":        42,
    "total_vehicles": 15,
    "imported_count": 14,
    "failed_count":   1,
    "skipped_count":  0,
    "errors": [
      { "index": 7, "message": "Missing external_reference" }
    ]
  }
}

Important Notes

  • Upsert behavior: If a vehicle with the same external_reference already exists, it will be updated — not duplicated.
  • Field mapping: You can use your own field names. We configure the mapping on our side so you don't need to change your data format.
  • Value mapping: Enum values (transmission, fuel type, etc.) are mapped automatically. Send values in your own format.
  • Rate limit: Maximum 500 vehicles per request. For larger inventories, batch into multiple requests.
  • Smart pricing: Price fields accept formatted strings like "UGX 85,000,000" or "85.5M" — they are parsed automatically.
  • Features: Send features/extras as a delimited string (pipes |, commas, or semicolons). During onboarding, share a sample payload with your account manager so they can map your feature names to our system. Use your own naming — no changes needed on your end.
  • Images: Include an images array with publicly accessible URLs (not behind authentication). Supported formats: JPEG, PNG, WebP. We download and store them on first sync. The first URL becomes the primary image.
  • Video: Include a videoUrl field with a YouTube or video link for the vehicle listing.
  • Removing vehicles: To remove a vehicle from the website, send it with "status": "sold" or "status": "draft" in your next sync. Sold vehicles are taken offline automatically. Draft vehicles are hidden from the public listing.
  • Pricing: For international partners, send the CIF price in your configured currency (e.g. USD). We convert it to UGX using the current market rate for display. For local partners, send the price in UGX as-is.

What Happens After Sync

  1. Vehicles land as unpublished drafts — they are not visible on the website until reviewed by the EzzyRide team.
  2. Our team reviews and publishes — we verify details, check images, and make the listing live. This typically happens within 24 hours.
  3. Customers browse and inquire — once live, customers can view the vehicle, calculate estimated costs, and submit a purchase request.
  4. You get notified — if you've configured a purchase callback URL, your system receives a notification automatically. Otherwise, your EzzyRide account manager will contact you directly.

Tip: We recommend syncing your full inventory daily (or whenever stock changes) to keep listings up to date. Vehicles with the same external_reference are updated, never duplicated.

Testing: During onboarding, send a small test batch (1–2 vehicles) with "status": "draft". These will not appear on the website. Your account manager will verify the data looks correct before going live.

Code Examples

Replace YOUR_API_KEY with the API key provided by your EzzyRide account manager.

Laravel — Send Vehicles
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Http;

class VehicleSyncController extends Controller
{
    public function sync()
    {
        $apiKey  = config('services.ezzyride.api_key'); // YOUR_API_KEY
        $baseUrl = 'https://api.ezzyride.com';

        $vehicles = [
            [
                'external_reference' => 'SBT-12345',
                'brand'              => 'Toyota',
                'model'              => 'Land Cruiser',
                'year'               => 2022,
                'transmission'       => 'Automatic',
                'fuel_type'          => 'Diesel',
                'mileage'            => 45000,
                'engine_cc'          => 2800,
                'selling_price'      => 85000000,
                'status'             => 'In Stock',
                'features'           => 'Sunroof|Leather Seats|Navigation',
            ],
            // ... more vehicles
        ];

        $response = Http::withHeaders([
            'X-Api-Key'    => $apiKey,
            'Content-Type' => 'application/json',
            'Accept'       => 'application/json',
        ])->post("{$baseUrl}/partner-api/v1/sync", [
            'vehicles' => $vehicles,
        ]);

        if ($response->successful()) {
            $result = $response->json('data');
            logger()->info('Sync complete', [
                'imported' => $result['imported_count'],
                'failed'   => $result['failed_count'],
            ]);
        } else {
            logger()->error('Sync failed', [
                'status' => $response->status(),
                'body'   => $response->body(),
            ]);
        }

        return $response->json();
    }
}

Purchase Callback (Optional)

When a customer on EzzyRide requests to purchase one of your vehicles, we can notify your system automatically. During onboarding, provide a callback URL to your account manager. We will send a POST request whenever a purchase request is made.

Request We Send

POST https://your-system.com/api/purchase-callback
Headers:
  Content-Type: application/json

{
  "event": "purchase_request",
  "external_reference": "YOUR-STOCK-REF",
  "vehicle_reference": "EZR-2026-00042",
  "vehicle": "Toyota Land Cruiser 2022",
  "customer": {
    "name":  "John Doe",
    "email": "john@example.com",
    "phone": "+256700123456"
  },
  "application_reference": "IMP-2026-00015",
  "requested_at": "2026-04-05T10:30:00+03:00"
}

Expected Response — Vehicle Available

{
  "success": true,
  "message": "Purchase request received",
  "partner_reference": "PR-2026-0042"  // optional — your internal tracking reference
}

Expected Response — Vehicle No Longer Available

If the vehicle has already been sold, reserved, or is otherwise unavailable on your side, respond with "success": false and a reason field. We will automatically release the reservation on our end and notify our team.

{
  "success": false,
  "reason": "sold",          // "sold", "reserved", or "unavailable"
  "message": "This vehicle was sold yesterday"  // optional — additional context
}

What happens on rejection: The vehicle is marked as sold/reserved (matching your reason), unpublished from the website, and the import application is cancelled. Our team is notified via email to contact the customer with alternative options.

  • We use the external_reference (your stock number) to identify the vehicle.
  • If your endpoint returns a non-2xx status, we will retry up to 3 times with 60-second intervals.
  • Accepted reason values: sold, reserved, unavailable
  • This is optional — if no callback URL is configured, purchase requests are handled manually by your EzzyRide account manager.

Error Codes

StatusMeaningAction
200SuccessCheck failed_count for per-vehicle errors
401UnauthorizedCheck your API key is correct and active
422Validation errorCheck the vehicles array format
429Too many requestsSlow down and retry after a moment
500Server errorContact support if the issue persists

Need Help?

Our team is ready to help with integration setup, field mapping configuration, or troubleshooting sync issues.

Contact Support
EzzyRide

Your trusted partner for premium Japanese vehicle imports in Uganda.

Contact Us

Stay Updated

Be the first to know about new vehicles and special offers.

© 2026 EzzyRide Uganda. All rights reserved.

Chat with us