CreateFlow API Docs
Public Developer Platform

CreateFlow API

Stable, read-only /api/v1 endpoints for hobbyist developers. Each feature section below includes ready-to-use examples in cURL, JavaScript, and Python.

v1 Base URL

/api/v1

Primary Success Shape

{ status, data, meta }

Privacy

Subscriber listing disabled

Items

Read item catalog data from stable v1 endpoints.

GET/api/v1/catalog/itemsPublic

List Items Dataset

Returns the full items dataset in the v1 envelope.

cURL

curl 'https://createflow.app/api/v1/catalog/items'

JavaScript

const res = await fetch('https://createflow.app/api/v1/catalog/items');
const json = await res.json();
console.log(json.data.length);

Python

import requests
res = requests.get('https://createflow.app/api/v1/catalog/items')
print(len(res.json()['data']))

Response Preview

{
  "status": "ok",
  "data": [
    { "id": "minecraft:iron_ingot", "label": "Iron Ingot" }
  ],
  "meta": { "version": "v1", "generatedAt": "..." }
}

Recipes

Use stable v1 recipes dataset endpoint.

GET/api/v1/catalog/recipesPublic

List Recipes Dataset (Stable)

Returns the prebuilt recipes dataset in v1 shape.

cURL

curl 'https://createflow.app/api/v1/catalog/recipes'

JavaScript

const res = await fetch('https://createflow.app/api/v1/catalog/recipes');
const json = await res.json();
console.log(json.data[0]);

Python

import requests
res = requests.get('https://createflow.app/api/v1/catalog/recipes')
print(res.json()['data'][0])

Response Preview

{
  "status": "ok",
  "data": [
    {
      "type": "minecraft:crafting_shaped",
      "ingredients": [{ "id": "minecraft:iron_ingot", "count": 1 }],
      "results": [{ "id": "minecraft:bucket", "count": 1 }]
    }
  ],
  "meta": { "version": "v1", "generatedAt": "..." }
}

Tags

Read complete tag mappings (item/block tag references).

GET/api/v1/catalog/tagsPublic

List Tags Dataset

Returns tags data in the v1 envelope.

cURL

curl 'https://createflow.app/api/v1/catalog/tags'

JavaScript

const res = await fetch('https://createflow.app/api/v1/catalog/tags');
const json = await res.json();
console.log(Object.keys(json.data).slice(0, 5));

Python

import requests
res = requests.get('https://createflow.app/api/v1/catalog/tags')
data = res.json()['data']
print(list(data.keys())[:5])

Response Preview

{
  "status": "ok",
  "data": {
    "minecraft:planks": ["minecraft:oak_planks", "minecraft:spruce_planks"]
  },
  "meta": { "version": "v1", "generatedAt": "..." }
}

Public Projects

Search and paginate community projects for custom explorers.

GET/api/v1/projects/publicPublic

Search Public Projects

Supports filtering, sorting, and summary mode.

Query params: page, limit, q, owner, sort, includeContent

cURL

curl 'https://createflow.app/api/v1/projects/public?page=1&limit=10&q=brass&owner=demo&sort=updated_desc&includeContent=false'

JavaScript

const params = new URLSearchParams({ page: '1', limit: '10', q: 'brass', includeContent: 'false' });
const res = await fetch(`https://createflow.app/api/v1/projects/public?${params}`);
const json = await res.json();
console.log(json.meta, json.data);

Python

import requests
params = {'page': 1, 'limit': 10, 'q': 'brass', 'includeContent': 'false'}
res = requests.get('https://createflow.app/api/v1/projects/public', params=params)
print(res.json()['meta'])

Response Preview

{
  "status": "ok",
  "data": [
    {
      "id": "proj_123",
      "name": "Brass Factory",
      "description": "Compact brass line",
      "ownerName": "Demo User",
      "downloads": 0
    }
  ],
  "meta": {
    "version": "v1",
    "page": 1,
    "limit": 10,
    "total": 42,
    "pages": 5,
    "includeContent": false,
    "sort": "updated_desc"
  }
}

Changelog

Build release trackers and bot notifications.

GET/api/v1/changelog/latestPublic

Latest Release (Stable)

Returns newest release entry in v1 envelope.

cURL

curl 'https://createflow.app/api/v1/changelog/latest'

JavaScript

