Troubleshooting
Quick solutions to the most common Pullbay API problems. Organised by symptom with step-by-step fixes, code examples, and guidance on when to contact support.
Authentication Issues
Error: 401 Unauthorized
The API is rejecting your credentials. Work through these checks in order.
1. Verify the API key exists and is active
Go to the Pullbay dashboard → Account Settings → API Keys
Confirm the key is listed and has not been revoked
If you recently rotated keys, make sure every integration is using the new key
2. Check the Authorization header format
# Correct
headers = {"Authorization": "Bearer YOUR_API_KEY"}
# Common mistakes
headers = {"Authorization": "YOUR_API_KEY"} # Missing "Bearer "
headers = {"Authorization": "Bearer"} # Missing the key itself
headers = {"Api-Key": "YOUR_API_KEY"} # Wrong header name
headers = {"X-API-Key": "YOUR_API_KEY"} # Wrong header name
headers = {"Authorization": f"bearer {api_key}"} # Lowercase "bearer" — must be "Bearer"The header name must be Authorization (not X-API-Key, not Api-Key) and the value must start with Bearer followed by your key.
3. Test with curl
200 OKwith data → key is valid400 Bad RequestwithVALIDATION_ERROR→ key is valid but a parameter is wrong401 Unauthorized→ key itself is invalid or missing
Error: "API key not working after rotation"
You have revoked the old key but not updated every place it was used.
Locations to check:
Steps:
Generate a new key: Dashboard → API Keys → Create New Key. Copy it immediately — it is only shown once.
Search for the old key in your codebase:
Update environment variables:
Redeploy, then verify:
Credit Issues
Error: 402 Payment Required / code TEAM_INSUFFICIENT_CREDITS
Your account has run out of API credits.
1. Check your balance — Dashboard → Billing → Current Balance
2. Add credits — Dashboard → Billing → Add Credits. Credits are added immediately after payment.
3. Enable auto-reload — set a threshold (e.g. reload 5,000 credits when balance drops below 1,000) so workflows never fail unexpectedly.
4. Upgrade your plan if you consistently run out — higher plans include larger monthly credit allocations. See the Pullbay dashboard for current plan options.
Problem: Credits depleting faster than expected
1. Check usage by endpoint — Dashboard → Usage → Credit Usage Breakdown
2. Understand how credits are charged
Credits are charged per review returned, not per API call:
pricing.creditsCharged in the response tells you exactly what each call cost:
3. Reduce unnecessary fetches
4. Cache responses — avoid re-fetching the same data within minutes of the last call.
5. Log credit consumption per call — track spend over time and alert on anomalies:
Rate Limit Issues
Error: 429 Too Many Requests
You have exceeded your plan's per-minute or per-second request limit.
1. Read the rate limit headers
2. Implement exponential backoff
3. Reduce request frequency
Rate limits are per API key and depend on your plan. If you are consistently hitting limits, either reduce call frequency or upgrade to a plan with a higher rate limit.
Problem: Hitting rate limits when processing multiple apps
Option A — Add a delay between requests
Option B — Use maxItems to reduce total call count
Instead of paginating through many pages (one request per page), use maxItems to get up to 500 reviews in a single call:
Data Issues
Problem: Empty data array
A 200 OK response with "data": [] means the request succeeded but no matching reviews exist.
Check the app ID
appId and bundleId are mutually exclusive — pass exactly one.
Check the country
Apps may have reviews in some storefronts but not others:
Check the sort value
Only recent and helpful are valid. Any other value causes a 400 VALIDATION_ERROR.
Problem: Wrong or unexpected field names
The response uses different field names than expected. The App Store review object fields are:
id
string
Unique review ID
date
string
ISO 8601 datetime
userName
string
Reviewer display name
userUrl
string
Link to reviewer profile
score
integer
Star rating 1–5
title
string
Review headline
text
string
Full review body
version
string
App version reviewed
url
string
Link to the review on Apple
country
string
2-letter country code
Common mistakes:
Pagination Issues
Problem: Getting only 50 reviews when you expect more
Without maxItems, the endpoint returns one page (~50 reviews). Use maxItems to get up to 500 at once, or paginate with page:
maxItems and page cannot be used in the same request — choose one.
Problem: Pagination loop never stops
Check pagination.hasNextPage (not has_more or next):
Problem: Request with maxItems times out
maxItems causes Pullbay to fetch multiple Apple pages internally before responding — this can take up to 2 minutes for large values.
Increase the client timeout:
Or reduce maxItems to fetch fewer pages internally:
Or switch to page-by-page with a shorter per-request timeout:
n8n / Make.com Issues
Problem: n8n workflow fails on the HTTP Request node
1. Check credential setup
In n8n: Credentials → Create New → Header Auth
Header Name
Authorization
Header Value
Bearer YOUR_API_KEY
Include the word Bearer and a space before the key.
2. Check the URL
The correct endpoint URL is:
Common mistakes:
/app-store/→ should be/appstore/(no hyphen)/reviews/all→ no such endpoint; usemaxItemsparameter instead
3. Check parameter names — use camelCase:
app_id
appId
max_results
maxItems
bundle_id
bundleId
4. Increase the HTTP timeout
Click Additional Options on the HTTP Request node and set Timeout to 120000 ms (2 minutes). Large maxItems values require extra time while Pullbay fetches pages internally.
5. Read the right response fields in n8n
Reviews array
{{ $json.data }}
Credits charged
{{ $json.pricing.creditsCharged }}
Request ID
{{ $json.requestId }}
Has next page
{{ $json.pagination.hasNextPage }}
Author name
{{ $json.userName }}
Score
{{ $json.score }}
Review text
{{ $json.text }}
6. Handle 429 with a Wait node
Connect a Wait node (set to 60 seconds) after the HTTP Request node on the error path, then loop back to retry.
General Debugging Steps
Reproduce with curl
Strip everything back to a minimal curl call to isolate whether the problem is in your code or the API:
200with data → API is fine; the bug is in your integration401→ invalid API key402→ insufficient credits400withVALIDATION_ERROR→ a parameter name or value is wrong5xx→ server-side issue; check the status page
FAQ
Last updated