Skip to content
Fous Docs
MarkdownStudio

Build a method

Make a method from a request in plain words, follow it to the end, steer it with messages, and cancel or dismiss it.

A build makes a method from a request in plain words. Fous studies the site, writes the method and tests it on real inputs, usually in about a minute.

Start a build

Terminal
curl https://api.fous.com/v1/builds \  -H "Authorization: Bearer $FOUS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "query": "Search Rust crates by keyword",    "platform": "crates.io",    "visibility": "private"  }'
JSON
{  "id": "bld_01m5kz8x0vb6dp3jq2w4e5r6t7",  "status": "building",  "kind": "new",  "effect": "read",  "query": "Search Rust crates by keyword",  "asked": "Search Rust crates by keyword",  "platform": "crates.io",  "events": [],  "estimate": {    "low_seconds": 52,    "high_seconds": 104,    "median_seconds": 71,    "samples": 100  },  "created_at": "2026-10-23T08:40:02.000Z"}
FieldMeaning
queryWhat the method should read or do, 5 to 2,000 characters.
platformThe site, if the query does not name it.
visibilityRequired for a new method: public, or private to your organization.
inputValues to build with. They become the first test.
methodA method to change (Change a method).

input_schema, output_schema, images and connections are in the API reference. Sending the same request again returns the running build.

Follow it

?wait=60 answers when the build ends, or on a new event when after is the number of events you have.

Terminal
curl "https://api.fous.com/v1/builds/bld_01m5kz8x0vb6dp3jq2w4e5r6t7?wait=60" \  -H "Authorization: Bearer $FOUS_API_KEY"
JSON
{  "id": "bld_01m5kz8x0vb6dp3jq2w4e5r6t7",  "status": "ready",  "kind": "new",  "effect": "read",  "query": "Search Rust crates by keyword",  "asked": "Search Rust crates by keyword",  "platform": "crates.io",  "events": [    {      "at": "2026-10-23T08:40:21.000Z",      "kind": "note",      "message": "The search page reads its results from a JSON endpoint that takes the keyword."    },    {      "at": "2026-10-23T08:40:34.000Z",      "kind": "status",      "message": "Testing the method with two keywords."    }  ],  "outcome": { "type": "new_method" },  "method": {    "id": "mth_01m5kz9a1b2c3d4e5f6g7h8j9k",    "slug": "crates.io/search_crates",    "name": "Search crates",    "description": "Searches crates.io by keyword.",    "returns": "name, description, downloads, version",    "platform": { "name": "crates.io", "domain": "crates.io" },    "input_schema": {      "type": "object",      "required": ["query"],      "properties": { "query": { "type": "string", "description": "Keyword." } }    },    "effect": "read",    "auth": { "required": false },    "cost": { "credits": 1 },    "version": 1,    "latest_version": 1,    "private": true  },  "created_at": "2026-10-23T08:40:02.000Z",  "completed_at": "2026-10-23T08:41:12.000Z"}
StatusMeaning
buildingStill working (202).
readymethod is ready to run; outcome says what was made.
requires_authConnect an account; the build goes on inside it.
unsupportedNo method could be verified; reason says why.

Send a message

A message corrects or narrows a running build:

Terminal
curl "https://api.fous.com/v1/builds/bld_01m5kz8x0vb6dp3jq2w4e5r6t7/messages" \  -H "Authorization: Bearer $FOUS_API_KEY" \  -H "Content-Type: application/json" \  -d '{"text": "Also return each crate’s license."}'
JSON
{  "id": "bld_01m5kz8x0vb6dp3jq2w4e5r6t7",  "status": "building",  "kind": "new",  "effect": "read",  "query": "Search Rust crates by keyword",  "asked": "Search Rust crates by keyword",  "platform": "crates.io",  "events": [    {      "at": "2026-10-23T08:40:21.000Z",      "kind": "note",      "message": "The search page reads its results from a JSON endpoint that takes the keyword."    }  ],  "estimate": {    "low_seconds": 52,    "high_seconds": 104,    "median_seconds": 71,    "samples": 100  },  "created_at": "2026-10-23T08:40:02.000Z",  "messages": [    {      "at": "2026-10-23T08:40:40.000Z",      "text": "Also return each crate’s license.",      "seen": false    }  ]}

It turns seen: true once the builder reads it. A message sent after the build ended starts a follow-up build.

Methods that change something

Cancel

Terminal
curl -X POST "https://api.fous.com/v1/builds/bld_01m5kz8x0vb6dp3jq2w4e5r6t7/cancel" \  -H "Authorization: Bearer $FOUS_API_KEY"
JSON
{  "id": "bld_01m5kz8x0vb6dp3jq2w4e5r6t7",  "status": "unsupported",  "kind": "new",  "effect": "read",  "query": "Search Rust crates by keyword",  "asked": "Search Rust crates by keyword",  "platform": "crates.io",  "events": [    {      "at": "2026-10-23T08:40:21.000Z",      "kind": "note",      "message": "The search page reads its results from a JSON endpoint that takes the keyword."    }  ],  "reason": "Stopped.",  "created_at": "2026-10-23T08:40:02.000Z",  "completed_at": "2026-10-23T08:40:45.000Z"}

Nothing is charged. A build that already ended answers 409.

List and dismiss

GET /v1/builds lists the 50 newest builds of the past 30 days, with repairs of your methods (kind: "repair"). DELETE hides an ended build; its method stays.

Terminal
curl https://api.fous.com/v1/builds \  -H "Authorization: Bearer $FOUS_API_KEY"
Terminal
curl -X DELETE "https://api.fous.com/v1/builds/bld_01m5kz8x0vb6dp3jq2w4e5r6t7" \  -H "Authorization: Bearer $FOUS_API_KEY"
JSON
{ "id": "bld_01m5kz8x0vb6dp3jq2w4e5r6t7", "dismissed": true }

Errors

402 insufficient_credits: your credits do not cover the build (Billing). 422 not_buildable: no website, app or API is involved. Every code is in Errors and limits.