Git Push Tracker
Secret
Click to select, then copy. This won't be shown again.
New Project
Projects

Loading...

API Documentation

How It Works

Git Push Tracker receives push events from GitHub/GitLab via webhooks, generates AI summaries using Google Gemini, and exposes them through a REST API. Each project has its own API key — consumers only see pushes from their project.


Quick Setup (4 steps)

1

Create a project

Use the form above. You'll get a webhook URL and a webhook secret.

2

Configure the webhook in your repo

GitHub: Settings → Webhooks → Add webhook. Paste the URL, set secret, content type application/json, select "Just the push event".

GitLab: Settings → Webhooks → Add. Paste the URL, set secret token, check "Push events".

3

Generate an API key

Click + Key on your project card. Save the key immediately — it's only shown once. Give it a label like "dashboard" or "slack-bot".

4

Consume the API

Make a GET request with your API key as a Bearer token:

# Fetch AI-generated push summaries for your project
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "DOMAIN_PLACEHOLDER/api/v1/pushes"

One key = one project. Each API key is scoped to a single project. If you have 5 projects, you need 5 different keys. A key from project A will never return data from project B.


API Endpoint

GET /api/v1/pushes

Headers:

Authorization: Bearer gpt_abc123...

Query parameters (all optional):

limit=20       # Results per page (default 20, max 100)
offset=0      # Pagination offset
branch=main   # Filter by branch name
since=2024-01-01  # Filter by date (ISO 8601)

Response Format

{
  "project": "my-app",
  "pushes": [
    {
      "id": "550e8400-e29b-41d4-...",
      "branch": "main",
      "author": "molimat",
      "commitCount": 3,
      "summary": "- Added OAuth endpoint\n- Fixed Redis timeout\n- Updated deps",
      "pushedAt": "2026-04-14T10:30:00.000Z"
    }
  ],
  "pagination": {
    "limit": 20,
    "offset": 0,
    "total": 42
  }
}

Integration Examples

JavaScript / Node.js:

const res = await fetch('DOMAIN_PLACEHOLDER/api/v1/pushes?limit=5', {
  headers: { Authorization: 'Bearer YOUR_API_KEY' }
});
const { pushes } = await res.json();
pushes.forEach(p => console.log(p.summary));

Python:

import requests

res = requests.get(
    "DOMAIN_PLACEHOLDER/api/v1/pushes",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    params={"branch": "main", "limit": 10}
)
for push in res.json()["pushes"]:
    print(push["summary"])

Using with an AI agent (prompt context):

# Give your AI agent recent project activity as context:
#
# "Here are the recent changes pushed to the project:
# {paste the summaries from the API response}"
#
# The AI can then answer questions like:
# - "What was deployed today?"
# - "Who worked on auth last week?"
# - "Summarize this sprint's changes"

FAQ

Does one endpoint return all projects?
No. Each API key is tied to one project. The endpoint GET /api/v1/pushes is the same for all projects, but the Bearer token determines which project's data you see.

Can someone see another project's pushes?
No. API keys are project-scoped. There is no way to query across projects with a single key.

How fast are summaries generated?
The background worker processes pending pushes every 10 seconds. After a push, you should see the AI summary within ~15-20 seconds.

What if Gemini fails?
Failed pushes retry automatically up to 3 times. Check the "pending" count on your project card — if it stays high, the Gemini API key may be invalid or rate-limited.

Can I use this with a Slack bot / dashboard widget?
Yes. Generate a dedicated API key labeled "slack-bot" or "widget" and call the endpoint from your integration. The response is plain JSON.