🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Modern URL shortening with QR codes and detailed analytics

by @anandrathnas

URL shortener, QR code generator, and link analytics API. Create short links, generate QR codes, and track click analytics.

Versionv1.0.0
Downloads3,003
Stars⭐ 1
TERMINAL
clawhub install jo4

πŸ“– About This Skill


name: jo4 description: URL shortener, QR code generator, and link analytics API. Create short links, generate QR codes, and track click analytics. homepage: https://jo4.io user-invocable: true metadata: { "openclaw": { "emoji": "πŸ”—", "primaryEnv": "JO4_API_KEY", "requires": { "env": ["JO4_API_KEY"] } } }

Jo4 - URL Shortener & Analytics API

Jo4 is a modern URL shortening service with QR code generation and detailed link analytics.

Authentication

All protected endpoints require an API key. Set your API key as an environment variable:

export JO4_API_KEY="your-api-key"

Get your API key from: https://jo4.io/api-keys

API Base URL

https://jo4-api.jo4.io/api/v1

Endpoints

Create Short URL (Authenticated)

curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
  -H "X-API-Key: $JO4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "longUrl": "https://example.com/very-long-url",
    "title": "My Link"
  }'

Request Body:

  • longUrl (required) - The destination URL (max 2048 chars)
  • title (optional) - Link title (max 200 chars)
  • description (optional) - Link description (max 500 chars)
  • shortUrl (optional) - Custom alias (max 16 chars, alphanumeric/hyphen/underscore)
  • expirationTime (optional) - Unix timestamp for link expiration
  • passwordProtected (optional) - Boolean to enable password protection
  • password (optional) - Password if protected (4-128 chars)
  • UTM Parameters:

  • utmSource, utmMedium, utmCampaign, utmTerm, utmContent
  • Response:

    {
      "response": {
        "id": 123,
        "slug": "abc123",
        "shortUrl": "abc123",
        "fullShortUrl": "https://jo4.io/a/abc123",
        "longUrl": "https://example.com/very-long-url",
        "title": "My Link",
        "qrCodeUrl": "https://jo4.io/qr/abc123"
      }
    }
    

    Create Anonymous Short URL (No Auth Required)

    curl -X POST "https://jo4-api.jo4.io/api/v1/public/url" \
      -H "Content-Type: application/json" \
      -d '{"longUrl": "https://example.com"}'
    

    Limited features, no analytics access.

    Get URL Details

    curl -X GET "https://jo4-api.jo4.io/api/v1/protected/url/{slug}" \
      -H "X-API-Key: $JO4_API_KEY"
    

    Get URL Analytics

    curl -X GET "https://jo4-api.jo4.io/api/v1/protected/url/{slug}/stats" \
      -H "X-API-Key: $JO4_API_KEY"
    

    Response includes:

  • Total clicks
  • Clicks by date
  • Geographic distribution
  • Device/browser breakdown
  • Referrer sources
  • List My URLs

    curl -X GET "https://jo4-api.jo4.io/api/v1/protected/url/myurls?page=0&size=20" \
      -H "X-API-Key: $JO4_API_KEY"
    

    Update URL

    curl -X PUT "https://jo4-api.jo4.io/api/v1/protected/url/{id}" \
      -H "X-API-Key: $JO4_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "title": "Updated Title",
        "longUrl": "https://new-destination.com"
      }'
    

    Delete URL

    curl -X DELETE "https://jo4-api.jo4.io/api/v1/protected/url/{id}" \
      -H "X-API-Key: $JO4_API_KEY"
    

    QR Codes

    Every short URL automatically gets a QR code at:

    https://jo4.io/qr/{shortUrl}
    

    Rate Limits

    Rate limits vary by plan:

  • Free: 60 requests/minute
  • Pro: Up to 10,000 requests/minute
  • Anonymous (public endpoints): 10 requests/minute
  • API Documentation

    Full OpenAPI/Swagger documentation: https://jo4-api.jo4.io/swagger-ui/index.html

    Common Use Cases

    1. Shorten a URL for sharing

    curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
      -H "X-API-Key: $JO4_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"longUrl": "https://example.com/article", "title": "Article"}'
    

    2. Create campaign tracking link

    curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
      -H "X-API-Key: $JO4_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "longUrl": "https://mysite.com/landing",
        "title": "Q1 Campaign",
        "utmSource": "twitter",
        "utmMedium": "social",
        "utmCampaign": "q1-2026"
      }'
    

    3. Create expiring link

    curl -X POST "https://jo4-api.jo4.io/api/v1/protected/url" \
      -H "X-API-Key: $JO4_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "longUrl": "https://mysite.com/promo",
        "title": "Limited Offer",
        "expirationTime": 1738454400
      }'
    

    Error Codes

    | Code | Meaning | |------|---------| | 400 | Bad request - invalid parameters | | 401 | Unauthorized - missing or invalid API key | | 403 | Forbidden - insufficient permissions | | 404 | Not found - URL doesn't exist | | 429 | Rate limit exceeded |