Webhooks voor verlopen domeinen

Expired Domains-webhooks die een POST sturen als een domein matcht — of een prijs beweegt

Abonneer met dezelfde Pro-sleutel als de Public API. Karma.Domains stuurt een ondertekend JSON-event naar Zapier, Make, n8n, IFTTT of elke openbare HTTPS-URL als een filter matcht, een veiling verandert, of je een notitie, een favoriet of een gebruikerstaak bijwerkt.

30 Abonnementen
5.000 Leveringen per dag
3 Abonnementssoorten
60/min Gedeelde rate limit
Vraag de AI
  • ChatGPT
  • Claude
  • Gemini
  • Grok
  • Perplexity

Koppel Zapier, Make, n8n of IFTTT

Maak een webhook-trigger in je tool, kopieer de HTTPS-URL en registreer die met POST /v1/webhooks. Dezelfde aanroep werkt voor elke client — alleen de URL verandert.

Vereist het Pro-plan of hoger. Maak of reset de sleutel in Profiel → Ontwikkelaar. Behandel hem als een wachtwoord.

Abonnementen 30 per account
Leveringen 5.000 per UTC-dag
Rate limit 60 verzoeken/minuut per sleutel (gedeeld met Public API en MCP)

Zapier — Webhooks by Zapier, Catch Hook

  1. Maak een Zap en kies Webhooks by Zapier als trigger. Kies Catch Hook.
  2. Kopieer de HTTPS-webhook-URL die Zapier toont.
  3. Stuur POST /v1/webhooks met je Pro-sleutel, die URL, een kind en de events die je wilt. Test de Zap na de eerste levering.
curl https://api.karma.domains/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "filter",
    "url": "https://hooks.zapier.com/hooks/catch/123456/abcdef",
    "events": ["domain.matched_filter"],
    "bases": ["expired", "auctions"],
    "filter": { "karmascore_min": 60 }
  }'

Drie manieren om te abonneren

Eén event is één rapport, behalve gebruikerstaak-events, die één event per taak zijn. Het geheim komt alleen terug als je het abonnement aanmaakt of roteert.

Filtertreffer

kind=filter stuurt domain.matched_filter als een rapport dezelfde filters begint te matchen als POST /v1/reports/search. De cursor start bij het abonneren, oudere rijen worden niet opnieuw afgespeeld. Een rapport dat opnieuw matcht nadat het het filter heeft verlaten, kan weer afgaan.

Abonneren

curl https://api.karma.domains/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "filter",
    "url": "https://hooks.example.com/karma",
    "events": ["domain.matched_filter"],
    "bases": ["expired", "auctions"],
    "filter": { "karmascore_min": 60 }
  }'

Event dat je ontvangt

{
  "id": "evt_example",
  "type": "domain.matched_filter",
  "version": "1",
  "subscription_id": "sub_example",
  "object": {
    "domain": "example.com",
    "report_id": "665f0example",
    "report_type": "expired"
  },
  "data": { "current": { "changed_at": 1710000000 } },
  "links": { "report": "https://karma.domains/app/reports/expired/report-665f0example/" }
}

Een specifiek rapport

kind=reports volgt tot 100 rapporten. Veilingevents dekken prijs, aantal biedingen, bijna afgelopen en afgelopen. Notitie-, tag- en favorietevents gaan alleen af voor het account dat de wijziging deed — een ander account dat hetzelfde rapport voor de prijs volgt, ontvangt ze niet. ending_soon_seconds is alleen verplicht als je auction.ending_soon selecteert.

Abonneren

curl https://api.karma.domains/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "reports",
    "url": "https://hooks.example.com/karma",
    "events": ["auction.price_changed", "report.note_changed"],
    "reports": [{ "report_type": "auctions", "report_id": "665f0example" }]
  }'

Event dat je ontvangt

{
  "id": "evt_example",
  "type": "auction.price_changed",
  "version": "1",
  "subscription_id": "sub_example",
  "object": {
    "domain": "example.com",
    "report_id": "665f0example",
    "report_type": "auctions"
  },
  "data": {
    "current": { "price": 120, "bid_count": 4 },
    "previous": { "price": 100, "bid_count": 3 },
    "changes": { "price_delta": 20, "bid_count_delta": 1 }
  }
}

