Skip to content
Back to skills

Ship24

ASecurity

Track parcels worldwide via Ship24 API. Create trackers, get tracking results, monitor delivery status for packages from DHL, FedEx, USPS, DPD, and 1500+ carriers. Use when tracking packages, monitoring deliveries, or checking shipment status.

  • 57 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 17, 2026
documentationgobashexpressapi

Works with

  • api

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill ship24 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ship24?

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

Security grade badge for Ship24
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-ship24/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-ship24)

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: ship24
description: Track parcels worldwide via Ship24 API. Create trackers, get tracking results, monitor delivery status for packages from DHL, FedEx, USPS, DPD, and 1500+ carriers. Use when tracking packages, monitoring deliveries, or checking shipment status.
---

# Ship24 Tracking Skill

Track parcels worldwide using the Ship24 API. Supports 1500+ carriers including DHL, FedEx, USPS, UPS, DPD, China Post, and more.

## Setup

**Get API Key:** https://dashboard.ship24.com/integrations/api-keys

**Store credentials** in `~/.config/ship24/credentials.json`:
```json
{
  "api_key": "apik_xxx"
}
```

Or use environment variable: `SHIP24_API_KEY`

## API Base

```
https://api.ship24.com/public/v1
```

**Auth Header:** `Authorization: Bearer YOUR_API_KEY`

---

## Quick Reference

### Create a Tracker

```bash
curl -X POST "https://api.ship24.com/public/v1/trackers" \
  -H "Authorization: Bearer $SHIP24_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "trackingNumber": "1234567890",
    "courierCode": ["dpd-de"],
    "destinationCountryCode": "DE"
  }'
```

**Response:**
```json
{
  "data": {
    "tracker": {
      "trackerId": "abc-123-def",
      "trackingNumber": "1234567890",
      "isSubscribed": true,
      "isTracked": true,
      "createdAt": "2026-01-15T10:00:00.000Z"
    }
  }
}
```

### Get Tracking Results

```bash
curl "https://api.ship24.com/public/v1/trackers/$TRACKER_ID/results" \
  -H "Authorization: Bearer $SHIP24_API_KEY"
```

**Response:**
```json
{
  "data": {
    "trackings": [{
      "tracker": { "trackerId": "abc-123" },
      "shipment": {
        "statusCode": "in_transit",
        "statusMilestone": "in_transit",
        "originCountryCode": "CN",
        "destinationCountryCode": "DE"
      },
      "events": [{
        "status": "Parcel is in transit",
        "occurrenceDatetime": "2026-01-16T14:30:00",
        "location": "Frankfurt, DE",
        "statusCode": "in_transit"
      }]
    }]
  }
}
```

### Create Tracker and Get Results (One Call)

```bash
curl -X POST "https://api.ship24.com/public/v1/trackers/track" \
  -H "Authorization: Bearer $SHIP24_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "trackingNumber": "1234567890"
  }'
```

### List All Trackers

```bash
curl "https://api.ship24.com/public/v1/trackers?page=1&limit=25" \
  -H "Authorization: Bearer $SHIP24_API_KEY"
```

### Search by Tracking Number (No Tracker)

```bash
curl -X POST "https://api.ship24.com/public/v1/tracking/search" \
  -H "Authorization: Bearer $SHIP24_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"trackingNumber": "1234567890"}'
```

---

## Status Codes

| Milestone | Description |
|-----------|-------------|
| `pending` | Tracking created, no events yet |
| `info_received` | Carrier received shipment info |
| `in_transit` | Package in transit |
| `out_for_delivery` | Out for delivery today |
| `delivered` | Successfully delivered |
| `failed_attempt` | Delivery attempt failed |
| `available_for_pickup` | Ready for pickup |
| `exception` | Problem with delivery |
| `expired` | Tracking expired |

**Status Categories:** `pending`, `info_received`, `in_transit`, `out_for_delivery`, `delivery`, `exception`

---

## Common Courier Codes

| Carrier | Code |
|---------|------|
| DHL Express | `dhl` |
| DHL Germany | `dhl-de` |
| DPD Germany | `dpd-de` |
| DPD UK | `dpd-uk` |
| FedEx | `fedex` |
| UPS | `ups` |
| USPS | `us-post` |
| China Post | `china-post` |
| Deutsche Post | `deutsche-post` |
| Hermes Germany | `hermes-de` |
| GLS | `gls` |

Full list: `GET /public/v1/couriers`

---

## Heartbeat Integration

Track deliveries in your heartbeat routine. Store state in your memory file:

```json
{
  "deliveries": [
    {
      "tracking": "1234567890",
      "carrier": "DPD",
      "description": "New laptop",
      "ship24TrackerId": "abc-123-def",
      "lastStatus": "in_transit",
      "lastCheck": "2026-01-16T10:00:00Z"
    }
  ],
  "ship24ApiKey": "apik_xxx"
}
```

**Check routine:**
1. Loop through active deliveries
2. Fetch results for each trackerId
3. Compare status with lastStatus
4. Notify human on significant changes:
   - `out_for_delivery` → "Your package is out for delivery today!"
   - `delivered` → "Package delivered!" + remove from list
   - `exception` → "Delivery problem with [description]"
5. Update lastStatus and lastCheck

---

## Adding a Delivery

When human says "track this package: ABC123":

1. Create tracker:
```bash
curl -X POST "https://api.ship24.com/public/v1/trackers" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"trackingNumber": "ABC123"}'
```

2. Save to memory:
```json
{
  "tracking": "ABC123",
  "ship24TrackerId": "<trackerId from response>",
  "description": "Package from human",
  "lastStatus": "pending",
  "added": "2026-01-16"
}
```

3. Confirm: "Added tracking for ABC123. I'll let you know when there are updates."

---

## Tips

- **Auto-detect carrier:** Ship24 usually detects the carrier automatically. Only specify `courierCode` if you know it.
- **Destination country:** Helps with detection. Use ISO 2-letter codes (DE, US, CN).
- **Idempotent:** Creating a tracker with the same tracking number returns the existing one.
- **Rate limits:** Check your plan limits at dashboard.ship24.com
- **Webhooks:** For real-time updates, configure webhooks in the dashboard instead of polling.

---

## Error Handling

| Code | Meaning |
|------|---------|
| 401 | Invalid API key |
| 404 | Tracker not found |
| 429 | Rate limit exceeded |
| 422 | Invalid tracking number format |

---

## Links

- **Dashboard:** https://dashboard.ship24.com
- **API Docs:** https://docs.ship24.com
- **OpenAPI Spec:** https://docs.ship24.com/assets/openapi/ship24-tracking-api.yaml

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.