Introdução

GeoSVG é uma API REST que gera SVG de geometria sagrada sob demanda. Roda na borda da Cloudflare Workers — latência média de 10ms.

Base URL: https://geosvg.pages.dev

Autenticação

O plano Free usa rate limit por IP (10 req/dia). O plano Pro usa uma chave de API enviada no header Authorization: Bearer <api_key>.

Endpoints

GET /api/generate

GET

Gera um SVG de geometria sagrada.

Parâmetros

NomeTipoPadrãoDescrição
patternstringflower-of-lifeNome do pattern
sizenumber400Tamanho do viewBox (px)
colorstringcurrentColorCor do stroke (hex ou nome)
formatstringsvgsvg (raw) ou json

Exemplo

curl "https://geosvg.pages.dev/api/generate?pattern=flower-of-life&size=600&color=%2300e5ff"

Resposta (formato svg)

Content-Type: image/svg+xml

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600">
  <rect width="600" height="600" fill="#0a0a0f"/>
  <circle cx="300" cy="300" r="108" ... />
  ...
</svg>

Resposta (formato json)

{
  "pattern": "flower-of-life",
  "size": 600,
  "svg": "<svg ...>...</svg>",
  "color": "#00e5ff",
  "rateLimit": {
    "remaining": 9,
    "reset": 1711234567
  }
}

GET /api/patterns

GET

Lista todos os patterns disponíveis.

curl "https://geosvg.pages.dev/api/patterns"
{
  "patterns": ["flower-of-life", "metatrons-cube", "sri-yantra", ...],
  "count": 12
}

GET /api/health

GET

Verifica o status da API.

POST /api/checkout

POST

Cria uma sessão de checkout Stripe para o plano Pro.

curl -X POST "https://geosvg.pages.dev/api/checkout" \
  -H "Content-Type: application/json" \
  -d '{"plan": "pro"}'
{
  "url": "https://checkout.stripe.com/...",
  "sessionId": "cs_test_..."
}

Preços

PlanoPreçoLimite
FreeGrátis10 req/dia
ProUS$ 5/mês500 req/mês

Exemplos

JavaScript (Fetch)

const response = await fetch(
  "https://geosvg.pages.dev/api/generate?pattern=metatrons-cube&size=400&format=json"
);
const data = await response.json();
document.getElementById("target").innerHTML = data.svg;

Python

import requests

resp = requests.get(
    "https://geosvg.pages.dev/api/generate",
    params={"pattern": "sri-yantra", "size": 500, "format": "svg"}
)
with open("sri-yantra.svg", "wb") as f:
    f.write(resp.content)

React

function SacredGeometry({ pattern, size }) {
  const [svg, setSvg] = useState(null);

  useEffect(() => {
    fetch(`/api/generate?pattern=${pattern}&size=${size}&format=json`)
      .then(r => r.json())
      .then(d => setSvg(d.svg));
  }, [pattern, size]);

  if (!svg) return <div>Carregando...</div>;
  return <div dangerouslySetInnerHTML={{ __html: svg }} />;
}

HTML (img tag com cache)

<img src="https://geosvg.pages.dev/api/generate?pattern=mandala&size=300" alt="Mandala SVG" loading="lazy" />

SDK / Clients

Não há SDK oficial. A API é REST pura — qualquer HTTP client resolve. O cache público (3600s) permite usar a URL diretamente em tags <img> sem se preocupar com rate limit para assets estáticos.

Erros

CódigoSignificado
400Pattern inválido ou parâmetro incorreto
429Rate limit excedido
500Erro interno do servidor

Testar ao Vivo

Experimente agora