Gebruikerstaken

kind=user heeft geen filter en geen rapportlijst. usertask.created gaat één keer af als een taak wordt opgeslagen. usertask.completed gaat één keer af als die klaar is. Voortgangsticks worden niet gestuurd. De payload noemt de taak en het aantal rapporten — niet elk domein in de taak.

Abonneren

curl https://api.karma.domains/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "user",
    "url": "https://hooks.example.com/karma",
    "events": ["usertask.created", "usertask.completed"]
  }'

Event dat je ontvangt

{
  "id": "evt_example",
  "type": "usertask.completed",
  "version": "1",
  "subscription_id": "sub_example",
  "object": {
    "task_id": "665f0task",
    "report_type": "expired"
  },
  "data": {
    "current": { "task_name": "French plumbing", "reports_count": 12 }
  }
}

Leveringen zijn ondertekend met Standard Webhooks. Elke POST bevat webhook-id, webhook-timestamp en webhook-signature. Het whsec_-geheim komt één keer terug, bij aanmaken en bij rotatie. Stuur POST /v1/webhooks/{id}/ping om een webhook.ping te leveren en de URL te bevestigen.

Veelgestelde vragen

Is dit dezelfde sleutel als de Public API?

Ja. Eén Pro-sleutel uit Profiel → Ontwikkelaar voor REST, MCP en webhooks. Abonnementen aanmaken en bijwerken telt mee voor de gedeelde 60 verzoeken per minuut.

Wat zijn de webhooklimieten?

30 abonnementen per account en 5.000 leveringen per UTC-dag. Voorbij het dagplafond wordt het abonnement quota_paused tot de volgende UTC-dag. Je kunt een abonnement zelf pauzeren met PATCH.

Op welke events kan ik abonneren?

kind=filter accepteert alleen domain.matched_filter. kind=reports accepteert auction.price_changed, auction.bid_count_changed, auction.ending_soon, auction.ended, report.note_changed, report.tags_changed en report.favorite_changed. kind=user accepteert usertask.created en usertask.completed.

Waarom ontbreekt Majestic (of een andere metric) in het event?

Rapportgegevens komen op de achtergrond binnen, niet in één keer. Een filter dat een metric niet vereist, kan matchen voordat die metric bestaat. Een rapport met lage prioriteit ontvangt hem misschien nooit.

Moet ik een verplichte metric in het filter zetten?

Ja, als je alleen rapporten wilt die hem al hebben. Dat versmalt de set en kan het event uitstellen tot de metric is verzameld. Bij verlopen domeinen telt die vertraging — de naam kan de feed verlaten terwijl je wacht. Als je het vroegste signaal nodig hebt, laat de metric weg en controleer hem na de POST.

In welke volgorde verschijnen metrics meestal?

Eerst veilinggegevens, dan Karma Metric, dan Karma Score en archiefinhoud, dan SEO-metrics (Majestic, Moz, Ahrefs en de rest), dan Google-gegevens. Er is geen vaste wachttijd. Een latere stap kan worden overgeslagen.

Gaan notitie- en favorietevents naar iedereen die dat rapport volgt?

Nee. Die events gaan alleen naar abonnementen van het account dat de notitie, tags of favoriet wijzigde. Een watch op hetzelfde rapport voor prijsupdates blijft bij veilingevents.

Waar staat het requestschema?

Types en een try-it-console staan in Swagger UI. De pagina Public API behandelt zoeken, rapporten en de rest van REST.

Dezelfde voorraad als de app — naar jouw URL

Registreer een HTTPS-endpoint en ontvang events

Eén Pro-sleutel. 30 abonnementen. 5.000 leveringen per dag.

Pro Plan vereist
30 Abonnementen
5.000 Leveringen per dag
API-sleutel ophalen

Liever zelf ophalen? Zie de Public API

Liever chat? Zie de MCP-server