Skip to content
Fous Docs
MarkdownStudio

Manage your methods

List your methods, switch the version your organization uses, change any method, and publish or delete your own.

Your methods

GET /v1/methods lists your organization's own methods. platform filters by site; ids (up to 50) fetches any methods you can see.

Terminal
curl 'https://api.fous.com/v1/methods' \  -H "Authorization: Bearer $FOUS_API_KEY"
JSON
{  "methods": [    {      "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,      "status": "ready",      "pinned_version": 1,      "visibility": "private",      "owned": true,      "stats": {        "success_rate": 1,        "runs": 4,        "last_success_at": "2026-10-23T09:02:11.000Z"      },      "created_at": "2026-10-23T08:41:12.000Z",      "updated_at": "2026-10-23T08:41:12.000Z"    }  ]}

Versions

A version is a fixed contract: inputs, outputs, effect and sign-in. Repairs change how it gets the data and raise revision; a contract change makes a new version.

  • slug@N runs version N. A plain slug runs the version your organization uses.
  • Your first run pins your organization to the version that ran. slug@N runs and queries never move the pin.
  • A new version from your own build moves your pin to it, unless you had moved the pin off the starting version.

To switch, send pinned_version (a key with tools:write, or an owner or administrator in Studio):

Terminal
curl -X PATCH 'https://api.fous.com/v1/methods/date.nager.at/list_public_holidays' \  -H "Authorization: Bearer $FOUS_API_KEY" \  -H "Content-Type: application/json" \  -d '{"pinned_version": 1}'
JSON
{  "id": "mth_01m5kvvywdeac8fxs7nh0sw68w",  "slug": "date.nager.at/list_public_holidays",  "name": "List public holidays",  "description": "Lists a country's public holidays for a year from Nager.Date, with local names, regional coverage and holiday types.",  "returns": "date, weekday, English and local names, regions, type, nationwide flag",  "platform": { "name": "Nager.Date", "domain": "nager.at" },  "input_schema": {    "type": "object",    "required": ["country"],    "properties": {      "year": {        "type": "integer",        "minimum": 1,        "maximum": 9999,        "description": "Calendar year, for example 2026. Defaults to the current year."      },      "country": {        "type": "string",        "description": "Country name or two-letter country code, for example Germany or DE."      }    }  },  "effect": "read",  "auth": { "required": false },  "cost": { "credits": 1 },  "version": 1,  "latest_version": 2,  "revision": 2,  "pinned_version": 1,  "status": "ready",  "versions": [    {      "version": 2,      "revision": 1,      "latest": true,      "status": "ready",      "created_at": "2026-10-22T16:02:41.000Z",      "changes": "Adds output holidays[].regions."    },    {      "version": 1,      "revision": 2,      "status": "ready",      "created_at": "2026-10-21T09:12:05.000Z",      "revised_at": "2026-10-24T03:10:19.000Z",      "changes": "",      "pinned": true    }  ],  "visibility": "public",  "output_schema": {    "type": "object",    "properties": {      "country_name": { "type": "string" },      "year": { "type": "integer" },      "holidays": { "type": "array", "items": { "type": "object" } }    }  },  "example": {    "input": { "country": "Germany", "year": 2027 },    "output": {      "country_name": "Germany",      "year": 2027,      "holidays": [        {          "date": "2027-01-01",          "weekday": "Friday",          "english_name": "New Year's Day",          "local_name": "Neujahr",          "nationwide": "yes",          "regions": [],          "type": "Public"        }      ]    }  },  "stats": {    "success_rate": 1,    "runs": 12,    "last_success_at": "2026-10-23T08:24:36.410Z"  },  "owned": false,  "latest_changes": "Adds output holidays[].regions."}

latest_changes says what the latest version adds while you are behind.

Change a method

Send a build with method, adding @N to start from that version. You can change any public method and your own.

Terminal
curl https://api.fous.com/v1/builds \  -H "Authorization: Bearer $FOUS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "method": "crates.io/search_crates",    "query": "Also return the license of each crate."  }'

When it ends, based_on names the starting version and outcome says what it made:

JSON
{  "id": "bld_01m5n2c4e6g8j0k2m4p6r8t0v2",  "status": "ready",  "kind": "change",  "effect": "read",  "query": "Also return the license of each crate.",  "asked": "Also return the license of each crate.",  "platform": "crates.io",  "events": [    {      "at": "2026-10-24T10:02:19.000Z",      "kind": "note",      "message": "Each crate in the search results carries its license."    },    {      "at": "2026-10-24T10:02:51.000Z",      "kind": "status",      "message": "Testing the method with two keywords."    }  ],  "reason": "Version 2 adds output crates[].license. Your organization now uses it.",  "outcome": { "type": "new_version", "version": 2 },  "based_on": {    "id": "mth_01m5kz9a1b2c3d4e5f6g7h8j9k",    "slug": "crates.io/search_crates",    "name": "Search crates",    "version": 1  },  "method": {    "id": "mth_01m5kz9a1b2c3d4e5f6g7h8j9k",    "slug": "crates.io/search_crates",    "name": "Search crates",    "description": "Searches crates.io by keyword.",    "returns": "name, description, downloads, version, license",    "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": 2,    "latest_version": 2,    "private": true  },  "created_at": "2026-10-24T10:01:58.000Z",  "completed_at": "2026-10-24T10:03:07.000Z"}
outcome.typeWhat happened
improvedSame contract, improved in place for everyone on it.
new_versionInputs or fields changed. You move to it if you were on the starting version.
new_methodA new method of yours, for a different capability, a private copy, or a method that signs in or acts.
already_doneThe method already does it.

Publish

Built methods are public unless built private. A new method made from one of your private methods is private unless built public. Publishing a private method is final: anyone can then find, run and change it.

Terminal
curl -X PATCH 'https://api.fous.com/v1/methods/crates.io/search_crates' \  -H "Authorization: Bearer $FOUS_API_KEY" \  -H "Content-Type: application/json" \  -d '{"visibility": "public"}'
JSON
{  "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,  "revision": 1,  "pinned_version": 1,  "status": "ready",  "versions": [    {      "version": 1,      "revision": 1,      "latest": true,      "pinned": true,      "status": "ready",      "created_at": "2026-10-23T08:41:12.000Z",      "changes": ""    }  ],  "visibility": "public",  "output_schema": {    "type": "object",    "properties": { "crates": { "type": "array", "items": { "type": "object" } } }  },  "example": {    "input": { "query": "http client" },    "output": {      "crates": [        {          "name": "reqwest",          "description": "higher level HTTP client library",          "downloads": 312004518,          "version": "0.12.9"        }      ]    }  },  "stats": {    "success_rate": 1,    "runs": 4,    "last_success_at": "2026-10-23T09:02:11.000Z"  },  "owned": true}

409 means the method is not yours, or another public method has its slug.

Delete

Deletes a private method of yours. A public method answers 409.

Terminal
curl -X DELETE 'https://api.fous.com/v1/methods/example.com/list_orders' \  -H "Authorization: Bearer $FOUS_API_KEY"
JSON
{ "id": "mth_01m5p8r2t4v6x8z0b2d4f6h8k0", "deleted": true }

Idle methods

A public method nobody ran for 6 months is deleted after a 7-day notice: deletes_at appears, and its owner and pinned organizations get an email. A run during the notice keeps it. Private methods are never deleted for being idle.