Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.wilow.app/llms.txt

Use this file to discover all available pages before exploring further.

Available Days

Returns which days and periods are available for pickup, based on the number of orders in the selected plan.
GET /external-partner/subscription/available-days?orders_count={n}
Headers
HeaderValue
API-KEYYour partner API key
Accept-Languagear or en
Query Parameters
ParamRequiredNotes
orders_countUse plan_types[].orders_count from the selected plan type
Response
{
  "success": true,
  "data": [
    {
      "day_name": "Wednesday",
      "week_day": 3,
      "date": "2025-10-29",
      "is_today": false,
      "periods": [
        { "code": "morning", "name": "Morning", "period": "9 AM - 3 PM" },
        { "code": "evening", "name": "Evening", "period": "4 PM - 10 PM" }
      ]
    }
  ],
  "status_code": 200
}
Error — Location not covered (400)
{
  "success": false,
  "message": "Sorry but we don't cover your area yet"
}

Subscribe

Creates a subscription in draft state. The customer’s pickup schedule is set here.
POST /external-partner/subscription/subscribe
Headers
HeaderValue
AuthorizationBearer {customer_token}
Idempotency-KeyUnique UUID
Query Parameters (passed in URL, not body)
ParamRequiredNotes
plan_idFrom List Plans
plan_type_idFrom List Plans → plan_types
preferred_pickup_day✅*Day of week: monday, tuesday, etc.
preferred_pickup_date✅*Specific date: YYYY-MM-DD
preferred_pickup_periodmorning or evening
*Either preferred_pickup_day or preferred_pickup_date is required, not both. Response
{
  "success": true,
  "data": {
    "id": 5355,
    "total": 799,
    "orders_count": 4,
    "start_date": "2025-10-29T00:00:00.000000Z",
    "end_date": "2025-12-11T23:59:59.000000Z",
    "preferred_pickup_day": { "code": "monday", "name": "Monday" },
    "preferred_pickup_period": { "code": "evening", "name": "Evening", "period": "4 PM - 10 PM" },
    "state": { "code": "draft", "name": "Draft" }
  },
  "status_code": 200
}
The subscription is in draft — no pickups are scheduled until payment is confirmed.

Confirm Payment

Marks the subscription as paid and activates it. Call this after your payment flow completes.
POST /external-partner/subscription/confirm-payment
Headers
HeaderValue
AuthorizationBearer {customer_token}
Idempotency-KeyUnique UUID
Body multipart/form-data
FieldTypeRequiredNotes
subscription_idintegerFrom Subscribe response
reference_idstringYour payment gateway’s transaction reference
Response
{
  "success": true,
  "data": {
    "subscription": {
      "id": 5360,
      "total": 799,
      "orders_count": 4,
      "state": { "code": "active", "name": "Active" }
    },
    "invoice_url": "https://..."
  },
  "status_code": 200
}
Error — Already active (400)
{
  "success": false,
  "message": "This subscription is already active"
}