AI-First API Documentation

Druveo API

Druveo car marketplace API. Pan-Central America. OpenAPI spec auto-generated from Elysia t.Object schemas.

> Tell your AI agent: "Learn http://localhost:3000"
116
Endpoints
16
Categories
v0.1.0
Version

health

Health and readiness probes

1 endpoints

auth

Authentication, sessions, password reset

10 endpoints

users

User profiles, ratings, favorites

13 endpoints

listings

Vehicle listings CRUD and search

11 endpoints

vin

VIN validation, NHTSA lookup, fraud detection

6 endpoints

search

Full-text search via Meilisearch

5 endpoints

chat

Real-time messaging

5 endpoints

notifications

Multi-channel notifications

5 endpoints

analytics

Tracking and dashboard metrics

6 endpoints

admin

Moderation and platform management

21 endpoints

payments

Stripe integration, subscriptions

6 endpoints

valuations

Vehicle valuation ranges from listing comparables

5 endpoints

saved-searches

Saved search alerts and match notifications

6 endpoints

inspections

Druveo Inspected booking, fulfillment, badge

9 endpoints

messaging

Multi-channel messaging gateway (WhatsApp, Telegram)

6 endpoints

Other

1 endpoints

Available formats

Machine-readable

No separate URL to discover. Your AI agent hits this page directly and receives the token-optimized format — no /llms.txt convention required.

curl -H "Accept: text/markdown" http://localhost:3000/

health

Health and readiness probes

  • GET /health Liveness probe None required
    200 application/json
    {
      "status": "string",
      "timestamp": "string",
      "uptime": 0
    }

auth

