From flexport-pack
Diagnoses Flexport API v2 errors like 401 unauthorized, 422 validation failures, 429 rate limits with curl tests, fixes, and port/HS code guides.
How this skill is triggered — by the user, by Claude, or both
Slash command
/flexport-pack:flexport-common-errorsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Quick reference for the most common Flexport API v2 errors. The API returns standard HTTP codes with JSON error bodies containing `code`, `message`, and sometimes `details` fields.
Quick reference for the most common Flexport API v2 errors. The API returns standard HTTP codes with JSON error bodies containing code, message, and sometimes details fields.
{ "error": { "code": "UNAUTHORIZED", "message": "Invalid API key" } }
Causes: Missing Authorization header, expired JWT token, revoked API key.
Fix:
# Verify key is set
echo $FLEXPORT_API_KEY | head -c 10
# Test with cURL
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $FLEXPORT_API_KEY" \
-H "Flexport-Version: 2" \
https://api.flexport.com/shipments?per=1
Causes: API key lacks required scope, IP whitelist blocking, sandbox key used on production.
Fix: Check key permissions in Flexport Portal > Settings > Developer. Ensure key scope includes the endpoint you are calling.
{ "error": { "code": "NOT_FOUND", "message": "Shipment shp_xxx not found" } }
Causes: Wrong ID format, resource deleted, using test ID in production.
Fix: List resources first to get valid IDs:
curl -s -H "Authorization: Bearer $FLEXPORT_API_KEY" \
-H "Flexport-Version: 2" \
https://api.flexport.com/shipments?per=1 | jq '.data.records[0].id'
{ "error": { "code": "VALIDATION_ERROR", "message": "Invalid port code", "details": [...] } }
Common validation failures:
| Field | Issue | Fix |
|---|---|---|
origin_port.code | Not a valid UN/LOCODE | Use CNSHA, USLAX, DEHAM format |
hs_code | Wrong format | Use 6-10 digit codes like 8479.89 |
cargo_ready_date | In the past | Use future ISO date |
freight_type | Unsupported value | Use ocean, air, or trucking |
incoterm | Invalid | Use FOB, CIF, EXW, DDP |
{ "error": { "code": "RATE_LIMITED", "message": "Rate limit exceeded" } }
Fix: Check response headers and back off:
function handleRateLimit(res: Response): number {
const retryAfter = res.headers.get('Retry-After');
const remaining = res.headers.get('X-RateLimit-Remaining');
console.log(`Rate limited. Remaining: ${remaining}. Retry after: ${retryAfter}s`);
return parseInt(retryAfter || '60') * 1000;
}
Causes: Flexport internal issue, maintenance window, upstream provider failure.
Fix:
# Check Flexport status page
curl -s https://status.flexport.com/api/v2/status.json | jq '.status'
Retry with exponential backoff for transient 5xx errors. See flexport-rate-limits.
#!/bin/bash
echo "=== Flexport Diagnostics ==="
echo "API Key set: ${FLEXPORT_API_KEY:+YES}"
echo "Key prefix: ${FLEXPORT_API_KEY:0:8}..."
echo -n "API status: "
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $FLEXPORT_API_KEY" \
-H "Flexport-Version: 2" \
https://api.flexport.com/shipments?per=1
echo ""
echo -n "Status page: "
curl -s https://status.flexport.com/api/v2/status.json | jq -r '.status.description'
X-Request-Id)For comprehensive debugging, see flexport-debug-bundle.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin flexport-packTriages and mitigates Flexport API outages, webhook failures, and data sync issues using decision trees, bash health checks, TypeScript circuit breakers, and postmortem templates.
Handles freight exceptions like shipment delays, damages, losses, and carrier disputes with escalation protocols, claims procedures, and resolution workflows. Useful for shipping issues, delivery problems, or logistics claims.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.