{"openapi":"3.0.3","info":{"title":"LogisKit merchant API","version":"1.0.0","description":"Integrate delivery booking with your store's LogisKit account.\n\n## Authentication\nEnable merchant API access and create a live key in your store dashboard. Send it in the X-Api-Key header on every request. Keys begin with lk_live_ and belong to one store. Keep keys on your server.\n\n## Booking flow\n1. Check available credit with GET /v1/balance.\n2. Request a quote with POST /v1/job-quotes. Quotes expire after five minutes.\n3. Book with POST /v1/jobs using the returned quote ID, contacts, and an Idempotency-Key.\n4. Poll GET /v1/jobs/{id} for status and handoff verification. Cancel with POST /v1/jobs/{id}/cancel when the job state allows it.\n\n## Conventions\nResponses wrap results in data. Errors contain error and code, with optional validation details. New money fields ending in Minor are integer paise in INR: 100 paise = 1 rupee. The legacy packageValue field is in rupees. Distances are meters, weights are grams, and timestamps are ISO 8601 strings. Phone inputs accept Indian mobile numbers and normalize to +91.\n\n## Limits and retries\nLimits apply per store, including across its API keys. Quotes, bookings, and cancellations each allow 10 requests per minute. Reads share 60 requests per minute. On 429, wait for Retry-After seconds. Retry an uncertain booking with the same Idempotency-Key and payload. A new key can create another booking. A changed payload with the same key returns 409.\n\nThe interactive console sends real requests to this API. Bookings and cancellations affect your store. API keys are not persisted by this page."},"paths":{"/v1/job-quotes":{"post":{"responses":{"201":{"description":"Quote created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"distanceMeters":{"type":"integer","minimum":0},"chargeMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string","format":"date-time"},"currency":{"type":"string","enum":["INR"]},"provider":{"type":"string","enum":["logiskit_fleet"]}},"required":["id","distanceMeters","chargeMinor","expiresAt","currency","provider"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Invalid JSON, input, or pagination","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"401":{"description":"Missing or invalid API key, or API access disabled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"403":{"description":"API access disabled or key revoked during the request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"422":{"description":"Outside the service area or route outside service limits","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"429":{"description":"Store request limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"503":{"description":"Service temporarily unavailable; retry later","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}}},"operationId":"createQuote","security":[{"MerchantApiKey":[]}],"tags":["Quotes"],"summary":"Get a delivery quote","description":"Quotes expire after five minutes. Both stops must be in the same supported Nearby zone. Limits: 10 quote requests per store per minute. Amounts are integer paise; distances are meters.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pickupAddress":{"type":"string","minLength":1,"maxLength":500},"pickupCity":{"type":"string","minLength":1,"maxLength":100},"pickupPincode":{"anyOf":[{"type":"string","pattern":"^(?:[0-9]{6})$"},{"type":"string","minLength":0,"maxLength":0}]},"pickupLatitude":{"type":"number","minimum":-90,"maximum":90},"pickupLongitude":{"type":"number","minimum":-180,"maximum":180},"dropAddress":{"type":"string","minLength":1,"maxLength":500},"dropCity":{"type":"string","minLength":1,"maxLength":100},"dropPincode":{"anyOf":[{"type":"string","pattern":"^(?:[0-9]{6})$"},{"type":"string","minLength":0,"maxLength":0}]},"dropLatitude":{"type":"number","minimum":-90,"maximum":90},"dropLongitude":{"type":"number","minimum":-180,"maximum":180},"packageDescription":{"type":"string","maxLength":500},"packageWeightGrams":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":100000},"packageValueMinor":{"type":"integer","minimum":-9007199254740991,"maximum":100000000}},"required":["pickupAddress","pickupLatitude","pickupLongitude","dropAddress","dropLatitude","dropLongitude"],"additionalProperties":false},"example":{"pickupAddress":"10 Temple Road","pickupCity":"Tirupati","pickupPincode":"517501","pickupLatitude":13.6288,"pickupLongitude":79.4192,"dropAddress":"24 Railway Station Road","dropCity":"Tirupati","dropPincode":"517501","dropLatitude":13.622,"dropLongitude":79.425,"packageDescription":"Two meals","packageWeightGrams":1000,"packageValueMinor":45000}}}}}},"/v1/balance":{"get":{"responses":{"200":{"description":"Store balance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiEnabled":{"type":"boolean"},"balanceMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"reservedMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"availableMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string","enum":["INR"]}},"required":["apiEnabled","balanceMinor","reservedMinor","availableMinor","currency"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Invalid JSON, input, or pagination","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"401":{"description":"Missing or invalid API key, or API access disabled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"403":{"description":"API access disabled or key revoked during the request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"429":{"description":"Store request limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"503":{"description":"Service temporarily unavailable; retry later","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}}},"operationId":"getBalance","security":[{"MerchantApiKey":[]}],"tags":["Balance"],"summary":"Check available credit","description":"Amounts are integer paise in INR. availableMinor is the credit available for new bookings after reservations. Shares the read limit of 60 requests per store per minute."}},"/v1/jobs":{"get":{"responses":{"200":{"description":"Jobs and pagination","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"externalOrderId":{"type":"string","nullable":true},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"agentId":{"type":"string","nullable":true},"dropName":{"type":"string"},"dropAddress":{"type":"string"},"dropCity":{"type":"string","nullable":true},"dropPincode":{"type":"string","nullable":true},"dropPhone":{"type":"string"},"packageDescription":{"type":"string","nullable":true},"chargeMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"settlement":{"type":"string","enum":["reserved","review","captured","released"],"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","externalOrderId","status","agentId","dropName","dropAddress","dropCity","dropPincode","dropPhone","packageDescription","chargeMinor","settlement","createdAt","updatedAt"],"additionalProperties":false}},"limit":{"type":"integer"},"offset":{"type":"integer"}},"required":["data","limit","offset"],"additionalProperties":false}}}},"400":{"description":"Invalid JSON, input, or pagination","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"401":{"description":"Missing or invalid API key, or API access disabled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"403":{"description":"API access disabled or key revoked during the request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"429":{"description":"Store request limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"503":{"description":"Service temporarily unavailable; retry later","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}}},"operationId":"listJobs","security":[{"MerchantApiKey":[]}],"tags":["Jobs"],"summary":"List your deliveries","description":"Returns quote-backed jobs for your store, newest first. Use limit and offset to paginate. All read endpoints share a limit of 60 requests per store per minute.","parameters":[{"name":"status","in":"query","schema":{"anyOf":[{"not":{}},{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]}]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100000,"default":0}}]},"post":{"responses":{"200":{"description":"Existing booking returned on an idempotent retry","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"externalOrderId":{"type":"string","nullable":true},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"agentId":{"type":"string","nullable":true},"dropName":{"type":"string"},"dropAddress":{"type":"string"},"dropCity":{"type":"string","nullable":true},"dropPincode":{"type":"string","nullable":true},"dropPhone":{"type":"string"},"packageDescription":{"type":"string","nullable":true},"chargeMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"settlement":{"type":"string","enum":["reserved","review","captured","released"],"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pickupName":{"type":"string","nullable":true},"pickupAddress":{"type":"string"},"pickupCity":{"type":"string","nullable":true},"pickupPincode":{"type":"string","nullable":true},"pickupPhone":{"type":"string","nullable":true},"pickupLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"pickupLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"dropLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"dropLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"packageWeight":{"type":"string","nullable":true},"packageWeightGrams":{"type":"integer","nullable":true},"packageValue":{"type":"number","nullable":true},"packageValueMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"riderLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"accuracy":{"type":"number","minimum":0,"nullable":true},"recordedAt":{"type":"string","format":"date-time"}},"required":["latitude","longitude","accuracy","recordedAt"],"additionalProperties":false,"nullable":true},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"actor":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","status","actor","note","createdAt"],"additionalProperties":false}},"verification":{"type":"object","properties":{"testMode":{"type":"boolean"},"pickup":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false},"delivery":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false}},"required":["testMode","pickup","delivery"],"additionalProperties":false}},"required":["id","externalOrderId","status","agentId","dropName","dropAddress","dropCity","dropPincode","dropPhone","packageDescription","chargeMinor","settlement","createdAt","updatedAt","pickupName","pickupAddress","pickupCity","pickupPincode","pickupPhone","pickupLatitude","pickupLongitude","dropLatitude","dropLongitude","packageWeight","packageWeightGrams","packageValue","packageValueMinor","riderLocation","events","verification"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"201":{"description":"Job created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"externalOrderId":{"type":"string","nullable":true},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"agentId":{"type":"string","nullable":true},"dropName":{"type":"string"},"dropAddress":{"type":"string"},"dropCity":{"type":"string","nullable":true},"dropPincode":{"type":"string","nullable":true},"dropPhone":{"type":"string"},"packageDescription":{"type":"string","nullable":true},"chargeMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"settlement":{"type":"string","enum":["reserved","review","captured","released"],"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pickupName":{"type":"string","nullable":true},"pickupAddress":{"type":"string"},"pickupCity":{"type":"string","nullable":true},"pickupPincode":{"type":"string","nullable":true},"pickupPhone":{"type":"string","nullable":true},"pickupLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"pickupLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"dropLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"dropLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"packageWeight":{"type":"string","nullable":true},"packageWeightGrams":{"type":"integer","nullable":true},"packageValue":{"type":"number","nullable":true},"packageValueMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"riderLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"accuracy":{"type":"number","minimum":0,"nullable":true},"recordedAt":{"type":"string","format":"date-time"}},"required":["latitude","longitude","accuracy","recordedAt"],"additionalProperties":false,"nullable":true},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"actor":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","status","actor","note","createdAt"],"additionalProperties":false}},"verification":{"type":"object","properties":{"testMode":{"type":"boolean"},"pickup":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false},"delivery":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false}},"required":["testMode","pickup","delivery"],"additionalProperties":false}},"required":["id","externalOrderId","status","agentId","dropName","dropAddress","dropCity","dropPincode","dropPhone","packageDescription","chargeMinor","settlement","createdAt","updatedAt","pickupName","pickupAddress","pickupCity","pickupPincode","pickupPhone","pickupLatitude","pickupLongitude","dropLatitude","dropLongitude","packageWeight","packageWeightGrams","packageValue","packageValueMinor","riderLocation","events","verification"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Invalid JSON, input, or pagination","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"401":{"description":"Missing or invalid API key, or API access disabled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"403":{"description":"API access disabled or key revoked during the request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"404":{"description":"Quote not found for this store","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"409":{"description":"Idempotency conflict, quote expired or used, or delivery zone changed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"422":{"description":"Insufficient credit","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"429":{"description":"Store request limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"503":{"description":"Service temporarily unavailable; retry later","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}}},"operationId":"createJob","security":[{"MerchantApiKey":[]}],"tags":["Jobs"],"summary":"Book a quoted delivery","description":"Use an unexpired quote and enough available credit. Retry the same normalized payload with the same Idempotency-Key to retrieve the existing job. Reusing the key with different details returns 409. Limits: 10 booking requests per store per minute.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"},"example":"order-1001"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quoteId":{"type":"string","format":"uuid"},"externalOrderId":{"type":"string","minLength":1,"maxLength":200},"pickupName":{"type":"string","minLength":1,"maxLength":100},"pickupPhone":{"type":"string","pattern":"^(?:\\s*(?:(?:\\+?91|0)[\\s\\-]*)?[6-9](?:[\\s\\-]*[0-9]){9}\\s*)$"},"dropName":{"type":"string","minLength":1,"maxLength":100},"dropPhone":{"type":"string","pattern":"^(?:\\s*(?:(?:\\+?91|0)[\\s\\-]*)?[6-9](?:[\\s\\-]*[0-9]){9}\\s*)$"}},"required":["quoteId","externalOrderId","pickupName","pickupPhone","dropName","dropPhone"],"additionalProperties":false},"example":{"quoteId":"b563f6b5-413a-4a2d-9425-66f66d16bb9d","externalOrderId":"order-1001","pickupName":"Restaurant","pickupPhone":"+919876543210","dropName":"Customer","dropPhone":"+919876543211"}}}}}},"/v1/jobs/{id}/cancel":{"post":{"responses":{"200":{"description":"Cancelled delivery","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"externalOrderId":{"type":"string","nullable":true},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"agentId":{"type":"string","nullable":true},"dropName":{"type":"string"},"dropAddress":{"type":"string"},"dropCity":{"type":"string","nullable":true},"dropPincode":{"type":"string","nullable":true},"dropPhone":{"type":"string"},"packageDescription":{"type":"string","nullable":true},"chargeMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"settlement":{"type":"string","enum":["reserved","review","captured","released"],"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pickupName":{"type":"string","nullable":true},"pickupAddress":{"type":"string"},"pickupCity":{"type":"string","nullable":true},"pickupPincode":{"type":"string","nullable":true},"pickupPhone":{"type":"string","nullable":true},"pickupLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"pickupLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"dropLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"dropLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"packageWeight":{"type":"string","nullable":true},"packageWeightGrams":{"type":"integer","nullable":true},"packageValue":{"type":"number","nullable":true},"packageValueMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"riderLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"accuracy":{"type":"number","minimum":0,"nullable":true},"recordedAt":{"type":"string","format":"date-time"}},"required":["latitude","longitude","accuracy","recordedAt"],"additionalProperties":false,"nullable":true},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"actor":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","status","actor","note","createdAt"],"additionalProperties":false}},"verification":{"type":"object","properties":{"testMode":{"type":"boolean"},"pickup":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false},"delivery":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false}},"required":["testMode","pickup","delivery"],"additionalProperties":false}},"required":["id","externalOrderId","status","agentId","dropName","dropAddress","dropCity","dropPincode","dropPhone","packageDescription","chargeMinor","settlement","createdAt","updatedAt","pickupName","pickupAddress","pickupCity","pickupPincode","pickupPhone","pickupLatitude","pickupLongitude","dropLatitude","dropLongitude","packageWeight","packageWeightGrams","packageValue","packageValueMinor","riderLocation","events","verification"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Job cannot be cancelled in its current state","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"401":{"description":"Missing or invalid API key, or API access disabled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"403":{"description":"API access disabled or key revoked during the request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"404":{"description":"Job not found for this store","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"409":{"description":"Parcel return required or job changed during cancellation","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"429":{"description":"Store request limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"503":{"description":"Service temporarily unavailable; retry later","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}}},"operationId":"cancelJob","security":[{"MerchantApiKey":[]}],"tags":["Jobs"],"summary":"Cancel a delivery","description":"Cancellation depends on the current job status. Limits: 10 cancellation requests per store per minute.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/v1/jobs/{id}":{"get":{"responses":{"200":{"description":"Delivery details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"externalOrderId":{"type":"string","nullable":true},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"agentId":{"type":"string","nullable":true},"dropName":{"type":"string"},"dropAddress":{"type":"string"},"dropCity":{"type":"string","nullable":true},"dropPincode":{"type":"string","nullable":true},"dropPhone":{"type":"string"},"packageDescription":{"type":"string","nullable":true},"chargeMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"settlement":{"type":"string","enum":["reserved","review","captured","released"],"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pickupName":{"type":"string","nullable":true},"pickupAddress":{"type":"string"},"pickupCity":{"type":"string","nullable":true},"pickupPincode":{"type":"string","nullable":true},"pickupPhone":{"type":"string","nullable":true},"pickupLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"pickupLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"dropLatitude":{"type":"number","minimum":-90,"maximum":90,"nullable":true},"dropLongitude":{"type":"number","minimum":-180,"maximum":180,"nullable":true},"packageWeight":{"type":"string","nullable":true},"packageWeightGrams":{"type":"integer","nullable":true},"packageValue":{"type":"number","nullable":true},"packageValueMinor":{"type":"integer","minimum":0,"maximum":9007199254740991,"nullable":true},"riderLocation":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"accuracy":{"type":"number","minimum":0,"nullable":true},"recordedAt":{"type":"string","format":"date-time"}},"required":["latitude","longitude","accuracy","recordedAt"],"additionalProperties":false,"nullable":true},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["created","queued","picked_by_agent","booking_in_progress","booked","pickup_completed","delivered","failed","cancelled"]},"actor":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","status","actor","note","createdAt"],"additionalProperties":false}},"verification":{"type":"object","properties":{"testMode":{"type":"boolean"},"pickup":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false},"delivery":{"type":"object","properties":{"status":{"type":"string","enum":["pending","active","expired","verified","locked","unavailable"]},"code":{"type":"string","pattern":"^\\d{4}$","nullable":true},"expiresAt":{"type":"string","format":"date-time","nullable":true},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["status","code","expiresAt","verifiedAt"],"additionalProperties":false}},"required":["testMode","pickup","delivery"],"additionalProperties":false}},"required":["id","externalOrderId","status","agentId","dropName","dropAddress","dropCity","dropPincode","dropPhone","packageDescription","chargeMinor","settlement","createdAt","updatedAt","pickupName","pickupAddress","pickupCity","pickupPincode","pickupPhone","pickupLatitude","pickupLongitude","dropLatitude","dropLongitude","packageWeight","packageWeightGrams","packageValue","packageValueMinor","riderLocation","events","verification"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Invalid JSON, input, or pagination","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"401":{"description":"Missing or invalid API key, or API access disabled","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"403":{"description":"API access disabled or key revoked during the request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"404":{"description":"Job not found for this store","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"429":{"description":"Store request limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Unexpected server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}},"503":{"description":"Service temporarily unavailable; retry later","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{"type":"object","properties":{"formErrors":{"type":"array","items":{"type":"string"}},"fieldErrors":{"type":"object","additionalProperties":{"anyOf":[{"not":{}},{"type":"array","items":{"type":"string"}}]}}},"required":["formErrors","fieldErrors"],"additionalProperties":false}},"required":["error","code"],"additionalProperties":false}}}}},"operationId":"getJob","security":[{"MerchantApiKey":[]}],"tags":["Jobs"],"summary":"Get delivery details","description":"Includes status history and handoff verification. Rider location is available only during an active assignment. Verification codes can be null depending on their state and visibility. Shares the read limit of 60 requests per store per minute.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}}},"servers":[{"url":"/","description":"This LogisKit API instance"}],"tags":[{"name":"Quotes"},{"name":"Jobs"},{"name":"Balance"}],"components":{"securitySchemes":{"MerchantApiKey":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"Live merchant API key from your store dashboard"}}}}