API Documentation

Integrate GetSignalHooks into your workflow. All authenticated endpoints accept a Bearer token via the Authorization header.

Authentication

You can authenticate using either your master bearer token (set in your environment) or a self-serve API key (prefixed with gsh_).

# Using bearer token
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://app.getsignalhooks.com/api/leads

# Using API key
curl -H "Authorization: Bearer gsh_your_api_key" \
  https://app.getsignalhooks.com/api/leads

Endpoints

POST/api/leadsAuth required

Create leads in batch. Duplicates by email are silently skipped.

Request Body

{
  "leads": [
    {
      "email": "jane@acme.com",
      "name": "Jane Doe",
      "title": "VP Sales",
      "company_name": "Acme Inc",
      "company_website": "https://acme.com",
      "source": "apollo"
    }
  ]
}

Response

{ "created": 1, "leads": [{ "id": "...", "email": "jane@acme.com", ... }] }
GET/api/leadsAuth required

List leads. Optional query params: status (cold|in_conversation|won|lost|unreachable), limit (max 500).

Response

{ "leads": [{ "id": "...", "email": "...", "status": "cold", ... }] }
POST/api/generate-hooks

Generate signal-backed opening lines from a company URL or name. Returns results with confidence scores and evidence tiers.

Request Body

{
  "url": "https://acme.com",
  "company_name": "Acme Inc"
}

Response

{
  "hooks": [
    {
      "text": "...",
      "angle": "trigger",
      "confidence": "high",
      "evidence_tier": "A",
      "source_snippet": "..."
    }
  ]
}
POST/api/generate-hooks-batch

Batch hook generation for multiple URLs (up to 75 for Pro tier).

Request Body

{ "urls": ["https://acme.com", "https://example.com"] }

Response

{ "results": [{ "url": "...", "hooks": [...] }] }
POST/api/generate-followupAuth required

Generate a follow-up email for a lead at a given sequence step. Uses angle rotation to avoid repeating hooks.

Request Body

{
  "lead_id": "uuid-here",
  "step": 1,
  "mode": "send",
  "avoid_angle": "trigger"
}

Response

{
  "email": { "subject": "...", "body": "..." },
  "meta": { "angle": "risk", "confidence": "high" }
}
GET/api/followup/dueAuth required

Check which leads are due for follow-up. Used by the n8n Follow-Up Engine workflow.

Response

{
  "leads": [
    {
      "lead_id": "...",
      "email_to": "...",
      "followup_step": 1,
      "mode": "send"
    }
  ]
}
GET/api/n8n-templatesAuth required

List available n8n workflow templates. Add ?id=<template-id> to get the full workflow JSON for import.

Response

{
  "templates": [
    {
      "id": "followup-core",
      "name": "Follow-Up Engine Core",
      "category": "automation",
      "requiredCredentials": ["GSH_AUTH", "GMAIL_CRED"]
    }
  ]
}
POST/api/api-keysAuth required

Create a new API key. The full key is only shown once in the response. Requires the master bearer token.

Request Body

{
  "name": "My Integration",
  "scopes": ["leads", "hooks", "followups"],
  "expires_at": "2026-12-31T00:00:00Z"
}

Response

{
  "id": "...",
  "name": "My Integration",
  "key": "gsh_abc123...",
  "key_prefix": "gsh_abc12345",
  "scopes": ["leads", "hooks", "followups"]
}

Rate Limits

TierHooks / monthBatch sizeFollow-Up Engine
Starter ($35)~20010 URLs-
Pro ($179)~75075 URLsIncluded
Concierge ($599)Unlimited75 URLsManaged