← Back to Skills
Automation

go2gg

rakesh1002 By rakesh1002 👁 17 views ▲ 0 votes

Use Go2.gg API for URL shortening, link analytics, QR code generation,.

GitHub
---
name: go2gg
description: Use Go2.gg API for URL shortening, link analytics, QR code generation, webhooks, and link-in-bio pages. Use when the user needs to create short links, track clicks, generate QR codes, set up link-in-bio pages, or manage branded URLs. Free tier includes short links, QR codes, and analytics. Requires GO2GG_API_KEY env var. QR code generation is free without auth.
---

# Go2.gg — Edge-Native URL Shortener

URL shortening, analytics, QR codes, webhooks, galleries (link-in-bio). Built on Cloudflare's edge network with sub-10ms redirects globally.

## Setup

Get API key from: https://go2.gg/dashboard/api-keys (free, no credit card required)

```bash
export GO2GG_API_KEY="go2_your_key_here"
```

**API base:** `https://api.go2.gg/api/v1`
**Auth:** `Authorization: Bearer $GO2GG_API_KEY`
**Docs:** https://go2.gg/docs/api/links

---

## Short Links

Create, manage, and track short links with custom slugs, tags, expiration, passwords, and geo/device targeting.

### Create a Link

```bash
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/landing-page",
    "slug": "my-link",
    "title": "My Campaign Link",
    "tags": ["marketing", "q1-2025"]
  }'
```

**Important:** Field is `destinationUrl` (not `url`). Slug is optional (auto-generated if omitted).

### Response

```json
{
  "success": true,
  "data": {
    "id": "lnk_abc123",
    "shortUrl": "https://go2.gg/my-link",
    "destinationUrl": "https://example.com/landing-page",
    "slug": "my-link",
    "domain": "go2.gg",
    "title": "My Campaign Link",
    "tags": ["marketing", "q1-2025"],
    "clickCount": 0,
    "createdAt": "2025-01-01T10:30:00Z"
  }
}
```

### List Links

```bash
# List all links (paginated)
curl "https://api.go2.gg/api/v1/links?perPage=20&sort=clicks" \
  -H "Authorization: Bearer $GO2GG_API_KEY"

# Search links
curl "https://api.go2.gg/api/v1/links?search=marketing&tag=q1-2025" \
  -H "Authorization: Bearer $GO2GG_API_KEY"
```

**Query params:** `page`, `perPage` (max 100), `search`, `domain`, `tag`, `archived`, `sort` (created/clicks/updated)

### Update a Link

```bash
curl -X PATCH "https://api.go2.gg/api/v1/links/lnk_abc123" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://example.com/updated-page", "tags": ["updated"]}'
```

### Delete a Link

```bash
curl -X DELETE "https://api.go2.gg/api/v1/links/lnk_abc123" \
  -H "Authorization: Bearer $GO2GG_API_KEY"
# Returns 204 No Content
```

### Link Analytics

```bash
curl "https://api.go2.gg/api/v1/links/lnk_abc123/stats" \
  -H "Authorization: Bearer $GO2GG_API_KEY"
```

Returns: `totalClicks`, `byCountry`, `byDevice`, `byBrowser`, `byReferrer`, `overTime`

### Advanced Link Options

```bash
# Password-protected link
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://example.com/secret", "slug": "exclusive", "password": "secure123"}'

# Link with expiration + click limit
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://example.com/flash", "expiresAt": "2025-12-31T23:59:59Z", "clickLimit": 1000}'

# Geo-targeted link (different URLs per country)
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/default",
    "geoTargets": {"US": "https://example.com/us", "GB": "https://example.com/uk", "IN": "https://example.com/in"}
  }'

# Device-targeted link + app deep links
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/default",
    "deviceTargets": {"mobile": "https://m.example.com"},
    "iosUrl": "https://apps.apple.com/app/myapp",
    "androidUrl": "https://play.google.com/store/apps/details?id=com.myapp"
  }'

# Link with UTM parameters
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/product",
    "slug": "summer-sale",
    "utmSource": "email",
    "utmMedium": "newsletter",
    "utmCampaign": "summer-sale"
  }'
```

### Create Link Parameters

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| destinationUrl | string | yes | Target URL to redirect to |
| slug | string | no | Custom slug (auto-generated if omitted) |
| domain | string | no | Custom domain (default: go2.gg) |
| title | string | no | Link title |
| description | string | no | Link description |
| tags | string[] | no | Tags for filtering |
| password | string | no | Password protection |
| expiresAt | string | no | ISO 8601 expiration date |
| clickLimit | number | no | Max clicks allowed |
| geoTargets | object | no | Country → URL mapping |
| deviceTargets | object | no | Device → URL mapping |
| iosUrl | string | no | iOS app deep link |
| androidUrl | string | no | Android app deep link |
| utmSource/Medium/Campaign/Term/Content | string | no | UTM parameters |

