Skip to main content

Git Gazette API for Agents

Get AI-generated repository articles via x402 payment.
No API keys. No accounts. Just pay and receive.

$0.02 USDC per articleBase mainnetInstant settlement

Quick Start

Install the x402 fetch wrapper to handle payment automatically:

bash
npm install x402-fetch viem
typescript
import { wrapFetchWithX402 } from "x402-fetch";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const account = privateKeyToAccount(PRIVATE_KEY);
const wallet = createWalletClient({
  account,
  chain: base,
  transport: http(),
});

const fetchWithPayment = wrapFetchWithX402(fetch, wallet);

const res = await fetchWithPayment(
  "https://gitgazette.com/api/x402/article",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      repo: "facebook/react",
      language: "en",
      columnist: "rita",
    }),
  }
);

const article = await res.json();

Endpoint

POSThttps://gitgazette.com/api/x402/article
Payment
$0.02 USDC on Base mainnet
Protocol
x402 (HTTP 402 Payment Required)
Content-Type
application/json

Request Parameters

FieldTypeRequiredDescription
repostringyesGitHub repo URL or owner/repo shorthand (e.g. "facebook/react")
languagestringyes"en", "es", or "fr"
columniststringyesSee Columnists table below

Repo accepts these formats: "facebook/react", "https://github.com/facebook/react". Activity window is fixed at 7 days.

Columnists

ValueNameCovers
ritaRita ConflictsonIssue drama & debates
prestonPreston Mergington IIIPR reviews & code quality
semverCaptain SemverReleases & deploys
floFlo StargazerCommunity & contributors
patchPatch WiresecSecurity advisories & CVEs

"max" (Max Summarino / TL;DR) is not available via this endpoint. The TL;DR column requires all other articles as context.

Response

Successful requests return HTTP 200 with the following JSON:

json
{
  "article": {
    "headline": "React's PR Queue Erupts in a Merge Conflict Telenovela",
    "body": "## The Drama\n\nThis week in React...",
    "author_name": "Rita Conflictson",
    "column_name": "The Drama Desk",
    "sources": ["#28734", "#28691"],
    "language": "en"
  },
  "metadata": {
    "repo": "facebook/react",
    "provider": "github",
    "repo_url": "https://github.com/facebook/react",
    "columnist": "rita",
    "generated_at": "2026-03-27T14:30:00.000Z",
    "cached": false,
    "time_window_days": 7
  }
}

Patch Wiresec: Security Metadata

When columnist is "patch", the metadata includes a security object:

json
"security": {
  "status": "warning",
  "advisory_count": 2,
  "has_security_policy": true
}

No Security Issues (Patch)

When requesting Patch and no issues are found, the response returns article: null:

json
{
  "article": null,
  "security_status": "clear",
  "message": "No security issues found for this repository in the last 7 days.",
  "metadata": {
    "repo": "facebook/react",
    "provider": "github",
    "columnist": "patch",
    "security": { "status": "clear", "advisory_count": 0 }
  }
}

Errors

StatusCodeDescription
400invalid_bodyRequest body is not valid JSON
400missing_reporepo field is empty or missing
400invalid_languageLanguage not in allowed list (en, es, fr)
400invalid_columnistColumnist name not recognized
400max_not_availableMax Summarino (TL;DR) cannot be requested individually
400invalid_repo_urlCould not parse the repository URL
402(x402)Payment Required — standard x402 response with payment details
403repo_not_eligibleRepository blocked by content filter
403injection_detectedRepository contains unsafe content patterns
429rate_limitedRate limit reached. Includes Retry-After header (seconds)
500generation_failedArticle generation failed

Caching

Articles are cached for 7 days. If the same repo + columnist + language combination was recently generated, the cached version is returned instantly.

You still pay $0.02 for cached responses — the payment is for access, not generation.

If an article exists in a different language, it may be translated rather than regenerated (faster, same cost).

Rate Limits

Rate limits are applied per wallet address. The price stays flat at $0.02 regardless of usage.

  • 10 requests per 5 minutes per wallet
  • 50 requests per day per wallet

When rate limited, the endpoint returns 429 with a Retry-After header (seconds until the limit resets). You are not charged for 429 responses.

Network Details

Network

Base mainnet (eip155:8453)

Token

USDC

Price

$0.02 per request

Facilitator

CDP (api.cdp.coinbase.com)

Protocol

x402 v2