BYTETOOLS

DreamThreads API

Free dream analysis API with no key: POST a dream narrative and get back structured entities, actions, actors, locations and emotions with confidence scores. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the DreamThreads API?

DreamThreads parses a free-text dream narrative into structured data with no API key. The public parse endpoint returns typed entities, actions, actors, locations and emotions, each with a confidence score and versioned schema identifiers.

Structured extraction from narrative text usually means running your own model. This endpoint does it as a service for a specific domain: send a dream description as JSON and get back a graph of what was in it — `flying` and `falling` identified as actions with 0.9 confidence in the captured example, along with the exact word in the source text that triggered each match through the `mention` field.

That `mention` field is what makes the output auditable rather than magical: you can see that `fell` produced the `falling` entity, so a disagreement is inspectable rather than mysterious. Every response also carries `schemaVersion`, `parserVersion` and `dreamGraphVersion`, which is unusually disciplined for a small API and means you can detect a parser change rather than being silently surprised by one. The public endpoint runs a rules-based parser; a separate `/interpret` endpoint offers interpretation and is not covered here. Empty arrays are the normal result for categories the narrative did not contain.

Quick facts

Base URL
https://mydreamthreads.xyz/api/v1/dreamgraph
Authentication
No API key for the public parse endpoint. The interpretation endpoint on the same host has its own terms.
Rate limit
No published limit on the public parse endpoint. Keep volumes modest.
Pricing
Free for the public parse endpoint.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the DreamThreads API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Parse a dream narrative into structured entities

POST https://mydreamthreads.xyz/api/v1/dreamgraph/public/parse

curl
curl -X POST 'https://mydreamthreads.xyz/api/v1/dreamgraph/public/parse' \
  -H 'Content-Type: application/json' \
  -d '{"text":"I was flying over a city at night and then the ground fell away."}'
JavaScript (fetch)
const res = await fetch("https://mydreamthreads.xyz/api/v1/dreamgraph/public/parse", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"text":"I was flying over a city at night and then the ground fell away."}),
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

headers = {
    "Content-Type": "application/json",
}

payload = {"text":"I was flying over a city at night and then the ground fell away."}

res = requests.post("https://mydreamthreads.xyz/api/v1/dreamgraph/public/parse", headers=headers, json=payload, timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "data": {
    "structured_dream": {
      "schemaVersion": "structured-dream-v1",
      "parserVersion": "dream-parser-rules-v1.0.0",
      "dreamGraphVersion": "dreamgraph-v0.1.0",
      "entities": [
        {
          "id": "DT:E:000003",
          "slug": "falling",
          "label": "Falling",
          "type": "action",
          "mention": "fell",
          "confidence": 0.9
        },
        {
          "id": "DT:E:000009",
          "slug": "flying",
          "label": "Flying",
          "type": "action",
          "mention": "Flying",
          "confidence": 0.9
        }
      ],
      "actors": [],
      "locations": [],
      "actions": [
        {
          "type": "falling",
          "confidence": 0.9
        },
        {
          "type": "flying",
          "confidence": 0.9
        }
      ],
      "emotions": [],
      "agency": {
        "level": "unknown",
        "mode": "unspecified",
        "evidence": null
      },
      "threat": {
        "present": false,
        "level": "unknown",
        "basis": null
      },
      "outcome": {
        "status": "unresolved",
        "valence": "unknown"
      },
      "sensory": {},
      "recurrence": {
        "known": false,
        "frequency": null
      },
      "wakingContext": {
        "supplied": false
      },
      "physiologicalContext": {
        "supplied": false,
        "cues": []
      },
      "unknownConcepts": []
    },
    "timing": {
      "parser_latency_ms": 26
    },
    "privacy": {
      "dream_text_stored": false,
      "contribution_created": false
    },
    "upgrade"

Parameters

ParameterTypeRequiredDescription
textbody fieldRequiredThe dream narrative as free text, in a JSON POST body. I was flying over a city at night and then the ground fell away.

Response fields

data.structured_dreamobject
The parsed result.
data.structured_dream.schemaVersion / parserVersion / dreamGraphVersionstring
Versions of the output schema, the parser and the graph model. Watch these to detect a behaviour change.
data.structured_dream.entitiesarray
Everything identified in the text.
entities[].idstring
Stable identifier such as `DT:E:000003`, consistent across requests for the same concept.
entities[].slug / labelstring
Machine-friendly and display forms of the concept, for example `falling` and `Falling`.
entities[].typestring
Category — `action`, `actor`, `location` and so on.
entities[].mentionstring
The exact word in your input that triggered the match. `fell` produced `Falling` in the sample.
entities[].confidencefloat
How certain the parser is, 0 to 1.
data.structured_dream.actionsarray
Actions as `type` and `confidence` pairs, a condensed view of the action entities.
data.structured_dream.actors / locationsarray
People and places found. Empty arrays when the narrative contained none.
data.structured_dream.emotionsarray
Emotional content detected in the narrative.

What you can build with the DreamThreads API

  • Build a dream journal that tags entries automatically
  • Analyse recurring motifs across a body of dream narratives
  • Demonstrate structured extraction without running your own model
  • Generate tags for a narrative writing tool

Common errors and how to fix them

Empty arrays everywhere

The narrative did not contain anything the parser recognises.

Fix: Empty is a valid result, not a failure. Very short or abstract text yields little.

400 on the request

The endpoint expects a JSON body with a `text` field.

Fix: Send `Content-Type: application/json` and a proper object. Form encoding will not work.

Output changes between runs

The parser is versioned and evolves.

Fix: Watch `parserVersion` and `schemaVersion`, and store them alongside any results you keep.

Unexpected entity

The `mention` field shows what triggered it.

Fix: Inspect `mention` before assuming a bug — a word like `fell` legitimately maps to a falling action.

DreamThreads API — frequently asked questions

Is the DreamThreads API free?

The public parse endpoint is free with no key. The separate interpretation endpoint on the same host has its own terms and is not covered here.

What does it actually return?

A structured graph of the narrative — entities, actions, actors, locations and emotions, each typed and scored for confidence, with the source word that triggered it.

Is it interpreting the dream?

No. The public endpoint extracts structure; it does not attribute meaning. Interpretation is a separate endpoint.

Why does every response carry version numbers?

So you can detect when the parser or the output schema changes. Storing them alongside your results makes it possible to tell a genuine change in the data from a change in the parser.

Tools that pair with this API

DreamThreads is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.