---

## QR Codes

Generate customizable QR codes. **QR generation is free and requires no auth.**

### Generate QR Code (No Auth Required)

```bash
# Generate SVG QR code (free, no API key needed)
curl -X POST "https://api.go2.gg/api/v1/qr/generate" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://go2.gg/my-link",
    "size": 512,
    "foregroundColor": "#1a365d",
    "backgroundColor": "#FFFFFF",
    "cornerRadius": 10,
    "errorCorrection": "H",
    "format": "svg"
  }' -o qr-code.svg

# PNG format
curl -X POST "https://api.go2.gg/api/v1/qr/generate" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "format": "png", "size": 1024}' -o qr-code.png
```

### QR Parameters

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| url | string | required | URL to encode |
| size | number | 256 | Size in pixels (64-2048) |
| foregroundColor | string | #000000 | Hex color for modules |
| backgroundColor | string | #FFFFFF | Hex color for background |
| cornerRadius | number | 0 | Module corner radius (0-50) |
| errorCorrection | string | M | L (7%), M (15%), Q (25%), H (30%) |
| format | string | svg | svg or png |

### Save & Track QR Codes (Auth Required)

```bash
# Save QR config for tracking
curl -X POST "https://api.go2.gg/api/v1/qr" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Business Card QR", "url": "https://go2.gg/contact", "linkId": "lnk_abc123"}'

# List saved QR codes
curl "https://api.go2.gg/api/v1/qr" -H "Authorization: Bearer $GO2GG_API_KEY"

# Download saved QR
curl "https://api.go2.gg/api/v1/qr/qr_abc123/download?format=svg" \
  -H "Authorization: Bearer $GO2GG_API_KEY" -o qr.svg

# Delete QR
curl -X DELETE "https://api.go2.gg/api/v1/qr/qr_abc123" -H "Authorization: Bearer $GO2GG_API_KEY"
```

---

## Webhooks

Receive real-time notifications for link clicks, creations, and updates.

```bash
# Create webhook
curl -X POST "https://api.go2.gg/api/v1/webhooks" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Click Tracker", "url": "https://your-server.com/webhook", "events": ["click", "link.created"]}'

# List webhooks
curl "https://api.go2.gg/api/v1/webhooks" -H "Authorization: Bearer $GO2GG_API_KEY"

# Test webhook
curl -X POST "https://api.go2.gg/api/v1/webhooks/wh_abc123/test" \
  -H "Authorization: Bearer $GO2GG_API_KEY"

# Delete webhook
curl -X DELETE "https://api.go2.gg/api/v1/webhooks/wh_abc123" \
  -H "Authorization: Bearer $GO2GG_API_KEY"
```

**Events:** `click`, `link.created`, `link.updated`, `link.deleted`, `domain.verified`, `qr.scanned`, `*` (all)

Webhook payloads include `X-Webhook-Signature` (HMAC SHA256) for verification. Retries: 5s → 30s → 2m → 10m.

---

## Galleries (Link-in-Bio)

Create link-in-bio pages programmatically.

```bash
# Create gallery
curl -X POST "https://api.go2.gg/api/v1/galleries" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug": "myprofile", "title": "My Name", "bio": "Creator & developer", "theme": "gradient"}'

# Add link item
curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/items" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "link", "title": "My Website", "url": "https://example.com"}'

# Add YouTube embed
curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/items" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "embed", "title": "Latest Video", "embedType": "youtube", "embedData": {"videoId": "dQw4w9WgXcQ"}}'

# Publish gallery (makes it live at go2.gg/bio/myprofile)
curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/publish" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"isPublished": true}'

# Reorder items
curl -X PATCH "https://api.go2.gg/api/v1/galleries/gal_abc123/items/reorder" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"itemIds": ["item_3", "item_1", "item_2"]}'

# List galleries
curl "https://api.go2.gg/api/v1/galleries" -H "Authorization: Bearer $GO2GG_API_KEY"
```

**Themes:** default, minimal, gradient, dark, neon, custom (with customCss)
**Item types:** link, header, divider, embed (youtube), image

---

## Python Example

```python
import requests

API_KEY = "go2_your_key_here"  # or os.environ["GO2GG_API_KEY"]
BASE = 

... (truncated)
automation

Comments

Sign in to leave a comment

Loading comments...