# How to use LangGraph with Subconscious

> To use LangGraph with Subconscious, create a `ChatOpenAI` model with `base_url="https://api.subconscious.dev/v1"` and `model="subconscious/glm-5.3-marathon"`, and call it from a node in your `StateGraph`. Every model call in the graph then runs on Subconscious, billed per token.

Canonical page: https://www.subconscious.dev/agents/frameworks/langgraph
Category: [Frameworks](https://www.subconscious.dev/agents/frameworks)
Last verified: 2026-09-30
LangGraph: https://docs.langchain.com/oss/python/langgraph/overview
Source: https://github.com/langchain-ai/langgraph

## Before you start

- Python 3.10+
- A Subconscious account and API key

## Set up LangGraph

### 1. Install LangGraph

Install the framework and its OpenAI-compatible client.

```bash
pip install -U langgraph langchain-openai
```

### 2. Create a Subconscious API key

Sign in at https://platform.subconscious.dev, create an API key, and export it so the tool can read it.

```bash
export SUBCONSCIOUS_API_KEY="your_key"
```

### 3. Point it at Subconscious

A one-node graph that calls the model. use_responses_api=False keeps ChatOpenAI on Chat Completions, which is the OpenAI format Subconscious serves.

```python
import os
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, MessagesState, START, END

llm = ChatOpenAI(
    model="subconscious/glm-5.3-marathon",
    base_url="https://api.subconscious.dev/v1",
    api_key=os.environ["SUBCONSCIOUS_API_KEY"],
    use_responses_api=False,
)

def call_model(state: MessagesState):
    return {"messages": [llm.invoke(state["messages"])]}

builder = StateGraph(MessagesState)
builder.add_node("model", call_model)
builder.add_edge(START, "model")
builder.add_edge("model", END)
graph = builder.compile()

result = graph.invoke({"messages": [{"role": "user", "content": "Explain LangGraph in one sentence."}]})
print(result["messages"][-1].content)
```

### 4. Run it

Run the script.

```bash
python graph.py
```

## Connection details

- OpenAI-compatible base URL: https://api.subconscious.dev/v1
- Anthropic-compatible base URL: https://api.subconscious.dev
- API key: From subc login or the Subconscious dashboard
- Model: subconscious/glm-5.3-marathon
- Multimodal, high-throughput model: subconscious/deepseek-v4.1-flash-marathon

Full API reference: https://docs.subconscious.dev

## Frequently asked questions

### Should I use create_react_agent from langgraph.prebuilt?

No. It is deprecated in LangGraph v1 in favor of create_agent from langchain.agents, which runs on LangGraph and takes the same ChatOpenAI model.

### Which Subconscious model should I use with LangGraph?

Start with subconscious/glm-5.3-marathon, an open frontier coding model built for long agent runs. subconscious/deepseek-v4.1-flash-marathon is a cheaper, high-throughput alternative that also takes image input. Use the full model ID, including the subconscious/ prefix.

### Is LangGraph on Subconscious OpenAI- or Anthropic-compatible?

This guide connects LangGraph through the OpenAI-compatible Subconscious API. Subconscious serves both formats: OpenAI Chat Completions at https://api.subconscious.dev/v1 and Anthropic Messages at https://api.subconscious.dev.

### How is LangGraph usage on Subconscious billed?

Per token by default, with no commitment. Heavy users can switch to a monthly token plan: a fixed price for a large daily token allowance shared across your team.
