For AI agents: a documentation index is available at https://docs.plungeai.com/llms.txt. Append .md to any page URL, or send Accept: text/markdown, to get markdown. Setup instructions for agents are at https://docs.plungeai.com/agents.md. One ozk_ key opens every plane, models included.

Documentation Index: fetch the complete documentation index at /llms.txt. Use this file to discover all available pages before exploring further.

Install and use the official PlungeAI One API SDKs — TypeScript @plungeai/one-api (npm), Python plungeai (PyPI), Go github.com/PlungeAI/plungeai-go and Rust plungeai (crates.io) — for the One API at https://api.plungeai.com (opens in a new tab): key from PLUNGEAI_API_KEY, first whoami and agents.execute call, discovery-first lookups, typed errors, retries, streams, pages and idempotency. Use when a user or agent writes code (an app, a script, a backend, a generated project) that calls PlungeAI in TypeScript, Python, Go or Rust and wants a typed client instead of raw HTTP, or asks "is there a PlungeAI SDK", "pip install plungeai", "npm @plungeai/one-api", "PlungeAI Go/Rust client". Every SDK method is generated from the live contract at https://api.plungeai.com/v1/openapi.json (opens in a new tab). Wire-level API and curl: plungeai-api-setup; models plane with the OpenAI SDK: plungeai-models; terminal: plungeai-cli-setup; MCP: plungeai-mcp-setup.

Download zip (opens in a new tab) · View raw SKILL.md (opens in a new tab)

