skills/polymer-pay-api-errors/SKILL.md
Reference guide for HTTP error codes returned by the Polymer Pay proxy. Use to understand error causes and solutions when API requests fail.
npx skillsauth add polymerdao/pay-apis polymer-pay-api-errorsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Comprehensive reference for HTTP error responses from the Polymer Pay proxy. Understand error codes, diagnose issues, and resolve failures quickly.
All error responses include standard HTTP status codes and JSON error bodies. Include your Polymer Pay API key in all requests:
{
"headers": {
"Content-Type": "application/json",
"x-polymer-pay-api-key": "{{POLYMER_PAY_API_KEY}}"
}
}
Base URL: https://pay.polymerlabs.org/proxy/{scheme}/{host}
Parse an Polymer Pay error response to understand the cause and recommended fix.
Pricing: $0.00
{
"method": "GET",
"url": "https://pay.polymerlabs.org/proxy/https/example.com/api/endpoint",
"headers": {
"Content-Type": "application/json",
"x-polymer-pay-api-key": "{{POLYMER_PAY_API_KEY}}"
}
}
Response: Error response includes code, message, and context fields:
{
"error": {
"code": "payment_required",
"message": "Account missing billing state or default payment case",
"pending_cents": 150,
"limit_cents": 1000
}
}
Look up error codes by HTTP status to diagnose failures.
Pricing: $0.00
Reference this skill to decode any error response from Polymer Pay proxy requests.
| Code | Message | Cause |
|------|---------|-------|
| invalid_headers | Header preparation fails for upstream request | Proxy unable to forward headers |
| invalid_requirements | Invalid payment requirements received from upstream service | Upstream returns unparseable 402 requirements |
| Code | Message | Cause |
|------|---------|-------|
| unauthorized | Invalid or missing authentication credentials | Missing or invalid claims in request |
| invalid_token | Token expired or invalid. Please refresh your token | Expired or invalid JWT |
| jwks_unavailable | Auth service unreachable for key validation | JWKS endpoint unreachable |
| Code | Message | Cause |
|------|---------|-------|
| payment_required | Account missing billing state or default payment case | No billing setup or payment method |
| spend_limit_exceeded | Account over spending limit (reason: over_limit) | Account exceeded configured limit |
| Code | Message | Cause |
|------|---------|-------|
| endpoint_not_allowed | Invalid scheme/host validation | Requested endpoint not in allowlist |
| policy_violation | Request violates account policy limits | Claims do not allow requested host |
| payment_method_required | Payment method required | No payment method on account |
| spend_limit_exceeded | Spend limit exceeded | Account limit exceeded |
| Code | Message | Cause |
|------|---------|-------|
| not_found | Resource not found | Wallet screening blocked (sanctioned, invalid address, or config blocklist) |
| Code | Message | Cause |
|------|---------|-------|
| request_timeout | Request timeout | Client request body read idle timeout |
| Code | Message | Cause |
|------|---------|-------|
| body_too_large | Body too large | Request body exceeds max_request_body_bytes |
| Code | Message | Cause |
|------|---------|-------|
| upstream_rate_limit | Rate limited by upstream service | Upstream service returned 429 |
| Code | Message | Cause |
|------|---------|-------|
| something_went_wrong | Something went wrong | Catch-all internal error |
| misconfigured_upstream | Upstream configuration error | Bad upstream configuration |
| wallet_screening_failed | Wallet screening failed | Screening API error (fail-closed) |
| Code | Message | Cause |
|------|---------|-------|
| upstream_unavailable | Upstream unavailable | DNS resolution fails or upstream unreachable |
| upstream_body_error | Upstream body error | Error reading client request body |
| accounts_service_unavailable | Accounts API was unable to be reached | Accounts API is down |
| upstream_invalid_requirements | Invalid payment requirements from upstream | Upstream returns malformed 402 requirements |
| payment_failed | Failed to process payment for this request | Payment build/signing failed |
| proxy_error | Proxy error | Response builder fails constructing proxy response |
| Code | Message | Cause |
|------|---------|-------|
| payment_unavailable | Payment failed: insufficient funds in Polymer Pay | Polymer Pay wallet has insufficient funds |
| payment_unavailable | Payment processing unavailable | Payment system temporarily down |
code and message fields that pinpoint the issuespend_limit_exceeded means your account hit its configured limit| Error | Cause | Solution |
|-------|-------|----------|
| 400 invalid_headers | Proxy header preparation failed | Verify request headers are well-formed |
| 401 unauthorized | Missing or invalid API key | Check POLYMER_PAY_API_KEY is set and valid |
| 401 invalid_token | JWT expired or invalid | Refresh your authentication token |
| 402 payment_required | No billing setup | Add payment method at my.pay.polymerlabs.org/dashboard/api-keys |
| 402 spend_limit_exceeded | Account limit reached | Increase spend limit or wait for reset |
| 403 endpoint_not_allowed | Host not in allowlist | Contact support to enable this endpoint |
| 404 not_found | Wallet screening blocked | Check address is valid and not sanctioned |
| 429 upstream_rate_limit | Upstream throttling | Add delays between requests |
| 502 upstream_unavailable | Upstream service down | Retry after a short delay |
| 503 payment_unavailable | Insufficient Polymer Pay funds | Top up your Polymer Pay wallet |
development
USE THIS SKILL WHEN: the user wants to use Z.ai's GLM models for chat, translation, image generation, video generation, or web search. Z.ai provides GLM-4.5 and GLM-4.6 with advanced reasoning and agentic capabilities.
development
USE THIS SKILL WHEN: the user wants a quick single-page scrape to markdown or a webpage screenshot. Provides lightweight web scraping and screenshots via x402engine through the Polymer Pay proxy.
data-ai
USE THIS SKILL WHEN: the user wants to generate AI images with FLUX models or create text-in-image with Ideogram. Provides pay-per-use image generation via x402engine through the Polymer Pay proxy.
data-ai
USE THIS SKILL WHEN: the user wants wallet balances, transactions, PnL, ENS resolution, token prices, or transaction simulation. Provides pay-per-use blockchain operations via x402engine through the Polymer Pay proxy.