Find an API

Search public APIs with auth details & Postman guides

← All APIs

Webhook.site API

webhook.site · Developer Tools

Developer Tools No Auth Free Tier Webhooks Testing HTTP

Instantly create unique URLs to inspect incoming HTTP requests — see headers, body, and query params in real time. Perfect for testing webhooks. Free, no signup required.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

POST Create a webhook URL

Create a new unique URL to capture incoming requests.

https://webhook.site/token

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
Content-Type application/json
curl -X POST "https://webhook.site/token" \
  -H "Content-Type: application/json"
import requests
headers = {
    "Content-Type": "application/json"
}
response = requests.post(
    "https://webhook.site/token",
    headers=headers,
)
print(response.json())
const url = 'https://webhook.site/token';

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://webhook.site/token"
	req, _ := http.NewRequest("POST", targetURL, nil)
	req.Header.Set("Content-Type", "application/json")

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://webhook.site/token")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Post.new(uri)
req["Content-Type"] = "application/json"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://webhook.site/token";
$opts = ["http" => [
    "method" => "POST",
    "header" => implode("\r\n", [
        "Content-Type: application/json"
    ]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get requests

Retrieve all requests received at your webhook URL.

https://webhook.site/token/YOUR_UUID/requests

Hover any highlighted part to learn what it does

curl -X GET "https://webhook.site/token/YOUR_UUID/requests"
import requests
response = requests.get(
    "https://webhook.site/token/YOUR_UUID/requests",
)
print(response.json())
const url = 'https://webhook.site/token/YOUR_UUID/requests';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://webhook.site/token/YOUR_UUID/requests"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://webhook.site/token/YOUR_UUID/requests")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://webhook.site/token/YOUR_UUID/requests";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. Visit webhook.site in browser — you get a unique URL immediately
  2. No signup needed for testing
  3. Programmatically create URLs: POST https://webhook.site/token
  4. View requests: GET https://webhook.site/token/{uuid}/requests
  5. Use in Postman to inspect outgoing webhook payloads

Open documentation ↗