LLM URL Shortening
Base64 encoding for predictable URL shortening compatible with AI systems
Overview
ZAGL provides LLM-friendly URL shortening using Base64 encoding for predictable, reproducible short URLs. This is ideal for AI applications that need consistent URL generation without requiring API keys or complex authentication.
LLM Compatible
Designed for AI systems
Predictable
Same URL always generates same short code
No API Keys
Simple HTTP requests
API Reference
Encode URL
POST /api/llm/encodeRequest Body
{ "url": "https://example.com/long/url/path" }
Response
{ "success": true, "data": { "shortUrl": "https://preprod.za.gl/e/aHR0cHM6Ly9...", "encoded": "aHR0cHM6Ly9leGFtcGxl...", "originalUrl": "https://example.com/...", "method": "base64", "expires": null, "createdAt": "2024-01-01T00:00:00Z" } }
Access Short URL
GET /e/{base64}Visiting the short URL will automatically redirect to the original URL. The Base64 encoded string contains the original URL and can be decoded predictably.
Analytics
GET /api/llm/analytics?days=30&format=jsonGet analytics data for LLM-generated URLs. Supports JSON and CSV formats.
Query Parameters
days: Number of days (1-365, default: 30)format: Response format (json or csv, default: json)
Limits & Specifications
Rate Limits
- • Encoding:: 60 requests/minute
- • Redirects:: 60 requests/minute
- • Analytics:: 120 requests/minute
Constraints
- • Max URL length: 4KB
- • Protocols: HTTP, HTTPS only
- • Private IPs: Blocked for security
- • Expires: Never (permanent URLs)
Code Examples
Python
llm_shortener.py
import base64 import urllib.parse import requests def shorten_url_llm(url): """ Create a predictable shortened URL using Base64 encoding Compatible with ZAGL LLM functionality """ # Validate URL if len(url) > 4096: raise ValueError("URL exceeds 4KB limit") # Encode to Base64 encoded_bytes = base64.b64encode(url.encode('utf-8')) encoded_str = encoded_bytes.decode('utf-8') # Remove padding for cleaner URLs clean_encoded = encoded_str.rstrip('=') # Generate short URL short_url = f"https://yourdomain.com/e/{clean_encoded}" return { "short_url": short_url, "encoded": clean_encoded, "original_url": url } def decode_llm_url(encoded_url): """ Decode a Base64 encoded URL """ # Add padding back if needed padding_needed = 4 - (len(encoded_url) % 4) if padding_needed != 4: encoded_url += '=' * padding_needed # Decode decoded_bytes = base64.b64decode(encoded_url) return decoded_bytes.decode('utf-8') # Example usage original_url = "https://example.com/very/long/url/path" result = shorten_url_llm(original_url) print(f"Short URL: {result['short_url']}") print(f"Encoded: {result['encoded']}")
JavaScript/Node.js
llm_shortener.js
// JavaScript/Node.js implementation function shortenUrlLLM(url) { // Validate URL if (url.length > 4096) { throw new Error("URL exceeds 4KB limit"); } // Validate URL format try { new URL(url); } catch { throw new Error("Invalid URL format"); } // Encode to Base64 const base64 = Buffer.from(url, 'utf-8').toString('base64'); // Remove padding for cleaner URLs const cleanBase64 = base64.replace(/=/g, ''); // Generate short URL const shortUrl = `https://yourdomain.com/e/${cleanBase64}`; return { shortUrl, encoded: cleanBase64, originalUrl: url }; } function decodeLLMUrl(encodedUrl) { // Add padding back if needed let paddedBase64 = encodedUrl; while (paddedBase64.length % 4) { paddedBase64 += '='; } // Decode from Base64 return Buffer.from(paddedBase64, 'base64').toString('utf-8'); } // Example usage const originalUrl = "https://example.com/very/long/url/path"; const result = shortenUrlLLM(originalUrl); console.log(`Short URL: ${result.shortUrl}`); console.log(`Encoded: ${result.encoded}`);
Terminal / cURL
terminal
# Encode a URL curl -X POST https://preprod.za.gl/api/llm/encode \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/very/long/url/path"}' # Get analytics curl "https://preprod.za.gl/api/llm/analytics?days=7&format=json" # Get analytics as CSV curl "https://preprod.za.gl/api/llm/analytics?days=30&format=csv" \ -o analytics.csv
Use Cases
LLM Applications
- • ChatGPT plugins and integrations
- • Claude Code and AI development tools
- • Automated content generation
- • AI-powered link sharing
Automation & Scripting
- • CI/CD pipelines
- • Webhook integrations
- • Batch URL processing
- • Documentation generators
Compatible with preprod.za.gl/llm-docs specification
Last updated: 12/7/2025