Solución de problemas
A symptom-first reference. Match the response you’re seeing, then apply the fix.
401 Acceso no autorizado
{"success": false, "error": "Unauthorized"} — the proxy could not resolve your request to a user.
- Confirm the header name:
Clave X-API(case-insensitive) oAuthorization: Bearer <key>. Custom names (Api-Key,X-Auth, etc.) are not parsed. - Si utilizas
Autorización, the value must start withBearer(with a space). - Whitespace, quoting, and stray newlines in the key value all fail.
- The key may have been regenerated. Old keys stop immediately — copy a fresh value from
/api. - Query-param fallback
?api_key=works; URL-encode it correctly.
403 Prohibido
The key was recognized, but API access is not enabled for that billing account.
- Confirm plan / billing includes API access.
- On team accounts, ask an admin to confirm the org seat has API access.
404 — Unknown TikTok Shop endpoint
Path is registered, but the handler isn’t in the public allowlist.
- Call
/api/v1/tiktok-shop/.... Bare/api/tiktok-shop/...is session-only and won’t accept API keys. - Match the path exactly (no trailing slash unless documented).
404 — Not Found
The router never matched the request.
- Check verb: many endpoints accept only
OBTENERor onlyPUBLICAR. - Path IDs for videos must match
[A-Za-z0-9_-]+.
429 — rate limit vs credits
error text contains |
Significado | Fix |
|---|---|---|
Se ha superado el límite de solicitudes. Máximo: 60 solicitudes por minuto. |
Per-minute burst | Back off ~1s; reduce concurrency |
No API credits remaining… |
Quota exhausted | Wait for monthly reset or buy an add-on — Credits |
Credit-exhaustion 429s include a créditos object; rate-limit 429s do not.
414 URI demasiado largo
Switch large filter sets to PUBLICAR JSON.
curl -X POST \
-H "X-API-Key: $WH_API_KEY" \
-H "Content-Type: application/json" \
"{origin}/api/v1/tiktok-shop/products/explore" \
-d '{"country":"US","period":"30d","category_ids":["..."],"limit":100}'
Error 500 del servidor interno
{"success": false, "error": "Internal server error"} — credits for that call are refunded.
- Retry with backoff; if the same payload always 500s, contact support with a redacted request.
- Sanity-check bodies against TikTok Shop filters.
HTML instead of JSON
- Verify
{origin}(scheme + host). - Prefer
Clave X-APIif a corporate proxy stripsAutorización.
Empty or surprising results
- Don’t mix
períodoconfecha_de_inicio/fecha de finalizaciónon TikTok Shop — see Intervalos de tiempo. - Set
paísexplicitly (default isEE. UU.). - Check filter aliases in TikTok Shop filters.
Session path redirect to /login
| Superficie | Autor |
|---|---|
/api/v1/tiktok-shop/* |
Clave API |
/api/tiktok-shop/* |
Logged-in session |
Sanity checklist
curl -i -H "X-API-Key: $WH_API_KEY" {origin}/api/v1/credits→200- Dashboard shows API access on the plan
credits.remaining(ototal_remaining) > 0- Under ~50 requests/min
- Path + verb match the docs