Skip to main content
Complete reference for all SmartMenu API error codes and how to handle them.

Error Response Format

All errors follow the standard GraphQL error format:

Authentication Errors

MISSING_HEADER

HTTP Status: 400 Bad Request A required header was not included in the request.
Required Headers:
  • Authorization - API key
  • Content-Type - application/json
  • X-Session-ID - Session identifier from startSession
Resolution: Include all required headers in your request.

INVALID_TOKEN

HTTP Status: 401 Unauthorized The API key is invalid, malformed, or expired.
Common Causes:
  • Typo in the API key
  • Using staging key with production endpoint (or vice versa)
  • Key has been revoked
  • Key has expired
Resolution: Verify your API key is correct and matches your environment.

FORBIDDEN

HTTP Status: 403 Forbidden The API key doesn’t have permission for the requested operation.
Common Causes:
  • Accessing a chain not assigned to your partner account
  • Attempting admin operations with a read-only key
Resolution: Contact EveryBite to request access to additional chains.

Validation Errors

INVALID_INPUT

HTTP Status: 400 Bad Request A request parameter is malformed or invalid.
Common Causes:
  • Negative values for ranges
  • Invalid enum values
  • Missing required fields
  • Malformed JSON
Resolution: Check the request format against the API documentation.

CHAIN_NOT_FOUND

HTTP Status: 404 Not Found The specified chain ID doesn’t exist.
Resolution: Verify the chain ID is correct. Contact EveryBite if you believe the chain should exist.

DISH_NOT_FOUND

HTTP Status: 404 Not Found The specified dish ID doesn’t exist or is no longer available.
Common Causes:
  • Dish has been removed from the menu
  • Incorrect dish ID
  • Using EveryBite ID when partner ID expected (or vice versa)
Resolution: Handle gracefully in your UI. Display “Item no longer available.”

RESTAURANT_NOT_FOUND

HTTP Status: 404 Not Found The specified restaurant/location ID doesn’t exist.
Resolution: Verify the restaurant ID matches your ordering system.

Rate Limiting

RATE_LIMITED

HTTP Status: 429 Too Many Requests You’ve exceeded your rate limit.
Response Headers:
Resolution: Wait for the retryAfter seconds before retrying. Consider implementing request batching or caching filter options.

Server Errors

INTERNAL_ERROR

HTTP Status: 500 Internal Server Error An unexpected error occurred on the server.
Resolution: Retry with exponential backoff. If the error persists, contact support with the requestId.

SERVICE_UNAVAILABLE

HTTP Status: 503 Service Unavailable The service is temporarily unavailable.
Common Causes:
  • Planned maintenance
  • Temporary overload
  • Dependency failure
Resolution: Retry with exponential backoff. Check status.everybite.com for service status.

Data Errors

NUTRITION_NOT_AVAILABLE

HTTP Status: 200 (partial response) Nutrition data is not available for a dish. This is not an error per se, but the nutrition field will be null.
Resolution: Handle gracefully in your UI. Display “Nutrition information not available.”

MATCH_NOT_POSSIBLE

HTTP Status: 200 (informational) The dish cannot be matched due to missing data.
Resolution: Display the dish but indicate nutrition is unavailable.

Error Handling Quick Reference


Support

If you encounter persistent errors:
  1. Note the requestId from the error response
  2. Check status.everybite.com for outages
  3. Contact api-partnerships@everybite.com with:
    • Error code and message
    • Request ID
    • Timestamp
    • Request details (redact sensitive data)