const res = await fetch('https://createflow.app/api/v1/changelog/latest');
const json = await res.json();
console.log(json.data.version);

Python

import requests
res = requests.get('https://createflow.app/api/v1/changelog/latest')
print(res.json()['data'].get('version'))

Response Preview

{
  "status": "ok",
  "data": {
    "version": "0.0.9a",
    "dateLabel": "2026-04-05",
    "sections": [{ "title": "Fixed", "items": ["..."] }]
  },
  "meta": { "version": "v1", "generatedAt": "..." }
}
GET/api/v1/changelog?format=latestPublic

Latest Release (Format Variant)

Same v1 changelog route using format=latest.

cURL

curl 'https://createflow.app/api/v1/changelog?format=latest'

JavaScript

const res = await fetch('https://createflow.app/api/v1/changelog?format=latest');
const json = await res.json();
console.log(json.data.version);

Python

import requests
res = requests.get('https://createflow.app/api/v1/changelog', params={'format': 'latest'})
print(res.json()['data'].get('version'))

Response Preview

{
  "status": "ok",
  "data": {
    "version": "0.0.9a",
    "dateLabel": "2026-04-05",
    "sections": [{ "title": "Changed", "items": ["..."] }]
  }
}

Stats

Lightweight stats for dashboards and status widgets.

GET/api/v1/stats/catalogPublic

Catalog Stats

Returns dataset counts and versions.

cURL

curl 'https://createflow.app/api/v1/stats/catalog'

JavaScript

const res = await fetch('https://createflow.app/api/v1/stats/catalog');
const json = await res.json();
console.log(json.data.entries);

Python

import requests
res = requests.get('https://createflow.app/api/v1/stats/catalog')
print(res.json()['data']['entries'])

Response Preview

{
  "status": "ok",
  "data": {
    "generatedAt": "...",
    "entries": [
      { "dataset": "items", "available": true, "count": 12000, "version": "abc123" }
    ]
  },
  "meta": { "version": "v1", "generatedAt": "..." }
}
GET/api/v1/stats/projectsPublic

Public Project Stats

Returns total public projects and latest update timestamp.

cURL

curl 'https://createflow.app/api/v1/stats/projects'

JavaScript

const res = await fetch('https://createflow.app/api/v1/stats/projects');
const json = await res.json();
console.log(json.data.totalPublicProjects);

Python

import requests
res = requests.get('https://createflow.app/api/v1/stats/projects')
print(res.json()['data']['totalPublicProjects'])

Response Preview

{
  "status": "ok",
  "data": {
    "totalPublicProjects": 42,
    "latestUpdate": "2026-04-08T12:00:00.000Z"
  },
  "meta": { "version": "v1", "generatedAt": "..." }
}

OpenAPI

Machine-readable API schema for generated clients and tools.

GET/api/openapi.jsonPublic

OpenAPI Specification

Programmatic API contract for tooling/codegen.

cURL

curl 'https://createflow.app/api/openapi.json'

JavaScript

const res = await fetch('https://createflow.app/api/openapi.json');
const spec = await res.json();
console.log(spec.paths);

Python

import requests
spec = requests.get('https://createflow.app/api/openapi.json').json()
print(spec['openapi'])

Response Preview

{
  "openapi": "3.1.0",
  "info": { "title": "CreateFlow Public API", "version": "1.0.0" },
  "paths": {
    "/v1/catalog/{dataset}": { "get": { "...": "..." } }
  }
}

Privacy & Disabled Endpoints

Endpoints intentionally blocked to prevent sensitive data exposure.

GET/api/newsletter/listDisabled

Subscriber Listing

Disabled endpoint. Always returns forbidden.

cURL

curl -i 'https://createflow.app/api/newsletter/list'

JavaScript

const res = await fetch('https://createflow.app/api/newsletter/list');
console.log(res.status); // 403

Python

import requests
res = requests.get('https://createflow.app/api/newsletter/list')
print(res.status_code)  # 403

Response Preview

{
  "error": {
    "code": "FORBIDDEN",
    "message": "Newsletter subscriber listing is disabled for privacy."
  }
}

Response, Auth, and Errors

  • v1 success: { status: "ok", data, meta }
  • Error: { error: { code, message } }
  • Rate headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • Stability: use /api/v1/* for external integrations.
  • Versioning: breaking changes ship under a new namespace (for example /api/v2).