Back to skills
SKILL.md
Flexport Hello World
ASecurity\"Create a minimal working Flexport example \\u2014 list shipments and\\ \\ track containers.\\nUse when starting a new Flexport integration, testing your\\ \\ setup,\\nor learning the Flexport REST API v2 patterns.\\nTrigger: \\\"flexport hello\\ \\ world\\\", \\\"flexport example\\\", \\\"flexport quick start\\\".\\n\"
- 3 stars
- 0 votes
- 0 copies
- 4 views
- Added September 12, 2026
Works with
Security analysis
100/100npx -y skills add thedixitjain/the-mega-skill-library --skill flexport-hello-world --agent claude-codeAre you the author of Flexport Hello World?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/thedixitjain-flexport-hello-world)---
name: flexport-hello-world
description: "\"Create a minimal working Flexport example \\u2014 list shipments and\\ \\ track containers.\\nUse when starting a new Flexport integration, testing your\\ \\ setup,\\nor learning the Flexport REST API v2 patterns.\\nTrigger: \\\"flexport hello\\ \\ world\\\", \\\"flexport example\\\", \\\"flexport quick start\\\".\\n\""
allowed-tools: "Read, Write, Edit, Bash(npm:*), Bash(curl:*)"
category: backend-and-data
source_repo: jeremylongshore/claude-code-plugins-plus-skills
source_path: "skills/.curated/flexport-hello-world/SKILL.md"
source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/skills/.curated/flexport-hello-world/SKILL.md
---
# Flexport Hello World
## Overview
List shipments and retrieve tracking milestones using the Flexport REST API v2. Flexport has no npm SDK -- you call `https://api.flexport.com` directly with bearer token auth and a `Flexport-Version: 2` header.
## Prerequisites
- `FLEXPORT_API_KEY` environment variable set
- Completed `flexport-install-auth` setup
- Node.js 18+ (uses native `fetch`)
## Instructions
### Step 1: List Your Shipments
```typescript
// src/flexport/hello.ts
const BASE = 'https://api.flexport.com';
const headers = {
'Authorization': `Bearer ${process.env.FLEXPORT_API_KEY}`,
'Flexport-Version': '2',
'Content-Type': 'application/json',
};
// List shipments with pagination
const res = await fetch(`${BASE}/shipments?per=5&page=1`, { headers });
const { data } = await res.json();
data.records.forEach((shipment: any) => {
console.log(`${shipment.id} | ${shipment.status} | ${shipment.freight_type}`);
console.log(` Origin: ${shipment.origin_port?.name ?? 'N/A'}`);
console.log(` Dest: ${shipment.destination_port?.name ?? 'N/A'}`);
});
```
### Step 2: Get Shipment Details with Milestones
```typescript
// Retrieve a single shipment with tracking milestones
const shipmentId = data.records[0].id;
const detail = await fetch(`${BASE}/shipments/${shipmentId}`, { headers }).then(r => r.json());
console.log(`\nShipment ${detail.data.id}:`);
console.log(` Status: ${detail.data.status}`);
console.log(` Cargo ready: ${detail.data.cargo_ready_date}`);
console.log(` Containers: ${detail.data.containers?.length ?? 0}`);
```
### Step 3: List Containers on a Shipment
```typescript
// Get container details for ocean freight shipments
const containers = await fetch(
`${BASE}/shipments/${shipmentId}/containers`, { headers }
).then(r => r.json());
containers.data.records.forEach((c: any) => {
console.log(`Container ${c.container_number} | ${c.container_type} | ${c.status}`);
});
```
## Output
```
shp_abc123 | in_transit | ocean
Origin: Shanghai Port
Dest: Los Angeles Port
Shipment shp_abc123:
Status: in_transit
Cargo ready: 2025-03-01
Containers: 2
Container MSKU1234567 | 40ft_hc | in_transit
```
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| 401 Unauthorized | Invalid API key | Check `FLEXPORT_API_KEY` env var |
| 404 Not Found | Wrong shipment ID | Verify ID from `/shipments` list |
| 422 Unprocessable | Bad query params | Check `per`/`page` are integers |
| Empty records array | No shipments yet | Create a booking first or use sandbox |
## Examples
### Python Quick Start
```python
import os, requests
BASE = 'https://api.flexport.com'
headers = {
'Authorization': f'Bearer {os.environ["FLEXPORT_API_KEY"]}',
'Flexport-Version': '2',
}
shipments = requests.get(f'{BASE}/shipments', headers=headers, params={'per': 5}).json()
for s in shipments['data']['records']:
print(f"{s['id']} | {s['status']} | {s['freight_type']}")
```
### cURL One-Liner
```bash
curl -s -H "Authorization: Bearer $FLEXPORT_API_KEY" \
-H "Flexport-Version: 2" \
https://api.flexport.com/shipments?per=3 | jq '.data.records[] | {id, status, freight_type}'
```
## Resources
- [Shipment API Tutorial](https://developers.flexport.com/tutorials/shipment-api-tutorial/)
- [Flexport API Reference](https://apidocs.flexport.com/)
- [Developer Portal](https://developers.flexport.com/)
## Next Steps
Proceed to `flexport-local-dev-loop` for development workflow setup.
---
**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `skills/.curated/flexport-hello-world/SKILL.md`
**Also appears in:** `jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/flexport-pack/skills/flexport-hello-world/SKILL.md`
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.