Skip to main content
Critique API is the all-in-one agentic search endpoint builder. Give a coding agent one natural-language research task and it can create a fully functioning, hosted endpoint with live web search, source retrieval, citations, structured JSON, and a callable contract. Critique handles the search crawler, retrieval pipeline, model workflow, structured-output layer, and endpoint deployment. The agent creates the endpoint, reads the server-returned schemas and examples, calls it immediately, and integrates it into your project with ordinary HTTPS.

Set up your agent

1

Create an API key

Create a key under Billing & API Keys, then make it available to your coding agent as an environment variable.
Never paste the key into a prompt, source file, URL, or commit.
2

Open agent setup

Open API Studio and select Set up an agent beside the manual API description form.
  • Copy prompt copies the current, server-provided integration prompt (select Show prompt to read it before copying). Paste it into any agent chat; it works without installing anything.
  • Copy & open ChatGPT or Copy & open Claude copies the prompt and opens a new chat.
  • Use it in Claude Code, Cursor or Codex shows, per tool, the one-line install (npx skills add … or the Claude Code plugin commands) and how to invoke the skill.
  • Documentation your agent can read links the LLM documentation index, the full-documentation bundle, this guide, and the OpenAPI contract.
A browser chat can help plan the endpoint, but it still needs a connected tool or coding environment that can read CRITIQUE_API_KEY and make HTTPS requests in order to create or run one.
3

Give the agent your requirement

Describe the reusable behavior, required inputs, exact output fields, freshness requirements, and preferred sources. For example:
Create a private API that accepts a company name and returns its latest funding round, amount, date, investors, and primary-source URLs. Then show me how to call it from this project.

Use the skill without a CLI

The skill works through ordinary authenticated HTTPS requests. It can use curl, JavaScript fetch, an IDE HTTP tool, or the existing HTTP client in any project language. Python and the Critique CLI are not required. The agent reads the lifecycle contract from the skill, sends X-API-Key: $CRITIQUE_API_KEY, and uses the integration object returned by the server as the source of truth for running the new endpoint.

Install the CLI (optional)

The optional, open-source CLI package is critique-api-cli and has no third-party runtime dependencies. Its source is available on GitHub.
The CLI is a standalone convenience for terminal workflows. It does not need to be installed into the user’s application or added to that project’s dependencies. After setting CRITIQUE_API_KEY:

Install the skill

The skill lives in the public parthh01/critique-api-cli repository. Install it into Claude Code, Cursor, Codex or any other agent supported by skills.sh with one command (it writes the skill into each tool’s own skills directory; add -g to install for all projects instead of the current one):
Or install it as a Claude Code plugin from the repo’s marketplace:
Each tool also applies the skill automatically when a task matches its description. Make sure CRITIQUE_API_KEY is exported in the shell the agent runs in. The integration prompt, these per-tool commands (clients), and the resource URLs are also available without authentication for automated discovery; the raw skill files remain downloadable as a zip for agents that fetch them directly:

Documentation for agents

This documentation is written to be read by LLMs as well as people:
  • llms.txt is the index of every page. Agents should fetch it first when they need something a prompt does not cover.
  • Every page is available as Markdown: append .md to a page URL that does not already end in .md (this page is https://docs.critique-labs.ai/api-platform/agent-created-apis.md).
  • llms-full.txt bundles every page into one file, each prefixed with a Source: line, for a single fetch.
  • openapi.json is the machine-readable contract for every endpoint.

Endpoint lifecycle

All management and runtime requests use the X-API-Key header. These examples assume CRITIQUE_API_KEY is set in the environment.

Create

The only required create field is original_prompt.
The response is wrapped in response. Treat response.integration as the authoritative handoff: it contains the final callable URL, authentication contract, request and response JSON Schemas, an example request, runnable code, and a short agent handoff.
Do not construct the runtime URL from the stub when an integration.url is available. The server-returned integration object is the source of truth.

Inspect and modify

Input names must begin with a letter or underscore and may contain letters, numbers, and underscores. Supported input types are string, number, and boolean. Output formats support nested objects and one-item array schemas in addition to string, number, boolean, and integer values.

Optional inputs and defaults

Each input carries required (default true) and default (default null). Inputs created before these keys existed are required with no default, and nothing about them changed.
  • A non-null default must match the input’s type and makes the input optional whatever required says.
  • Callers may omit any optional input (sending null counts as omitting it). The endpoint fills in the default, or, when the default is null, tells the agent the value was not provided.
  • A missing required input responds 400; the message lists only the missing required fields, with optional ones shown as name?: type.
  • integration.request_schema marks only required inputs as required and carries each default; integration.example_request and the code samples include every required input plus every optional input that has a default.
max_results is a reserved input name. An endpoint whose output contains a list is created with an optional max_results (type number, default 10); the runtime asks the agent for at most that many items and caps every top-level list field of the response at that value (nested lists are left to the agent). The value must be a number of at least 1 and is floored to an integer.

Versions

Every endpoint version is its own resource with its own id; all versions share the endpoint’s stub. A version is a draft while frozen_at is null (editable; at most one per endpoint) and released once frozen_at is set (immutable; edits respond 409). The live version is what the unversioned URL /v1/user-defined-service/{stub} runs: the released version with the highest number, or the only draft when nothing has ever been released, which is the normal state of a freshly created endpoint. Every response carries version, frozen_at, is_live, live_version and a versions list for the whole lineage.
If the version you copy is the current draft it is released first, so callers on the unversioned URL keep the behaviour they tested. Creating a version while another unreleased draft exists responds 409: release or delete that draft first. Publishing a version to the marketplace also releases it. Creating a version from an older released one is how you revert; the copy becomes live once you release it. Always call integration.url. For the live version it is the unversioned URL; for a draft that is not live, and for an older release, it is the pinned URL /v1/user-defined-service/{stub}/v{n}, the only URL that runs that version. integration.versioned_url is always the pinned URL. A pinned version that does not exist responds 404.

Run

POST a body matching integration.request_schema to integration.url:
A successful runtime response contains the structured result, its source list, and usage information:
Preserve context when displaying or storing researched output so its source URLs remain available to users.

Delete

Deletion is permanent. Confirm the endpoint ID before calling:

Optional domain controls

Runtime bodies may include include_domains or exclude_domains as an array of domain strings. They are mutually exclusive.

Error handling

  • 400 or 422: correct the request or schema; do not retry unchanged.
  • 401: verify that CRITIQUE_API_KEY is available without printing it.
  • 404: list endpoints and confirm that the ID belongs to the current key. On a /v{n} invocation, confirm the version exists with GET /v1/design-api/{id}/versions.
  • 409: the version is released (immutable) or the endpoint already has an unreleased draft. Create or release a version instead of retrying.
  • 429: respect the rate limit before retrying.
  • 504: the research request exceeded the service deadline.
See API rate limits for current plan limits.