7feastr
Get Rate & ETAAPITrack ShipmentContactBlog
LoginRegister
Documentation/Logistics API
Errors & rate limitsMenu
Overview

Get started

Getting startedAuthenticationSandbox and production

Plan your integration

Coverage & delivery timesPricing

API reference

Quotes & shipmentsTrackingWallet & disputes

Integrate

WebhooksErrors & rate limits

Resources

Changelog
K
Overview

Get started

Getting startedAuthenticationSandbox and production

Plan your integration

Coverage & delivery timesPricing

API reference

Quotes & shipmentsTrackingWallet & disputes

Integrate

WebhooksErrors & rate limits

Resources

Changelog
7feastr

Nigeria's food delivery and logistics infrastructure. Order from your favourite local restaurants, or ship anywhere in the country with 7feastr Logistics.

support@7feastr.com
+234 905 606 2230
Lagos, Nigeria

Company

  • About Us
  • Blog

Services

  • Nearby Restaurants
  • Logistics
  • Track Shipment
  • API Documentation

Food in Kaduna

  • Food Delivery in Kaduna
  • Shawarma
  • Jollof Rice
  • Chicken
  • Suya & Grills
  • Pizza
  • Swallow & Soup

Partners

  • Become an Agent
  • Become an Ambassador

Support

  • FAQ
  • Contact
  • System status
  • Privacy Policy
  • Terms of Service
  • Monetary Policy
  • Refund Policy

© 2026 7feastr Technologies Ltd. All rights reserved.

Integrate

Errors & rate limits

The error envelope, every error code with its HTTP status, retry guidance and request limits.

Last updated 21 October 2026

Every error uses the same envelope, with a stable machine-readable code and a human-readable message.

Error envelope

JSON
{
  "success": false,
  "error": {
    "code": "unserviceable",
    "message": "We don't deliver to Kebbi yet"
  }
}
FieldTypeDescription
successbooleanAlways false for errors
error.codestringOne of the codes below. Branch your logic on this
error.messagestringA readable explanation. Its wording can change, so log or display it but don't parse it

Error codes

HTTPerror.codeWhen
400invalid_requestMissing or invalid field, expired quote, cancel not allowed now
401authentication_errorMissing, invalid or revoked API key
401environment_mismatchKey environment doesn't match the resource
402insufficient_fundsWallet balance too low
403permission_errorProduction not enabled (KYB pending), merchant suspended
404not_foundUnknown shipment / resource
409invalid_requestConflict (e.g. shipment changed concurrently, or can no longer be cancelled)
422unserviceableWe don't deliver to that state or address yet
429rate_limitedToo many requests
503service_unavailableDelivery network temporarily unavailable; retry with backoff
500api_errorUnexpected error

Handling errors

CodeWhat to do
invalid_requestFix the request. For an expired or used quote, request a new one
authentication_error, environment_mismatchCheck that you are sending the right key for the environment, and that it hasn't been revoked
insufficient_fundsFund your wallet, then request a new quote. Nothing was created or charged
permission_errorFinish business verification, or contact support if your account is suspended
not_foundCheck the ID, and that you are using a key from the environment the resource was created in
unserviceableAsk your customer for a different address. Nothing was charged
rate_limitedSlow down and retry after a short wait
service_unavailableRetry with exponential backoff. On POST /shipments, reuse the same Idempotency-Key
api_errorRetry with backoff. Contact support if it persists

Tip

Safe to retry: 429, 503 and 500. Retry POST /shipments only with the same Idempotency-Key, so a retry can never create or charge a second shipment.

Rate limits

ScopeLimitKeyed by
Authenticated API300 requests per minuteAPI key
Public POST /rate-check8 requests per minuteIP address
Public GET /track/:trackingCode and GET /status30 requests per minuteIP address

Authenticated limits are counted per key, not per IP, so several servers sharing one key share its limit. Responses include standard RateLimit-* headers so you can see how much of the window is left. Over the limit, the API returns 429:

JSON
{
  "success": false,
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Please slow down and retry after a moment."
  }
}

Public endpoints

These endpoints need no API key:

MethodPathPurpose
GET/track/:trackingCodePublic tracking. See Tracking
POST/rate-checkA public price check with the same fields as POST /rates/estimate, priced like production. No quote is saved, so it returns no quoteId
GET/statusPublic system status, the same data as 7feastr.com/status

Use the authenticated POST /rates/estimate in your integration. /rate-check is meant for quick price checks, such as a calculator on your website.

PreviousWebhooksNext Changelog

On this page

  • Error envelope
  • Error codes
  • Handling errors
  • Rate limits
  • Public endpoints