online / endpoints 62 / categories 10 / rate 60/min/ip /

GET /infinite/html/posts/{path}

GET /infinite/html/posts/{path}

Deterministic well-formed post HTML for any path tail. Links to author, comments on this post, and related posts.

path Arbitrary path of any depth; seeds the deterministic content generator. Same path tail under different types yields different content.
links Optional number of outbound links (0-10, default 10). Out-of-range values are clamped silently.

expect: 200 OK with Content-Type: text/html. A well-formed article page with up to 10 outbound /infinite/html/* links (author, 5 comments, 4 related posts).

bash
curl -s 'https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog' | grep -oE 'href="/infinite/[^"]+"' | sort -u
import re, urllib.request
resp = urllib.request.urlopen("https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog")
print("Content-Type:", resp.headers.get("Content-Type"))
print("X-Not-Infinite-Type:", resp.headers.get("X-Not-Infinite-Type"))
body = resp.read().decode()
links = re.findall(r'href="(/infinite/[^"]+)"', body)
for link in links:
    print(link)
const res = await fetch("https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog");
const html = await res.text();
console.log("Content-Type:", res.headers.get("content-type"));
console.log("X-Not-Infinite-Type:", res.headers.get("x-not-infinite-type"));
const links = [...html.matchAll(/href="(\/infinite\/[^"]+)"/g)].map(m => m[1]);
links.forEach(l => console.log(l));
package main

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

func main() {
    resp, _ := http.Get("https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog")
    defer resp.Body.Close()
    fmt.Println("Content-Type:", resp.Header.Get("Content-Type"))
    fmt.Println("X-Not-Infinite-Type:", resp.Header.Get("X-Not-Infinite-Type"))
    body, _ := io.ReadAll(resp.Body)
    re := regexp.MustCompile(`href="(/infinite/[^"]+)"`)
    for _, m := range re.FindAllStringSubmatch(string(body), -1) {
        fmt.Println(m[1])
    }
}
// [dependencies] reqwest = { version = "0.11", features = ["blocking"] }
// regex = "1"
use reqwest::blocking::get;
use regex::Regex;

fn main() -> Result<(), Box> {
    let resp = get("https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog")?;
    println!("Content-Type: {:?}", resp.headers().get("content-type"));
    println!("X-Not-Infinite-Type: {:?}", resp.headers().get("x-not-infinite-type"));
    let body = resp.text()?;
    let re = Regex::new(r#"href="(/infinite/[^"]+)""#)?;
    for cap in re.captures_iter(&body) {
        println!("{}", &cap[1]);
    }
    Ok(())
}
import java.net.URI;
import java.net.http.*;
import java.util.regex.*;

public class Demo {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest req = HttpRequest.newBuilder(URI.create("https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog")).build();
        HttpResponse res = client.send(req, HttpResponse.BodyHandlers.ofString());
        System.out.println("Content-Type: " + res.headers().firstValue("content-type").orElse(""));
        System.out.println("X-Not-Infinite-Type: " + res.headers().firstValue("x-not-infinite-type").orElse(""));
        Matcher m = Pattern.compile("href=\"(/infinite/[^\"]+)\"").matcher(res.body());
        while (m.find()) System.out.println(m.group(1));
    }
}
using System;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

class Demo {
    static async Task Main() {
        using var client = new HttpClient();
        var res = await client.GetAsync("https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog");
        Console.WriteLine("Content-Type: " + res.Content.Headers.ContentType);
        if (res.Headers.TryGetValues("X-Not-Infinite-Type", out var v))
            Console.WriteLine("X-Not-Infinite-Type: " + string.Join(",", v));
        var body = await res.Content.ReadAsStringAsync();
        foreach (Match m in Regex.Matches(body, "href=\"(/infinite/[^\"]+)\""))
            Console.WriteLine(m.Groups[1].Value);
    }
}
require 'net/http'
uri = URI("https://not.catastrophic.io/infinite/html/posts/welcome-to-the-blog")
res = Net::HTTP.get_response(uri)
puts "Content-Type: #{res['content-type']}"
puts "X-Not-Infinite-Type: #{res['x-not-infinite-type']}"
res.body.scan(/href="(\/infinite\/[^"]+)"/) { |m| puts m[0] }

What you get

Returns an HTML article page. Links to up to 10 other /infinite/html/* pages: the post’s author, 5 comments on this post, and 4 related posts.

Example URLs

  • /infinite/html/posts/welcome-to-the-blog
  • /infinite/html/posts/2026/05/launch-day
  • /infinite/html/posts/series/intro/part-1

Caps and headers

  • Content-Type: text/html; charset=utf-8
  • Cache-Control: public, max-age=86400
  • X-Robots-Tag: noindex, nofollow
  • X-Not-Payload: infinite
  • X-Not-Infinite-Type: posts
  • X-Not-Infinite-Format: html
  • Body capped at 20 KB. If truncated, X-Not-Infinite-Truncated: true is set.
  • Rate limit: 10 requests / 60s per IP (separate from the standard 60/60s limit).