Authentication, sessions, password reset

  • POST /v1/auth/register Register a new account None required
    201 application/json
    {
      "id": "string",
      "email": "string",
      "firstName": "string",
      "lastName": "string",
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "createdAt": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
  • POST /v1/auth/login Login with email and password None required
    200 application/json
    {
      "accessToken": "string",
      "refreshToken": "string",
      "user": {
        "id": "string",
        "email": "string",
        "firstName": "string",
        "lastName": "string",
        "role": "string" | "string" | "string",
        "status": "string" | "string" | "string" | "string",
        "createdAt": "string"
      }
    }
    400 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
  • POST /v1/auth/refresh Rotate refresh token, return new tokens None required
    200 application/json
    {
      "accessToken": "string",
      "refreshToken": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
  • POST /v1/auth/logout Revoke a single session by refresh token None required
    No response body
  • POST /v1/auth/verify-email Consume an email verification token None required
    200 application/json
    {
      "message": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
  • POST /v1/auth/resend-verification Resend verification email (rate-limited 1/min) None required
    200 application/json
    {
      "message": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
  • POST /v1/auth/forgot-password Request a password reset email None required
    200 application/json
    {
      "message": "string"
    }
  • POST /v1/auth/reset-password Consume reset token and set a new password None required
    200 application/json
    {
      "message": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
  • GET /v1/auth/me Return the authenticated user None required
    200 application/json
    {
      "id": "string",
      "email": "string",
      "firstName": "string",
      "lastName": "string",
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
  • POST /v1/auth/logout-all Revoke ALL sessions for the current user None required
    401 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string",
      "details": "string"
    }

users

User profiles, ratings, favorites

  • GET /v1/users/{id} Public user profile None required
    200 application/json
    {
      "id": "string",
      "firstName": "string",
      "lastName": "string",
      "avatar": "string" | null,
      "bio": "string" | null,
      "location": "string" | null,
      "memberSince": "string",
      "ratingsSummary": {
        "count": "string" | 0,
        "average": 0
      }
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/users/{id}/ratings Paginated ratings for a user None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "reviewerId": "string",
          "userId": "string",
          "type": "string" | "string",
          "rating": 0,
          "comment": "string" | null,
          "listingId": "string" | null,
          "createdAt": "string",
          "isEdited": false
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
  • POST /v1/users/{id}/ratings Rate a user (max one per listing per rater) None required
    200 application/json
    {
      "id": "string",
      "reviewerId": "string",
      "userId": "string",
      "type": "string" | "string",
      "rating": 0,
      "comment": "string" | null,
      "listingId": "string" | null,
      "createdAt": "string",
      "isEdited": false
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/users/me Own full profile None required
    200 application/json
    {
      "id": "string",
      "email": "string",
      "firstName": "string",
      "lastName": "string",
      "phone": "string" | null,
      "phoneVerified": false,
      "avatar": "string" | null,
      "bio": "string" | null,
      "location": "string" | null,
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • PATCH /v1/users/me Update own profile None required
    200 application/json
    {
      "id": "string",
      "email": "string",
      "firstName": "string",
      "lastName": "string",
      "phone": "string" | null,
      "phoneVerified": false,
      "avatar": "string" | null,
      "bio": "string" | null,
      "location": "string" | null,
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/users/me/favorites Paginated own favorites None required
    200 application/json
    {
      "items": [
        {
          "listingId": "string",
          "title": "string",
          "price": "string",
          "currency": "string",
          "status": "string",
          "thumbnail": "string" | null,
          "favoritedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/users/me/favorites/{listingId} Add favorite (idempotent) None required
    200 application/json
    {
      "added": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • DELETE /v1/users/me/favorites/{listingId} Remove favorite (idempotent) None required
    200 application/json
    {
      "removed": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/users/me/activities Paginated own activity log None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "type": "string",
          "description": "string" | null,
          "metadata": {},
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/users/me/notification-preferences Read notification preferences None required
    200 application/json
    {
      "enableAll": false,
      "doNotDisturb": false,
      "preferences": {},
      "pushToken": "string" | null,
      "phoneNumber": "string" | null
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • PATCH /v1/users/me/notification-preferences Patch notification preferences None required
    200 application/json
    {
      "enableAll": false,
      "doNotDisturb": false,
      "preferences": {},
      "pushToken": "string" | null,
      "phoneNumber": "string" | null
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/users/me/identities List channel identities linked to the current user None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "channel": "string" | "string",
          "metadata": {},
          "verifiedAt": "string" | null,
          "createdAt": "string"
        }
      ]
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/users/me/identities/{channel}/unlink Revoke an identity link (idempotent) None required
    200 application/json
    {
      "unlinked": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }

listings

Vehicle listings CRUD and search

  • GET /v1/listings/ Paginated listing search with filters None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "sellerId": "string",
          "title": "string",
          "description": "string",
          "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
          "condition": "string" | "string" | "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0,
          "vin": "string" | null,
          "trim": "string" | null,
          "color": "string" | null,
          "interiorColor": "string" | null,
          "mileage": "string" | 0,
          "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
          "transmission": "string" | "string" | "string" | "string",
          "engineSize": "string" | null,
          "horsepower": ... | ... | null,
          "driveType": ... | ... | ... | ... | null,
          "doors": ... | ... | null,
          "seats": ... | ... | null,
          "price": 0,
          "originalPrice": 0 | null,
          "priceNegotiable": false,
          "currency": "string",
          "location": "string",
          "postalCode": "string" | null,
          "country": "string" | null,
          "latitude": 0 | null,
          "longitude": 0 | null,
          "isFeatured": false,
          "isPremium": false,
          "inspectedByDruveo": false,
          "viewCount": "string" | 0,
          "favoriteCount": "string" | 0,
          "contactCount": "string" | 0,
          "publishedAt": "string" | null,
          "soldAt": "string" | null,
          "expiresAt": "string" | null,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
  • POST /v1/listings/ Create draft listing None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "description": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "condition": "string" | "string" | "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "vin": "string" | null,
      "trim": "string" | null,
      "color": "string" | null,
      "interiorColor": "string" | null,
      "mileage": "string" | 0,
      "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "transmission": "string" | "string" | "string" | "string",
      "engineSize": "string" | null,
      "horsepower": "string" | 0 | null,
      "driveType": "string" | "string" | "string" | "string" | null,
      "doors": "string" | 0 | null,
      "seats": "string" | 0 | null,
      "price": 0,
      "originalPrice": 0 | null,
      "priceNegotiable": false,
      "currency": "string",
      "location": "string",
      "postalCode": "string" | null,
      "country": "string" | null,
      "latitude": 0 | null,
      "longitude": 0 | null,
      "isFeatured": false,
      "isPremium": false,
      "inspectedByDruveo": false,
      "viewCount": "string" | 0,
      "favoriteCount": "string" | 0,
      "contactCount": "string" | 0,
      "publishedAt": "string" | null,
      "soldAt": "string" | null,
      "expiresAt": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/listings/{id} Public listing detail None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "description": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "condition": "string" | "string" | "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "vin": "string" | null,
      "trim": "string" | null,
      "color": "string" | null,
      "interiorColor": "string" | null,
      "mileage": "string" | 0,
      "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "transmission": "string" | "string" | "string" | "string",
      "engineSize": "string" | null,
      "horsepower": "string" | 0 | null,
      "driveType": "string" | "string" | "string" | "string" | null,
      "doors": "string" | 0 | null,
      "seats": "string" | 0 | null,
      "price": 0,
      "originalPrice": 0 | null,
      "priceNegotiable": false,
      "currency": "string",
      "location": "string",
      "postalCode": "string" | null,
      "country": "string" | null,
      "latitude": 0 | null,
      "longitude": 0 | null,
      "isFeatured": false,
      "isPremium": false,
      "inspectedByDruveo": false,
      "viewCount": "string" | 0,
      "favoriteCount": "string" | 0,
      "contactCount": "string" | 0,
      "publishedAt": "string" | null,
      "soldAt": "string" | null,
      "expiresAt": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • PATCH /v1/listings/{id} Update listing (owner or admin) None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "description": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "condition": "string" | "string" | "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "vin": "string" | null,
      "trim": "string" | null,
      "color": "string" | null,
      "interiorColor": "string" | null,
      "mileage": "string" | 0,
      "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "transmission": "string" | "string" | "string" | "string",
      "engineSize": "string" | null,
      "horsepower": "string" | 0 | null,
      "driveType": "string" | "string" | "string" | "string" | null,
      "doors": "string" | 0 | null,
      "seats": "string" | 0 | null,
      "price": 0,
      "originalPrice": 0 | null,
      "priceNegotiable": false,
      "currency": "string",
      "location": "string",
      "postalCode": "string" | null,
      "country": "string" | null,
      "latitude": 0 | null,
      "longitude": 0 | null,
      "isFeatured": false,
      "isPremium": false,
      "inspectedByDruveo": false,
      "viewCount": "string" | 0,
      "favoriteCount": "string" | 0,
      "contactCount": "string" | 0,
      "publishedAt": "string" | null,
      "soldAt": "string" | null,
      "expiresAt": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • DELETE /v1/listings/{id} Soft delete listing (status removed) None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "description": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "condition": "string" | "string" | "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "vin": "string" | null,
      "trim": "string" | null,
      "color": "string" | null,
      "interiorColor": "string" | null,
      "mileage": "string" | 0,
      "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "transmission": "string" | "string" | "string" | "string",
      "engineSize": "string" | null,
      "horsepower": "string" | 0 | null,
      "driveType": "string" | "string" | "string" | "string" | null,
      "doors": "string" | 0 | null,
      "seats": "string" | 0 | null,
      "price": 0,
      "originalPrice": 0 | null,
      "priceNegotiable": false,
      "currency": "string",
      "location": "string",
      "postalCode": "string" | null,
      "country": "string" | null,
      "latitude": 0 | null,
      "longitude": 0 | null,
      "isFeatured": false,
      "isPremium": false,
      "inspectedByDruveo": false,
      "viewCount": "string" | 0,
      "favoriteCount": "string" | 0,
      "contactCount": "string" | 0,
      "publishedAt": "string" | null,
      "soldAt": "string" | null,
      "expiresAt": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/listings/{id}/click Log a click event (analytics ingest) None required
    200 application/json
    {
      "id": "string",
      "listingId": "string",
      "clickType": "string",
      "createdAt": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/listings/{id}/publish Publish listing (draft -> published) None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "description": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "condition": "string" | "string" | "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "vin": "string" | null,
      "trim": "string" | null,
      "color": "string" | null,
      "interiorColor": "string" | null,
      "mileage": "string" | 0,
      "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "transmission": "string" | "string" | "string" | "string",
      "engineSize": "string" | null,
      "horsepower": "string" | 0 | null,
      "driveType": "string" | "string" | "string" | "string" | null,
      "doors": "string" | 0 | null,
      "seats": "string" | 0 | null,
      "price": 0,
      "originalPrice": 0 | null,
      "priceNegotiable": false,
      "currency": "string",
      "location": "string",
      "postalCode": "string" | null,
      "country": "string" | null,
      "latitude": 0 | null,
      "longitude": 0 | null,
      "isFeatured": false,
      "isPremium": false,
      "inspectedByDruveo": false,
      "viewCount": "string" | 0,
      "favoriteCount": "string" | 0,
      "contactCount": "string" | 0,
      "publishedAt": "string" | null,
      "soldAt": "string" | null,
      "expiresAt": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/listings/{id}/unpublish Unpublish listing (published -> draft) None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "description": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "condition": "string" | "string" | "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "vin": "string" | null,
      "trim": "string" | null,
      "color": "string" | null,
      "interiorColor": "string" | null,
      "mileage": "string" | 0,
      "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "transmission": "string" | "string" | "string" | "string",
      "engineSize": "string" | null,
      "horsepower": "string" | 0 | null,
      "driveType": "string" | "string" | "string" | "string" | null,
      "doors": "string" | 0 | null,
      "seats": "string" | 0 | null,
      "price": 0,
      "originalPrice": 0 | null,
      "priceNegotiable": false,
      "currency": "string",
      "location": "string",
      "postalCode": "string" | null,
      "country": "string" | null,
      "latitude": 0 | null,
      "longitude": 0 | null,
      "isFeatured": false,
      "isPremium": false,
      "inspectedByDruveo": false,
      "viewCount": "string" | 0,
      "favoriteCount": "string" | 0,
      "contactCount": "string" | 0,
      "publishedAt": "string" | null,
      "soldAt": "string" | null,
      "expiresAt": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/listings/{id}/sold Mark listing sold (final state) None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "description": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "condition": "string" | "string" | "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "vin": "string" | null,
      "trim": "string" | null,
      "color": "string" | null,
      "interiorColor": "string" | null,
      "mileage": "string" | 0,
      "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "transmission": "string" | "string" | "string" | "string",
      "engineSize": "string" | null,
      "horsepower": "string" | 0 | null,
      "driveType": "string" | "string" | "string" | "string" | null,
      "doors": "string" | 0 | null,
      "seats": "string" | 0 | null,
      "price": 0,
      "originalPrice": 0 | null,
      "priceNegotiable": false,
      "currency": "string",
      "location": "string",
      "postalCode": "string" | null,
      "country": "string" | null,
      "latitude": 0 | null,
      "longitude": 0 | null,
      "isFeatured": false,
      "isPremium": false,
      "inspectedByDruveo": false,
      "viewCount": "string" | 0,
      "favoriteCount": "string" | 0,
      "contactCount": "string" | 0,
      "publishedAt": "string" | null,
      "soldAt": "string" | null,
      "expiresAt": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/listings/{id}/report Report a listing None required
    200 application/json
    {
      "id": "string",
      "listingId": "string",
      "reason": "string",
      "status": "string",
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/listings/{id}/history Listing change history (owner or admin) None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "action": "string",
          "userId": "string" | null,
          "changes": {} | null,
          "notes": "string" | null,
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }

vin

VIN validation, NHTSA lookup, fraud detection

  • GET /v1/vin/{vin}/validate ISO 3779 validation (no NHTSA call) None required
    200 application/json
    {
      "valid": false,
      "vin": "string",
      "reason": "string" | "string" | "string"
    }
  • GET /v1/vin/{vin}/decode Decode VIN (Redis -> Postgres -> NHTSA) None required
    200 application/json
    {
      "vin": "string",
      "cached": false,
      "source": "string" | "string" | "string",
      "modelYear": 0 | null,
      "make": "string" | null,
      "model": "string" | null,
      "trim": "string" | null,
      "bodyType": "string" | null,
      "engine": "string" | null,
      "transmission": "string" | null,
      "drivetrain": "string" | null,
      "fuelType": "string" | null,
      "doors": 0 | null,
      "hitCount": 0,
      "decodedBy": "string" | null,
      "errorMessage": "string" | null
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
    502 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/vin/{vin}/history Public history summary (counts only) None required
    200 application/json
    {
      "vin": "string",
      "summary": {
        "decode": "string" | 0,
        "report": "string" | 0,
        "total": "string" | 0
      },
      "reports": {
        "count": "string" | 0,
        "reasonCounts": {}
      },
      "firstSeenAt": "string" | null,
      "lastDecodedAt": "string" | null
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/vin/{vin}/report Report a VIN (auth, rate-limited) None required
    200 application/json
    {
      "id": "string",
      "vin": "string",
      "reason": "string",
      "createdAt": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/vin/{vin}/history/details Paginated history details (auth; user ids masked unless admin or own) None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "vin": "string",
          "action": "string",
          "wasSuccessful": false,
          "errorMessage": "string" | null,
          "reportReason": "string" | null,
          "reportDescription": "string" | null,
          "userId": "string" | null,
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/vin/me/checks Current user's recent VIN actions None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "vin": "string",
          "action": "string",
          "wasSuccessful": false,
          "errorMessage": "string" | null,
          "reportReason": "string" | null,
          "reportDescription": "string" | null,
          "userId": "string" | null,
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }

chat

Real-time messaging

  • POST /v1/chat/conversations Get or create a conversation around a listing (idempotent) None required
    200 application/json
    {
      "id": "string",
      "buyerId": "string",
      "sellerId": "string",
      "listingId": "string",
      "status": "string" | "string" | "string",
      "lastMessageContent": "string" | null,
      "lastMessageSenderId": "string" | null,
      "lastMessageAt": "string" | null,
      "unreadCount": "string" | 0,
      "blockedByBuyer": false,
      "blockedBySeller": false,
      "createdAt": "string",
      "updatedAt": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/chat/conversations List own conversations with last-message preview and unread counts None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "buyerId": "string",
          "sellerId": "string",
          "listingId": "string",
          "status": "string" | "string" | "string",
          "lastMessageContent": "string" | null,
          "lastMessageSenderId": "string" | null,
          "lastMessageAt": "string" | null,
          "unreadCount": "string" | 0,
          "blockedByBuyer": false,
          "blockedBySeller": false,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/chat/conversations/{id}/messages Paginated message history (cursor on created_at) None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "conversationId": "string",
          "senderId": "string",
          "content": "string",
          "type": "string" | "string" | "string",
          "isEdited": false,
          "isDeleted": false,
          "createdAt": "string"
        }
      ],
      "nextCursor": "string" | null
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/chat/conversations/{id}/messages Send a text message and broadcast over WS None required
    200 application/json
    {
      "id": "string",
      "conversationId": "string",
      "senderId": "string",
      "content": "string",
      "type": "string" | "string" | "string",
      "isEdited": false,
      "isDeleted": false,
      "createdAt": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/chat/conversations/{id}/read Mark messages as read up to a given message id None required
    200 application/json
    {
      "marked": "string" | 0,
      "upToMessageId": "string",
      "readAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }

notifications

Multi-channel notifications

  • GET /v1/notifications/me Paginated own in-app notifications None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "type": "string",
          "title": "string",
          "message": "string",
          "data": {} | null,
          "priority": "string" | "string" | "string" | "string",
          "isRead": false,
          "readAt": "string" | null,
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/notifications/me/{id}/read Mark a notification read (idempotent) None required
    200 application/json
    {
      "id": "string",
      "type": "string",
      "title": "string",
      "message": "string",
      "data": {} | null,
      "priority": "string" | "string" | "string" | "string",
      "isRead": false,
      "readAt": "string" | null,
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/notifications/me/read-all Mark all unread notifications read None required
    200 application/json
    {
      "updated": "string" | 0
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/notifications/me/devices Register or refresh an FCM device token (idempotent on token) None required
    200 application/json
    {
      "id": "string",
      "token": "string",
      "platform": "string" | "string" | "string",
      "lastUsedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • DELETE /v1/notifications/me/devices/{token} Remove an FCM device token None required
    200 application/json
    {
      "removed": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }

analytics

Tracking and dashboard metrics

  • POST /v1/analytics/listing-view Record a listing-page view None required
    200 application/json
    {
      "id": "string",
      "isUnique": false
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/analytics/listing-click Log a listing CTA click None required
    200 application/json
    {
      "id": "string",
      "clickType": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/analytics/conversion Record a conversion event (server-side) None required
    200 application/json
    {
      "id": "string",
      "conversionType": "string",
      "status": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/analytics/me/listings/{id} Per-listing analytics (owner-only; admin can view any) None required
    200 application/json
    {
      "listingId": "string",
      "range": {
        "from7d": "string",
        "from30d": "string",
        "to": "string"
      },
      "views": {
        "total7d": "string" | 0,
        "unique7d": "string" | 0,
        "total30d": "string" | 0,
        "unique30d": "string" | 0,
        "totalAllTime": "string" | 0
      },
      "clicks": {
        "total30d": "string" | 0,
        "byType30d": {}
      },
      "conversions": {
        "total30d": "string" | 0,
        "byType30d": {},
        "byStatus30d": {}
      }
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/analytics/me/summary Caller-wide totals + top listings None required
    200 application/json
    {
      "listings": {
        "total": "string" | 0,
        "active": "string" | 0,
        "sold": "string" | 0
      },
      "totals": {
        "views30d": "string" | 0,
        "uniqueViews30d": "string" | 0,
        "clicks30d": "string" | 0,
        "contacts30d": "string" | 0,
        "conversions30d": "string" | 0
      },
      "topListings": [
        {
          "listingId": "string",
          "title": "string",
          "views30d": "string" | 0,
          "clicks30d": "string" | 0
        }
      ]
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/analytics/admin/overview Platform-wide overview (admin) None required
    200 application/json
    {
      "users": {
        "total": "string" | 0,
        "activeLast30d": "string" | 0
      },
      "listings": {
        "active": "string" | 0,
        "listedLast30d": "string" | 0,
        "soldLast30d": "string" | 0
      },
      "events": {
        "viewsLast30d": "string" | 0,
        "uniqueViewsLast30d": "string" | 0,
        "clicksLast30d": "string" | 0,
        "conversionsLast30d": "string" | 0
      },
      "revenue": {
        "mrrCents": "string" | 0,
        "paidLast30dCents": "string" | 0
      }
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }

admin

Moderation and platform management

  • GET /v1/admin/users List users with status filter None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "email": "string" | null,
          "firstName": "string",
          "lastName": "string",
          "role": "string" | "string" | "string",
          "status": "string" | "string" | "string" | "string",
          "isShadow": false,
          "lastLoginAt": "string" | null,
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/users/{id}/ban Ban user (status=SUSPENDED + revoke sessions) None required
    200 application/json
    {
      "id": "string",
      "email": "string" | null,
      "firstName": "string",
      "lastName": "string",
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "isShadow": false,
      "lastLoginAt": "string" | null,
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/users/{id}/unban Unban user None required
    200 application/json
    {
      "id": "string",
      "email": "string" | null,
      "firstName": "string",
      "lastName": "string",
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "isShadow": false,
      "lastLoginAt": "string" | null,
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/users/{id}/lock Lock user (status=INACTIVE + revoke sessions) None required
    200 application/json
    {
      "id": "string",
      "email": "string" | null,
      "firstName": "string",
      "lastName": "string",
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "isShadow": false,
      "lastLoginAt": "string" | null,
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/users/{id}/unlock Unlock user None required
    200 application/json
    {
      "id": "string",
      "email": "string" | null,
      "firstName": "string",
      "lastName": "string",
      "role": "string" | "string" | "string",
      "status": "string" | "string" | "string" | "string",
      "isShadow": false,
      "lastLoginAt": "string" | null,
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/users/{id}/identities List all channel identities for a user (includes external IDs) None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "userId": "string",
          "channel": "string" | "string",
          "externalId": "string",
          "metadata": {},
          "verifiedAt": "string" | null,
          "revokedAt": "string" | null,
          "createdAt": "string"
        }
      ]
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/users/merge Merge two user accounts (loser → winner) None required
    200 application/json
    {
      "winnerId": "string",
      "loserId": "string",
      "merged": false
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/listings List listings with status filter None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "sellerId": "string",
          "title": "string",
          "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
          "price": 0,
          "currency": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/listings/{id}/take-down Take down listing (status=removed) None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "price": 0,
      "currency": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/listings/{id}/reinstate Reinstate listing (status=published) None required
    200 application/json
    {
      "id": "string",
      "sellerId": "string",
      "title": "string",
      "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "price": 0,
      "currency": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/reports Reports queue (default: pending + under_review) None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "reporterId": "string",
          "reportedEntityType": "string" | "string" | "string" | "string",
          "reportedEntityId": "string",
          "reason": "string",
          "description": "string" | null,
          "status": "string" | "string" | "string" | "string",
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/reports/{id}/resolve Resolve a report None required
    200 application/json
    {
      "id": "string",
      "reporterId": "string",
      "reportedEntityType": "string" | "string" | "string" | "string",
      "reportedEntityId": "string",
      "reason": "string",
      "description": "string" | null,
      "status": "string" | "string" | "string" | "string",
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/system-configs List all system configs None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "category": "string" | "string" | "string" | "string" | "string" | "string" | "string",
          "key": "string",
          "value": "string",
          "type": "string" | "string" | "string" | "string",
          "description": "string",
          "isPublic": false,
          "isEditable": false,
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • PATCH /v1/admin/system-configs/{category}/{key} Patch system config value None required
    200 application/json
    {
      "id": "string",
      "category": "string" | "string" | "string" | "string" | "string" | "string" | "string",
      "key": "string",
      "value": "string",
      "type": "string" | "string" | "string" | "string",
      "description": "string",
      "isPublic": false,
      "isEditable": false,
      "updatedAt": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/audit Recent admin audit entries None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "moderatorId": "string",
          "moderatorEmail": "string" | null,
          "actionType": "string",
          "targetUserId": "string" | null,
          "targetEntityType": "string" | null,
          "targetEntityId": "string" | null,
          "reason": "string",
          "notes": "string" | null,
          "metadata": {} | null,
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/notification-templates/ List notification templates None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "category": "string",
          "locale": "string",
          "channel": "string",
          "subject": "string" | null,
          "title": "string" | null,
          "bodyText": "string",
          "bodyHtml": "string" | null,
          "replyTo": "string" | null,
          "priority": ... | ... | ... | ... | null,
          "updatedBy": "string" | null,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ]
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/notification-templates/ Create a template row None required
    201 application/json
    {
      "id": "string",
      "category": "string",
      "locale": "string",
      "channel": "string",
      "subject": "string" | null,
      "title": "string" | null,
      "bodyText": "string",
      "bodyHtml": "string" | null,
      "replyTo": "string" | null,
      "priority": "string" | "string" | "string" | "string" | null,
      "updatedBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/notification-templates/{id} Fetch one template None required
    200 application/json
    {
      "id": "string",
      "category": "string",
      "locale": "string",
      "channel": "string",
      "subject": "string" | null,
      "title": "string" | null,
      "bodyText": "string",
      "bodyHtml": "string" | null,
      "replyTo": "string" | null,
      "priority": "string" | "string" | "string" | "string" | null,
      "updatedBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • PUT /v1/admin/notification-templates/{id} Update a template (X-Confirm: true required in prod) None required
    200 application/json
    {
      "id": "string",
      "category": "string",
      "locale": "string",
      "channel": "string",
      "subject": "string" | null,
      "title": "string" | null,
      "bodyText": "string",
      "bodyHtml": "string" | null,
      "replyTo": "string" | null,
      "priority": "string" | "string" | "string" | "string" | null,
      "updatedBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    428 application/json
    {
      "error": "string",
      "code": "string"
    }
  • DELETE /v1/admin/notification-templates/{id} Delete a template (refused if last for category) None required
    200 application/json
    {
      "deleted": false,
      "id": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/notification-templates/preview Render a template against a payload (no persistence) None required
    200 application/json
    {
      "email": {
        "subject": "string",
        "text": "string",
        "html": "string",
        "replyTo": "string"
      },
      "push": {
        "title": "string",
        "body": "string"
      },
      "inApp": {
        "title": "string",
        "message": "string",
        "priority": "string" | "string" | "string" | "string"
      }
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }

payments

Stripe integration, subscriptions

  • POST /v1/payments/checkout/listing-boost Create a Stripe Checkout session for a listing boost None required
    200 application/json
    {
      "url": "string",
      "sessionId": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    502 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/payments/checkout/subscription Create a Stripe Checkout session for a subscription priceId None required
    200 application/json
    {
      "url": "string",
      "sessionId": "string"
    }
    400 application/json
    {
      "error": "string",
      "code": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    502 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/payments/me/subscription Current subscription state for caller None required
    200 application/json
    {
        "id": "string",
        "plan": "string" | "string" | "string",
        "status": "string" | "string" | "string" | "string" | "string" | "string" | "string",
        "billingInterval": "string" | "string",
        "price": 0,
        "currency": "string",
        "currentPeriodStart": "string" | null,
        "currentPeriodEnd": "string" | null,
        "trialEndsAt": "string" | null,
        "cancelAtPeriodEnd": false,
        "canceledAt": "string" | null
      } | null
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/payments/me/subscription/cancel Schedule cancel-at-period-end on the active subscription None required
    200 application/json
    {
      "cancelAtPeriodEnd": false,
      "currentPeriodEnd": "string" | null
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    502 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/payments/me/invoices Paginated invoices for caller None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "invoiceNumber": "string",
          "status": "string" | "string" | "string" | "string" | "string",
          "total": 0,
          "currency": "string",
          "dueDate": "string",
          "paidAt": "string" | null,
          "pdfUrl": "string" | null,
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/payments/webhook Stripe webhook (raw body, signature-verified, idempotent) None required
    200 application/octet-stream
    {
      "received": false,
      "eventId": "string",
      "duplicate": false
    }
    400 application/octet-stream
    {
      "received": false,
      "error": "string"
    }
    500 application/octet-stream
    {
      "received": false,
      "eventId": "string"
    }

valuations

Vehicle valuation ranges from listing comparables

  • POST /v1/valuations/ Compute a vehicle valuation (price range from comparables) None required
    200 application/json
    {
      "id": "string",
      "status": "string" | "string" | "string",
      "range": {
        "low": 0,
        "high": 0,
        "median": 0,
        "currency": "string"
      },
      "comparableCount": "string" | 0,
      "confidence": "string" | "string",
      "algorithmVersion": "string",
      "message": "string",
      "createdAt": "string"
    }
    422 application/json
    {
      "error": "string",
      "code": "string"
    }
    429 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/valuations/{id} Public valuation summary (anonymized) None required
    200 application/json
    {
      "id": "string",
      "status": "string" | "string" | "string",
      "range": {
        "low": 0,
        "high": 0,
        "median": 0,
        "currency": "string"
      },
      "comparableCount": "string" | 0,
      "confidence": "string" | "string",
      "algorithmVersion": "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "km": "string" | 0,
      "condition": "string" | "string" | "string" | "string" | null,
      "source": "string" | "string" | "string" | "string",
      "comparableListingIds": ["string"],
      "message": "string",
      "createdAt": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/me/valuations List valuations for the current user None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "status": "string" | "string" | "string",
          "range": {
            "low": 0,
            "high": 0,
            "median": 0,
            "currency": "string"
          },
          "comparableCount": "string" | 0,
          "confidence": "string" | "string",
          "algorithmVersion": "string",
          "message": "string",
          "createdAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/me/valuations/{id} Owner-scoped valuation detail with comparable IDs None required
    200 application/json
    {
      "id": "string",
      "status": "string" | "string" | "string",
      "range": {
        "low": 0,
        "high": 0,
        "median": 0,
        "currency": "string"
      },
      "comparableCount": "string" | 0,
      "confidence": "string" | "string",
      "algorithmVersion": "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "km": "string" | 0,
      "condition": "string" | "string" | "string" | "string" | null,
      "source": "string" | "string" | "string" | "string",
      "comparableListingIds": ["string"],
      "message": "string",
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/valuations/{id} Admin valuation detail with full audit trail None required
    200 application/json
    {
      "id": "string",
      "status": "string" | "string" | "string",
      "range": {
        "low": 0,
        "high": 0,
        "median": 0,
        "currency": "string"
      },
      "comparableCount": "string" | 0,
      "confidence": "string" | "string",
      "algorithmVersion": "string",
      "make": "string",
      "model": "string",
      "year": "string" | 0,
      "km": "string" | 0,
      "condition": "string" | "string" | "string" | "string" | null,
      "source": "string" | "string" | "string" | "string",
      "comparableListingIds": ["string"],
      "message": "string",
      "createdAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }

saved-searches

Saved search alerts and match notifications

  • GET /v1/me/search-alerts/ List saved searches for the current user None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "userId": "string",
          "name": "string" | null,
          "criteria": {
            "make": "string",
            "model": "string",
            "yearMin": ... | ...,
            "yearMax": ... | ...,
            "priceMin": 0,
            "priceMax": 0,
            "mileageMax": ... | ...,
            "fuelType": ... | ... | ... | ... | ... | ... | ...,
            "transmission": ... | ... | ... | ...,
            "driveType": ... | ... | ... | ...,
            "condition": ... | ... | ...,
            "country": "string",
            "location": "string"
          },
          "notifyChannels": ["string"],
          "isActive": false,
          "lastMatchAt": "string" | null,
          "matchCount": "string" | 0,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/me/search-alerts/ Create a saved search alert None required
    200 application/json
    {
      "id": "string",
      "userId": "string",
      "name": "string" | null,
      "criteria": {
        "make": "string",
        "model": "string",
        "yearMin": "string" | 0,
        "yearMax": "string" | 0,
        "priceMin": 0,
        "priceMax": 0,
        "mileageMax": "string" | 0,
        "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string",
        "transmission": "string" | "string" | "string" | "string",
        "driveType": "string" | "string" | "string" | "string",
        "condition": "string" | "string" | "string",
        "country": "string",
        "location": "string"
      },
      "notifyChannels": ["string"],
      "isActive": false,
      "lastMatchAt": "string" | null,
      "matchCount": "string" | 0,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    422 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/me/search-alerts/{id} Fetch one saved search by id (owner-scoped) None required
    200 application/json
    {
      "id": "string",
      "userId": "string",
      "name": "string" | null,
      "criteria": {
        "make": "string",
        "model": "string",
        "yearMin": "string" | 0,
        "yearMax": "string" | 0,
        "priceMin": 0,
        "priceMax": 0,
        "mileageMax": "string" | 0,
        "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string",
        "transmission": "string" | "string" | "string" | "string",
        "driveType": "string" | "string" | "string" | "string",
        "condition": "string" | "string" | "string",
        "country": "string",
        "location": "string"
      },
      "notifyChannels": ["string"],
      "isActive": false,
      "lastMatchAt": "string" | null,
      "matchCount": "string" | 0,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • PATCH /v1/me/search-alerts/{id} Update a saved search (criteria, name, channels, isActive) None required
    200 application/json
    {
      "id": "string",
      "userId": "string",
      "name": "string" | null,
      "criteria": {
        "make": "string",
        "model": "string",
        "yearMin": "string" | 0,
        "yearMax": "string" | 0,
        "priceMin": 0,
        "priceMax": 0,
        "mileageMax": "string" | 0,
        "fuelType": "string" | "string" | "string" | "string" | "string" | "string" | "string",
        "transmission": "string" | "string" | "string" | "string",
        "driveType": "string" | "string" | "string" | "string",
        "condition": "string" | "string" | "string",
        "country": "string",
        "location": "string"
      },
      "notifyChannels": ["string"],
      "isActive": false,
      "lastMatchAt": "string" | null,
      "matchCount": "string" | 0,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    422 application/json
    {
      "error": "string",
      "code": "string"
    }
  • DELETE /v1/me/search-alerts/{id} Delete a saved search None required
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/me/search-alerts/{id}/test Preview up to 5 listings matching the saved criteria (no notification) None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "title": "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0,
          "price": 0,
          "currency": "string",
          "mileage": "string" | 0,
          "location": "string"
        }
      ]
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }

inspections

Druveo Inspected booking, fulfillment, badge

  • POST /v1/inspections/ Book an inspection (status: pending) None required
    200 application/json
    {
      "id": "string",
      "requestedBy": "string",
      "listingId": "string" | null,
      "vehicleInfo": {
          "vin": "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0
        } | null,
      "locationAddress": "string",
      "locationLat": 0 | null,
      "locationLng": 0 | null,
      "countryCode": "string",
      "preferredDate": "string",
      "confirmedDate": "string" | null,
      "status": "string" | "string" | "string" | "string" | "string" | "string",
      "assignedInspector": "string" | null,
      "priceAmount": 0,
      "priceCurrency": "string",
      "paidAt": "string" | null,
      "paymentRef": "string" | null,
      "outcome": {} | null,
      "notes": "string" | null,
      "cancelledReason": "string" | null,
      "cancelledBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    422 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/inspections/me List the caller's inspections None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "requestedBy": "string",
          "listingId": "string" | null,
          "vehicleInfo": {
              "vin": ...,
              "make": ...,
              "model": ...,
              "year": ...
            } | null,
          "locationAddress": "string",
          "locationLat": 0 | null,
          "locationLng": 0 | null,
          "countryCode": "string",
          "preferredDate": "string",
          "confirmedDate": "string" | null,
          "status": "string" | "string" | "string" | "string" | "string" | "string",
          "assignedInspector": "string" | null,
          "priceAmount": 0,
          "priceCurrency": "string",
          "paidAt": "string" | null,
          "paymentRef": "string" | null,
          "outcome": {} | null,
          "notes": "string" | null,
          "cancelledReason": "string" | null,
          "cancelledBy": "string" | null,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/inspections/{id} Fetch one inspection (owner or admin) None required
    200 application/json
    {
      "id": "string",
      "requestedBy": "string",
      "listingId": "string" | null,
      "vehicleInfo": {
          "vin": "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0
        } | null,
      "locationAddress": "string",
      "locationLat": 0 | null,
      "locationLng": 0 | null,
      "countryCode": "string",
      "preferredDate": "string",
      "confirmedDate": "string" | null,
      "status": "string" | "string" | "string" | "string" | "string" | "string",
      "assignedInspector": "string" | null,
      "priceAmount": 0,
      "priceCurrency": "string",
      "paidAt": "string" | null,
      "paymentRef": "string" | null,
      "outcome": {} | null,
      "notes": "string" | null,
      "cancelledReason": "string" | null,
      "cancelledBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/inspections/{id}/cancel Cancel an inspection (owner or admin) None required
    200 application/json
    {
      "id": "string",
      "requestedBy": "string",
      "listingId": "string" | null,
      "vehicleInfo": {
          "vin": "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0
        } | null,
      "locationAddress": "string",
      "locationLat": 0 | null,
      "locationLng": 0 | null,
      "countryCode": "string",
      "preferredDate": "string",
      "confirmedDate": "string" | null,
      "status": "string" | "string" | "string" | "string" | "string" | "string",
      "assignedInspector": "string" | null,
      "priceAmount": 0,
      "priceCurrency": "string",
      "paidAt": "string" | null,
      "paymentRef": "string" | null,
      "outcome": {} | null,
      "notes": "string" | null,
      "cancelledReason": "string" | null,
      "cancelledBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/inspections/{id}/pay Start a Stripe Checkout session to pay for an inspection None required
    200 application/json
    {
      "url": "string",
      "sessionId": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
    502 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/admin/inspections/ Admin: list inspections with filters None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "requestedBy": "string",
          "listingId": "string" | null,
          "vehicleInfo": {
              "vin": ...,
              "make": ...,
              "model": ...,
              "year": ...
            } | null,
          "locationAddress": "string",
          "locationLat": 0 | null,
          "locationLng": 0 | null,
          "countryCode": "string",
          "preferredDate": "string",
          "confirmedDate": "string" | null,
          "status": "string" | "string" | "string" | "string" | "string" | "string",
          "assignedInspector": "string" | null,
          "priceAmount": 0,
          "priceCurrency": "string",
          "paidAt": "string" | null,
          "paymentRef": "string" | null,
          "outcome": {} | null,
          "notes": "string" | null,
          "cancelledReason": "string" | null,
          "cancelledBy": "string" | null,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/inspections/{id}/confirm Admin: confirm a pending inspection None required
    200 application/json
    {
      "id": "string",
      "requestedBy": "string",
      "listingId": "string" | null,
      "vehicleInfo": {
          "vin": "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0
        } | null,
      "locationAddress": "string",
      "locationLat": 0 | null,
      "locationLng": 0 | null,
      "countryCode": "string",
      "preferredDate": "string",
      "confirmedDate": "string" | null,
      "status": "string" | "string" | "string" | "string" | "string" | "string",
      "assignedInspector": "string" | null,
      "priceAmount": 0,
      "priceCurrency": "string",
      "paidAt": "string" | null,
      "paymentRef": "string" | null,
      "outcome": {} | null,
      "notes": "string" | null,
      "cancelledReason": "string" | null,
      "cancelledBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/inspections/{id}/complete Admin: mark a confirmed inspection completed None required
    200 application/json
    {
      "id": "string",
      "requestedBy": "string",
      "listingId": "string" | null,
      "vehicleInfo": {
          "vin": "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0
        } | null,
      "locationAddress": "string",
      "locationLat": 0 | null,
      "locationLng": 0 | null,
      "countryCode": "string",
      "preferredDate": "string",
      "confirmedDate": "string" | null,
      "status": "string" | "string" | "string" | "string" | "string" | "string",
      "assignedInspector": "string" | null,
      "priceAmount": 0,
      "priceCurrency": "string",
      "paidAt": "string" | null,
      "paymentRef": "string" | null,
      "outcome": {} | null,
      "notes": "string" | null,
      "cancelledReason": "string" | null,
      "cancelledBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }
  • POST /v1/admin/inspections/{id}/report Admin: submit inspection report (transitions completed -> reported) None required
    200 application/json
    {
      "id": "string",
      "requestedBy": "string",
      "listingId": "string" | null,
      "vehicleInfo": {
          "vin": "string",
          "make": "string",
          "model": "string",
          "year": "string" | 0
        } | null,
      "locationAddress": "string",
      "locationLat": 0 | null,
      "locationLng": 0 | null,
      "countryCode": "string",
      "preferredDate": "string",
      "confirmedDate": "string" | null,
      "status": "string" | "string" | "string" | "string" | "string" | "string",
      "assignedInspector": "string" | null,
      "priceAmount": 0,
      "priceCurrency": "string",
      "paidAt": "string" | null,
      "paymentRef": "string" | null,
      "outcome": {} | null,
      "notes": "string" | null,
      "cancelledReason": "string" | null,
      "cancelledBy": "string" | null,
      "createdAt": "string",
      "updatedAt": "string"
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
    409 application/json
    {
      "error": "string",
      "code": "string"
    }

messaging

Multi-channel messaging gateway (WhatsApp, Telegram)

  • GET /webhooks/whatsapp WhatsApp webhook verification challenge (Meta) None required
    200 application/json
    "string"
    403 application/json
    "string"
  • POST /webhooks/whatsapp WhatsApp webhook (signature-verified, ACK <500ms, async) None required
    200 application/octet-stream
    {
      "ok": false,
      "jobId": "string"
    }
    401 application/octet-stream
    {
      "ok": false,
      "jobId": "string"
    }
    404 application/octet-stream
    {
      "ok": false,
      "jobId": "string"
    }
  • POST /webhooks/telegram Telegram webhook (secret-token verified, ACK <500ms, async) None required
    200 application/octet-stream
    {
      "ok": false,
      "jobId": "string"
    }
    401 application/octet-stream
    {
      "ok": false,
      "jobId": "string"
    }
    404 application/octet-stream
    {
      "ok": false,
      "jobId": "string"
    }
  • GET /v1/messaging/conversations/me List the caller's messaging conversations None required
    200 application/json
    {
      "items": [
        {
          "id": "string",
          "userId": "string",
          "channel": "string" | "string",
          "status": "string" | "string" | "string",
          "lastInboundAt": "string" | null,
          "lastOutboundAt": "string" | null,
          "totalTokensIn": "string" | 0,
          "totalTokensOut": "string" | 0,
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "total": "string" | 0,
      "page": "string" | 0,
      "limit": "string" | 0,
      "hasNext": false
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
  • GET /v1/messaging/conversations/{id} Fetch one conversation with its message timeline (owner or admin) None required
    200 application/json
    {
      "conversation": {
        "id": "string",
        "userId": "string",
        "channel": "string" | "string",
        "status": "string" | "string" | "string",
        "lastInboundAt": "string" | null,
        "lastOutboundAt": "string" | null,
        "totalTokensIn": "string" | 0,
        "totalTokensOut": "string" | 0,
        "createdAt": "string",
        "updatedAt": "string"
      },
      "messages": {
        "items": [
          {
            "id": "string",
            "conversationId": "string",
            "channel": ... | ...,
            "direction": ... | ...,
            "status": ... | ... | ... | ... | ...,
            "text": ... | ...,
            "hasMedia": false,
            "createdAt": "string"
          }
        ],
        "total": "string" | 0,
        "page": "string" | 0,
        "limit": "string" | 0,
        "hasNext": false
      }
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }
    403 application/json
    {
      "error": "string",
      "code": "string"
    }
    404 application/json
    {
      "error": "string",
      "code": "string"
    }
  • DELETE /v1/messaging/me Purge the caller's messaging history (right-to-erasure stub for #62) None required
    200 application/json
    {
      "deleted": "string" | 0
    }
    401 application/json
    {
      "error": "string",
      "code": "string"
    }

Other

  • GET / None required
    No response body