Skip to content
Skillv1.0.0

flexport-install-auth

Install and configure Flexport API authentication with API keys or OAuth credentials. Use when setting up a new Flexport logistics integration, configuring bearer tokens, or initializing the Flexport

by jeremylongshore(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from jeremylongshore/tons-of-skills-marketplace (skills/.curated/flexport-install-auth/SKILL.md). Install upstream with npx skills add jeremylongshore/tons-of-skills-marketplace --skill flexport-install-auth. Copyright stays with the author (MIT).

Flexport Install & Auth

Overview

Configure Flexport API authentication for logistics and supply chain integration. Flexport offers two auth methods: API Keys (simple bearer tokens that never expire) and API Credentials (client ID/secret pairs that issue JWTs valid for 24 hours). The v2 REST API base URL is https://api.flexport.com and speaks JSON.

Output

Record only the authentication method, approved scope, secret-manager reference, validation time, owner, and revocation/rotation procedure. Do not include an API key, token, client secret, or any logistics response data.

Prerequisites

  • Flexport account at flexport.com
  • API key or credentials from Flexport Portal > Settings > Developer > API Credentials
  • Node.js 18+ or Python 3.9+

Instructions

Step 1: Obtain API Credentials

Navigate to Flexport Portal > Settings > Developer. Two options:

Auth Method Format Lifetime Use Case
API Key Bearer token string Permanent Simple integrations, scripts
API Credentials Client ID + Secret JWT, 24h Production apps, rotating tokens

Step 2: Configure Environment Variables

# .env (NEVER commit — add to .gitignore)
FLEXPORT_API_KEY=your_api_key_here

# OR for OAuth credentials flow:
FLEXPORT_CLIENT_ID=your_client_id
FLEXPORT_CLIENT_SECRET=your_client_secret
FLEXPORT_API_URL=https://api.flexport.com

Step 3: Authenticate with API Key

// src/flexport/client.ts
const FLEXPORT_BASE = 'https://api.flexport.com';

async function flexportRequest(path: string, options: RequestInit = {}) {
  const res = await fetch(`${FLEXPORT_BASE}${path}`, {
    ...options,
    headers: {
      'Authorization': `Bearer ${process.env.FLEXPORT_API_KEY}`,
      'Content-Type': 'application/json',
      'Flexport-Version': '2',
      ...options.headers,
    },
  });
  if (!res.ok) throw new Error(`Flexport ${res.status}: ${await res.text()}`);
  return res.json();
}

Step 4: OAuth Credentials Flow (Production)

let tokenCache: { token: string; expiresAt: number } | null = null;

async function getAccessToken(): Promise<string> {
  if (tokenCache && Date.now() < tokenCache.expiresAt) return tokenCache.token;

  const res = await fetch('https://api.flexport.com/oauth/token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      client_id: process.env.FLEXPORT_CLIENT_ID,
      client_secret: process.env.FLEXPORT_CLIENT_SECRET,
      grant_type: 'client_credentials',
    }),
  });
  const { access_token, expires_in } = await res.json();
  tokenCache = { token: access_token, expiresAt: Date.now() + (expires_in - 60) * 1000 };
  return access_token;
}

Step 5: Verify Connection

async function verifyFlexport() {
  const data = await flexportRequest('/shipments?per=1&page=1');
  console.log(`Connected. Shipments found: ${data.data?.records?.length ?? 0}`);
}
await verifyFlexport();

Error Handling

Error Code Cause Solution
Unauthorized 401 Invalid or expired key Regenerate in Portal > Developer
Forbidden 403 Insufficient scope Check key permissions
Token expired 401 JWT past 24h Re-fetch via client credentials
Rate limit exceeded 429 Too many requests Exponential backoff

Examples

Python Client

import os, requests

class FlexportClient:
    BASE = 'https://api.flexport.com'

    def __init__(self):
        self.session = requests.Session()
        self.session.headers.update({
            'Authorization': f'Bearer {os.environ["FLEXPORT_API_KEY"]}',
            'Content-Type': 'application/json',
            'Flexport-Version': '2',
        })

    def get(self, path, params=None):
        r = self.session.get(f'{self.BASE}{path}', params=params)
        r.raise_for_status()
        return r.json()

cURL Verification

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

Resources

Next Steps

After successful auth, proceed to flexport-hello-world for your first shipment query.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/jeremylongshore-tons-of-skills-marketplace-flexport-inst-f6a831/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

jeremylongshore-tons-of-skills-marketplace-flexport-inst-f6a831.ocm.jsonjson
{
  "ocm": "1",
  "id": "jeremylongshore-tons-of-skills-marketplace-flexport-inst-f6a831",
  "kind": "skill",
  "name": "flexport-install-auth",
  "description": "Install and configure Flexport API authentication with API keys or OAuth credentials. Use when setting up a new Flexport logistics integration, configuring bearer tokens, or initializing the Flexport REST API client for shipment and supply chain operations. Trigger: \"install flexport\", \"setup flexport\", \"flexport auth\", \"flexport API key\".",
  "publisher": "jeremylongshore",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "saas",
      "logistics",
      "flexport",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Install and configure Flexport API authentication with API keys or OAuth credentials. Use when setting up a new Flexport logistics integration, configuring bearer tokens, or initializing the Flexport REST API client for shipment and supply chain operations. Trigger: \"install flexport\", \"setup flexport\", \"flexport auth\", \"flexport API key\"."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/jeremylongshore/tons-of-skills-marketplace",
      "path": "skills/.curated/flexport-install-auth/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/jeremylongshore/tons-of-skills-marketplace/blob/HEAD/skills/.curated/flexport-install-auth/SKILL.md",
      "key": "jeremylongshore/tons-of-skills-marketplace/skills/.curated/flexport-install-auth/SKILL.md"
    },
    "compatibility": "Designed for Claude Code",
    "allowed_tools": [
      "Read,",
      "Write,",
      "Edit,",
      "Bash(npm:*),",
      "Bash(curl:*),",
      "Grep"
    ],
    "license": "MIT"
  },
  "instructions": "# Flexport Install & Auth\n\n## Overview\n\nConfigure Flexport API authentication for logistics and supply chain integration. Flexport offers two auth methods: **API Keys** (simple bearer tokens that never expire) and **API Credentials** (client ID/secret pairs that issue JWTs valid for 24 hours). The v2 REST API base URL is `https://api.flexport.com` and speaks JSON.\n\n## Output\n\nRecord only the authentication method, approved scope, secret-manager reference, validation time, owner, and revocation/rotation procedure. Do not include an API key, token, client secret, or any logistics response data.\n",
  "cost": {
    "context_tokens": 1153
  }
}

Fetch it by URL: GET /api/v1/registry/jeremylongshore-tons-of-skills-marketplace-flexport-inst-f6a831/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.