{"record":{"id":"3849de0043b17867","repo":"phacility/phabricator","slug":"conduit-api-method-s-does-not-exist","errorCode":null,"errorMessage":"Conduit API method \"%s\" does not exist.","messagePattern":"Conduit API method \"(.+?)\" does not exist\\.","errorType":"exception","errorClass":"ConduitMethodDoesNotExistException","httpStatus":null,"severity":"error","filePath":"src/applications/conduit/call/ConduitCall.php","lineNumber":138,"sourceCode":"          PhabricatorPolicyCapability::CAN_VIEW);\n\n        if (!$can_view) {\n          throw new ConduitException(\n            pht(\n              'You do not have access to the application which provides this '.\n              'API method.'));\n        }\n      }\n    }\n\n    return $this->handler->executeMethod($this->request);\n  }\n\n  protected function buildMethodHandler($method_name) {\n    $method = ConduitAPIMethod::getConduitMethod($method_name);\n\n    if (!$method) {\n      throw new ConduitMethodDoesNotExistException($method_name);\n    }\n\n    $application = $method->getApplication();\n    if ($application && !$application->isInstalled()) {\n      $app_name = $application->getName();\n      throw new ConduitApplicationNotInstalledException($method, $app_name);\n    }\n\n    return $method;\n  }\n\n  public function getMethodImplementation() {\n    return $this->handler;\n  }\n\n\n}\n","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/conduit/call/ConduitCall.php#L120-L156","documentation":"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.'","triggerScenarios":"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.","commonSituations":"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.","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)."],"exampleFix":"# before\n$ echo '{}' | arc call-conduit user.whomai\n# after\n$ echo '{}' | arc call-conduit user.whoami","handlingStrategy":"validation","validationCode":"// Discover available methods once per install before firing calls.\n$methods = id(new ConduitCall('conduit.query', array()))\n  ->setUser(PhabricatorUser::getOmnipotentUser())\n  ->execute();\nif (!isset($methods['user.whoami'])) {\n  throw new Exception('Method not available on this install.');\n}","typeGuard":null,"tryCatchPattern":"try {\n  $result = id(new ConduitCall($method, $params))\n    ->setUser($viewer)\n    ->execute();\n} catch (ConduitMethodDoesNotExistException $ex) {\n  // Method absent on this install: log and skip rather than crash.\n}","preventionTips":["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."],"tags":["conduit","phabricator","method-not-found","api","php"],"backgroundTag":"api-method-not-found","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}