phacility/phabricator · error · ConduitMethodDoesNotExistException
Conduit API method "%s" does not exist.
Error message
Conduit API method "%s" does not exist.
What it means
Thrown by ConduitCall::buildMethodHandler() when ConduitAPIMethod::getConduitMethod($method_name) returns null, i.e. no ConduitAPIMethod subclass is registered under the requested method name. Method names are discovered from installed method classes at runtime, so an unknown or misspelled name never reaches execution. The message formats the requested name into 'Conduit API method "%s" does not exist.'
Source
Thrown at src/applications/conduit/call/ConduitCall.php:138
PhabricatorPolicyCapability::CAN_VIEW);
if (!$can_view) {
throw new ConduitException(
pht(
'You do not have access to the application which provides this '.
'API method.'));
}
}
}
return $this->handler->executeMethod($this->request);
}
protected function buildMethodHandler($method_name) {
$method = ConduitAPIMethod::getConduitMethod($method_name);
if (!$method) {
throw new ConduitMethodDoesNotExistException($method_name);
}
$application = $method->getApplication();
if ($application && !$application->isInstalled()) {
$app_name = $application->getName();
throw new ConduitApplicationNotInstalledException($method, $app_name);
}
return $method;
}
public function getMethodImplementation() {
return $this->handler;
}
}
View on GitHub (pinned to 5720a38cfe)
Solutions
- Verify the exact method name on the Conduit API console page (/conduit/) of the install you are calling.
- List methods available on the deployed install via conduit.query (or the /conduit/ method index) and compare against the name you use.
- If the method was renamed or removed in an upgrade, migrate the call to its modern equivalent (e.g. maniphest.info -> maniphest.task.search, or edit methods -> *.edit).
- Confirm the application providing the method is present on this install (see also the 'application not installed' error).
Example fix
# before
$ echo '{}' | arc call-conduit user.whomai
# after
$ echo '{}' | arc call-conduit user.whoami Defensive patterns
Strategy: validation
Validate before calling
// Discover available methods once per install before firing calls.
$methods = id(new ConduitCall('conduit.query', array()))
->setUser(PhabricatorUser::getOmnipotentUser())
->execute();
if (!isset($methods['user.whoami'])) {
throw new Exception('Method not available on this install.');
} Try / catch
try {
$result = id(new ConduitCall($method, $params))
->setUser($viewer)
->execute();
} catch (ConduitMethodDoesNotExistException $ex) {
// Method absent on this install: log and skip rather than crash.
} Prevention
- Cache the method list from conduit.query at job start and assert every method you will call is present.
- Pin integration scripts to method names verified against the deployed Phabricator version.
- Prefer stable modern .search/.edit method families over legacy names in long-lived code.
When it happens
Trigger: Calling arc call-conduit user.whomai (typo); POSTing to /api/differential.query on an install where that legacy method was removed; invoking a method that only exists in a newer Phabricator release than the one deployed; scripts copied from another install's documentation.
Common situations: Typos in automation scripts; Phabricator upgrades that removed legacy methods (old *.query/*.info methods vs modern *.search/*.edit); targeting a method that lives in an extension or application version not present on this host.
Related errors
- ERR-UNKNOWN-TYPE
- Service "%s" is unrecognized, restricted, or you do not have
- API Method "%s" defines a disallowed parameter, "%s". This p
- API Method "%s" does not define these parameters: %s.
- Method '%s' belongs to application '%s', which is not instal
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/3849de0043b17867.
Report an issue: GitHub.