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

  1. Verify the exact method name on the Conduit API console page (/conduit/) of the install you are calling.
  2. List methods available on the deployed install via conduit.query (or the /conduit/ method index) and compare against the name you use.
  3. 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).
  4. 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

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


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/3849de0043b17867. Report an issue: GitHub.