Logs API

Use the ExpressLogs API to check wallet balance, browse available log categories, purchase logs, and review your Logs order history from a server-side integration.

Base URLhttps://www.expresslogs.org/api/v1
FormatJSON
AuthenticationBearer token
Purchase safetyIdempotency key

Authentication

Generate a Logs API key from your buyer profile, then send it in every request using the Authorization header.

Header
Authorization: Bearer YOUR_API_KEY
Accept: application/json
Content-Type: application/json
GET

Wallet Balance

/wallet

Returns the authenticated user's wallet balance before placing an order.

cURL
curl -X GET "https://www.expresslogs.org/api/v1/wallet" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
200 Response
{
  "success": true,
  "data": {
    "user_id": 7,
    "name": "Buyer Name",
    "email": "buyer@example.com",
    "balance": "15000.00",
    "currency": "NGN"
  }
}
GET

Parent Categories

/logs/parent-categories

Returns active parent categories for building storefront filters.

cURL
curl -X GET "https://www.expresslogs.org/api/v1/logs/parent-categories" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
200 Response
{
  "success": true,
  "data": [
    {
      "id": 2,
      "name": "Accounts",
      "description": "Account log categories",
      "image": "https://www.expresslogs.org/storage/uploads/parent_categories/accounts.png",
      "available_categories_count": 8
    }
  ]
}
GET

Log Categories

/logs/categories

Lists active log categories with current price and available quantity.

QueryTypeDescription
per_pageintegerOptional. 1 to 100. Defaults to 25.
parent_category_idintegerOptional. Filter by parent category.
cURL
curl -X GET "https://www.expresslogs.org/api/v1/logs/categories?per_page=25&parent_category_id=2" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
200 Response
{
  "success": true,
  "data": [
    {
      "id": 12,
      "name": "Facebook Logs",
      "description": "Fresh account logs",
      "image": "https://www.expresslogs.org/storage/uploads/log_categories/facebook.png",
      "price": "2500.00",
      "currency": "NGN",
      "available_quantity": 34,
      "parent_category": {
        "id": 2,
        "name": "Accounts"
      }
    }
  ]
}
GET

Single Category

/logs/categories/{category}

Returns one category by ID. Purchased log details are only returned by the purchase endpoint.

cURL
curl -X GET "https://www.expresslogs.org/api/v1/logs/categories/12" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
200 Response
{
  "success": true,
  "data": {
    "id": 12,
    "name": "Facebook Logs",
    "price": "2500.00",
    "currency": "NGN",
    "available_quantity": 34
  }
}
POST

Purchase Logs

/logs/orders

Purchases logs from a category, deducts wallet balance, and returns the purchased details.

Use a unique idempotency_key for every checkout attempt. Reusing the same key with the same payload returns the original response; reusing it with different data is rejected.
BodyTypeDescription
category_idintegerRequired. Existing active log category ID.
quantityintegerRequired. Minimum 1, maximum 100.
idempotency_keystringRequired. Unique key for this checkout attempt.
cURL
curl -X POST "https://www.expresslogs.org/api/v1/logs/orders" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "category_id": 12,
    "quantity": 2,
    "idempotency_key": "website-order-20260507-0001"
  }'
201 Response
{
  "success": true,
  "data": {
    "order_id": "logs-api-ABC1234567-1778112000",
    "status": "completed",
    "product_id": 12,
    "product_name": "Facebook Logs",
    "quantity": 2,
    "unit_price": "2500.00",
    "total": "5000.00",
    "currency": "NGN",
    "balance_after": "10000.00",
    "items": [
      {
        "serial": 1,
        "details": "purchased log details",
        "video": null
      }
    ]
  }
}
GET

Log Orders

/logs/orders

Lists completed Logs orders for the authenticated user.

cURL
curl -X GET "https://www.expresslogs.org/api/v1/logs/orders" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
200 Response
{
  "success": true,
  "data": [
    {
      "order_id": "logs-api-ABC1234567-1778112000",
      "status": "completed",
      "product_id": 12,
      "product_name": "Facebook Logs",
      "quantity": 2,
      "unit_price": "2500.00",
      "total": "5000.00",
      "currency": "NGN",
      "created_at": "2026-05-07T12:00:00.000000Z"
    }
  ]
}

Error Responses

Errors return JSON with a stable code and readable message.

Error Format
{
  "success": false,
  "status": 402,
  "message": "Insufficient wallet balance.",
  "code": "INSUFFICIENT_BALANCE"
}
UNAUTHENTICATEDThe bearer token is missing, invalid, or revoked.
VALIDATION_FAILEDOne or more request fields are missing or invalid.
LOG_CATEGORY_NOT_FOUNDThe category does not exist or is unavailable.
INSUFFICIENT_BALANCEThe wallet balance cannot cover the purchase.
OUT_OF_STOCKThere are not enough logs in the selected category.
IDEMPOTENCY_KEY_REUSEDThe idempotency key was used for a different request.
USER_DISABLEDThe buyer account is disabled.
USER_BANNEDThe buyer account is banned.