Four official SDKs for the One API (https://api.plungeai.com), one shape: a client that reads the key from PLUNGEAI_API_KEY, one method per operation generated from https://api.plungeai.com/v1/openapi.json (every route in the spec has a method), typed errors, retries, streams and pages. All four target One API 2.4.0, package version 1.0.0. The wire-level API (curl, headers, error codes): plungeai-api-setup.

Pick a language

LanguagePackageInstallRuntime deps
TypeScript@plungeai/one-api (npm)npm install @plungeai/one-apinone (ESM + CJS; Node 20+, Deno, Bun, Workers)
Pythonplungeai (PyPI)pip install plungeaihttpx; Python ≥ 3.10; sync PlungeAI + AsyncPlungeAI
Gogithub.com/PlungeAI/plungeai-gogo get github.com/PlungeAI/plungeai-gostandard library only; Go ≥ 1.24
Rustplungeai (crates.io)cargo add plungeai tokio --features tokio/fullreqwest (rustls) on tokio; Rust ≥ 1.85

None of the four is on its registry yet. Until its tag is published, build from sdk/<dir>/ in the platform repository:

  • @plungeai/one-api is not on npm yet: until the one-api-v1.0.0 tag is published, build from sdk/one-api-client/ (npm ci && npm run build).
  • plungeai is not on PyPI yet: until the one-api-python-v1.0.0 tag is published, build from sdk/one-api-python/ (bash scripts/build.sh, then pip install target/sdk-py-build/*.whl).
  • github.com/PlungeAI/plungeai-go is not on the Go proxy yet: until the one-api-go-v1.0.0 tag is published, replace it with sdk/one-api-go/.
  • plungeai is not on crates.io yet: until the one-api-rust-v1.0.0 tag is published, depend on the path sdk/one-api-rust/.

Release check: npm view @plungeai/one-api version · pip index versions plungeai · go list -m -versions github.com/PlungeAI/plungeai-go · cargo search plungeai.

Key

One ozk_ key for every plane — create it in Dashboard → One API → Keys (https://dashboard.plungeai.com (opens in a new tab)). Export it as PLUNGEAI_API_KEY; every SDK reads that variable (the CLI too). The curl examples in the other skills use $PLUNGE_API_KEY — same key, different variable name. Never hardcode it, log it, or ship it to a browser (the TypeScript client refuses browsers unless you pass dangerouslyAllowBrowser: true).

export PLUNGEAI_API_KEY=ozk_YOUR_KEY

First call

TypeScript:

import PlungeAI from '@plungeai/one-api'

const client = new PlungeAI()
const me = await client.whoami()
const run = await client.agents.execute('one-agent', { prompt: 'Reply with exactly the word: pong', max_tokens: 32 })

Python:

from plungeai import PlungeAI

client = PlungeAI()  # or AsyncPlungeAI() — same methods, awaited
me = client.whoami()
run = client.agents.execute("one-agent", prompt="Reply with exactly the word: pong", max_tokens=32)

Go:

import "github.com/PlungeAI/plungeai-go"

client := plungeai.NewClient() // plungeai.WithAPIKey(…) to override PLUNGEAI_API_KEY
ctx := context.Background()
me, err := client.Whoami(ctx)
run, err := client.Agents.Execute(ctx, "one-agent", plungeai.AgentExecuteParams{Prompt: "Reply with exactly the word: pong", MaxTokens: 32})

Rust:

use plungeai::{types::*, Client};

let client = Client::new()?; // or Client::builder().api_key(…).build()?
let me = client.whoami().await?;
let run = client
    .agents()
    .execute("one-agent", &AgentExecuteParams { prompt: Some("Reply with exactly the word: pong".into()), max_tokens: Some(32), ..Default::default() })
    .await?;

Discover before you call

one-agent above is the general-purpose agent; every other agent, tool or workflow id comes from a live lookup, never from memory. Discovery is one SDK call (GET /v1/discovery/search on the wire):

const hits = await client.discovery.search({ q: 'web search', kind: 'agents', limit: 3 })   // TypeScript
hits = client.discovery.search(q="web search", kind="agents", limit=3)                     # Python
hits, err := client.Discovery.Search(ctx, plungeai.DiscoverySearchParams{Q: "web search", Kind: "agents", Limit: 3})
let hits = client.discovery().search(&DiscoverySearchParams { q: Some("web search".into()), kind: Some(DiscoverySearchParamsKind::Agents), limit: Some(3), ..Default::default() }).await?;

Then read the tool contract (GET /v1/tools/{id}; client.tools.retrieve(id) in TypeScript) before executing. A 404 on an id means re-discover, not retry.

What every SDK gives you

ConcernBehaviour (TS · Python · Go · Rust)
ErrorsOne class per status — TS/Python BadRequestError … NotFoundError, ConflictError (409), FailedDependencyError (424, carries connect.link — where to connect the missing account), RateLimitError, InternalServerError (≥ 500); Go one *plungeai.Error with StatusCode, Code, RequestID, Connect; Rust Error::Api(ApiError) with status, code, request_id, connect
Retries2 by default, exponential backoff honouring Retry-After, on connection errors, timeouts, 408, 429, ≥ 500. Never on 409 or 424 — those are semantic answers (approval_required, duplicate_execution_id, a missing connection); surface them
Timeout10 minutes per request, configurable on the client and per call
StreamsSSE: workflows.executeInlineStream / execute_inline_stream / ExecuteInlineStream; stream: true operations have a streaming form (stream=True, …Streaming, …_stream)
PagesOffset pages; for await / for / …AutoPaging / into_stream() walk every page
Raw responseTS .withResponse() / .asResponse() · Python with_raw_response · Go WithResponseInto(&raw) · Rust …_raw; plus get/post/… escape hatches
IdempotencyidempotencyKey · idempotency_key · WithIdempotencyKey · RequestOptions::idempotency_key → sent as x-trace-id, the run's execution id; a replay answers 409 duplicate_execution_id instead of starting twice

Per-language detail (async client, streaming, pagination, error tables, options forms, raw responses): references/per-language.md.

Hand-over

  • plungeai-api-setup — the wire-level One API: auth headers, curl, error codes, codegen for other languages.
  • plungeai-agents — agent execution in depth (sync/async, results polling, trust fences).
  • plungeai-workflows — CNL workflows: author, save, run, stream.
  • plungeai-models — the OpenAI-wire models plane; the OpenAI SDK also works there with base URL https://api.plungeai.com/v1.
  • plungeai-cli-setup — the same platform from a terminal or CI.
  • plungeai-mcp-setup — the same platform as an MCP server for a live agent.

Reference pages

Planned: TI-33

Search is not available yet. Until it ships, use the page index or browse the sidebar.

Planned: TI-34

The docs assistant is not available yet. You can hand these docs to your own assistant instead.