Skip to content
Back to skills

Flexport Common Errors

ASecurity

'Diagnose and fix common Flexport API errors including HTTP status codes, webhook failures, and data validation issues. Trigger: \"flexport error\", \"fix flexport\", \"flexport not working\", \"debug flexport API\". '

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 12, 2026
ai-agentstypescriptgobashdebugginggitapibackend

Works with

  • api

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro shows the line behind each finding and how to fix it

Scanned September 12, 2026

npx -y skills add thedixitjain/the-mega-skill-library --skill flexport-common-errors --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Flexport Common Errors?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Flexport Common Errors
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thedixitjain-flexport-common-errors/badge)](https://www.skillsdirectory.com/skills/thedixitjain-flexport-common-errors)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: flexport-common-errors
description: "'Diagnose and fix common Flexport API errors including HTTP status codes, webhook failures, and data validation issues. Trigger: \"flexport error\", \"fix flexport\", \"flexport not working\", \"debug flexport API\". '"
allowed-tools: "Read, Grep, Bash(curl:*)"
category: backend-and-data
source_repo: jeremylongshore/claude-code-plugins-plus-skills
source_path: "plugins/saas-packs/flexport-pack/skills/flexport-common-errors/SKILL.md"
source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/plugins/saas-packs/flexport-pack/skills/flexport-common-errors/SKILL.md
---

# Flexport Common Errors

## Overview

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 Reference

### 401 Unauthorized — Invalid or Missing API Key

```json
{ "error": { "code": "UNAUTHORIZED", "message": "Invalid API key" } }
```

**Causes:** Missing `Authorization` header, expired JWT token, revoked API key.

**Fix:**

```bash
# 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
```

### 403 Forbidden — Insufficient Permissions

**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.

### 404 Not Found — Resource Does Not Exist

```json
{ "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:

```bash
curl -s -H "Authorization: Bearer $FLEXPORT_API_KEY" \
     -H "Flexport-Version: 2" \
     https://api.flexport.com/shipments?per=1 | jq '.data.records[0].id'
```

### 422 Unprocessable Entity — Validation Failed

```json
{ "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` |

### 429 Too Many Requests — Rate Limited

```json
{ "error": { "code": "RATE_LIMITED", "message": "Rate limit exceeded" } }
```

**Fix:** Check response headers and back off:

```typescript
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;
}
```

### 500/502/503 — Server Errors

**Causes:** Flexport internal issue, maintenance window, upstream provider failure.

**Fix:**

```bash
# 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`.

## Diagnostic Script

```bash
#!/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'
```

## Escalation Path

1. Run diagnostic script above
2. Collect request ID from response headers (`X-Request-Id`)
3. Check [Flexport Status](https://status.flexport.com)
4. Contact Flexport support with request ID and error details

## Resources

- [Flexport API Reference](https://apidocs.flexport.com/)
- [Flexport Status Page](https://status.flexport.com)
- [Developer Portal](https://developers.flexport.com/)

## Next Steps

For comprehensive debugging, see `flexport-debug-bundle`.

---

**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/saas-packs/flexport-pack/skills/flexport-common-errors/SKILL.md`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.