Skip to content

Errors & Rate Limits

Error Responses

All error responses follow a consistent format:

json
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message"
  }
}

401 Unauthorized

Missing or invalid API key.

json
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or expired API key"
  }
}

Troubleshooting:

  • Verify the header name is exactly x-partner-api-key
  • Check the complete API key hasn't been truncated
  • Confirm the key hasn't been revoked or expired
  • Ensure you're using the correct environment key — staging keys (flyfru_pk_stag_) only work with https://dev-app.flyfruition.com, production keys (flyfru_pk_live_) only work with https://app.flyfruition.com
  • Keys must start with the flyfru_pk_ prefix and are ~45-50 characters long
  • Check for accidental whitespace in the key value

403 Access Denied

Partner doesn't have access to the requested airport or scope.

json
{
  "success": false,
  "error": {
    "code": "ACCESS_DENIED",
    "message": "Partner does not have access to LAX content"
  }
}

Troubleshooting:

  • Verify which airports your partner account has access to
  • Check that the "content" scope is enabled for that airport
  • Make sure the airport code is correct (e.g., DEN not denver)
  • Contact your FlyFruition administrator to request additional airport access

429 Rate Limited

Too many requests.

json
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests",
    "retryAfter": 45
  }
}

Troubleshooting:

  • Wait for the number of seconds indicated by retryAfter before retrying
  • Implement exponential backoff in your client (see Best Practices)
  • Cache responses to reduce API calls
  • Contact FlyFruition to request higher rate limits if needed

500 Internal Error

Server-side error.

json
{
  "success": false,
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Failed to fetch content"
  }
}

Troubleshooting:


Rate Limits

LimitDefaultDescription
Per Minute100Maximum requests per minute per API key
Per Day10,000Maximum requests per day per API key

Rate Limit Headers

Every response includes these headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed per minute
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the limit resets
X-Response-TimeServer response time (e.g., 45ms)
Retry-AfterSeconds to wait (only present on 429 responses)

Common Issues

No Results Returned

If total is 0 or the results array is empty:

  • Search query too specific — try broader terms or remove the q parameter to see all content
  • Invalid content type filter — use valid types: page, news, faq, shopping, dining, amenity, parking-transportation, event
  • Modified since date too recent — use an older date or remove the filter
  • Wrong airport code — verify the code is correct (e.g., den not denver)

Slow Response Times

If requests are taking more than 3-5 seconds:

  • Reduce the size parameter
  • Use includeBody=false for listing views
  • Simplify search terms or use content type filters to narrow results
  • Check the status page for service issues

Content Issues

Content is outdated — Content syncs from WordPress periodically. Use modifiedSince to check for recent changes. For urgent updates, contact support.

Missing metadata fields — Not all content types have the same metadata schema. Always check if fields exist before using them:

javascript
const phone = item.metadata?.phone_number;
const hours = item.metadata?.hours_of_operation;

HTML in content field — The content field contains HTML from WordPress. Strip tags if you need plain text:

javascript
function stripHtml(html) {
  return html.replace(/<[^>]*>/g, '');
}

CORS Issues (Browser Clients)

If you see Access-Control-Allow-Origin errors:

  1. Recommended: Call the API from your backend server, not directly from the browser
  2. Contact FlyFruition to add your domain to the CORS allowlist
  3. Use a proxy server

SSL/TLS Issues

If you encounter certificate errors:

  • Update your SSL/TLS libraries
  • Sync your server clock with NTP
  • Check proxy/firewall settings
  • Never disable SSL verification in production

Encoding Issues

If special characters appear garbled:

  • Ensure your client handles UTF-8
  • URL-encode query parameters properly:
javascript
const query = 'cafe & terminal';
const url = `/api/v1/partner/DEN/content?q=${encodeURIComponent(query)}`;

Debugging Checklist

When encountering issues, verify:

  • [ ] API key is complete and not truncated
  • [ ] Using the correct environment (staging key for staging URL, production key for production URL)
  • [ ] Header name is x-partner-api-key
  • [ ] Airport code is valid
  • [ ] Partner has access to the requested airport
  • [ ] "content" scope is enabled for the airport
  • [ ] Rate limits are not exceeded
  • [ ] Query parameters are URL-encoded
  • [ ] Network connectivity is working
  • [ ] No proxy or firewall is blocking requests

Getting Help

If issues persist after troubleshooting:

  1. Collect information: timestamp of the request, full error message, your partner ID, and the airport code requested
  2. Contact support: api-support@flyfruition.com
  3. Check status: https://status.flyfruition.com

FlyFruition Admin Documentation