gitroomhq/postiz-app · error · HttpException

Integration provider not found

Error message

Integration provider not found

What it means

The integration row exists, but its providerIdentifier does not match any entry in socialIntegrationList — the registry of known channel providers. Because the lookup uses a non-null assertion (!) followed by a null check, the check actually works at runtime, but a mismatch means the backend build does not recognize the channel type stored in the database, yielding 404 'Integration provider not found'.

Source

Thrown at apps/backend/src/public-api/routes/v1/public.integrations.controller.ts:576

    @Param('id') id: string,
    @Body() body: { methodName: string; data: Record<string, string> }
  ) {
    Sentry.metrics.count('public_api-request', 1);
    const getIntegration = await this._integrationService.getIntegrationById(
      org.id,
      id
    );

    if (!getIntegration) {
      throw new HttpException({ msg: 'Integration not found' }, 404);
    }

    const integrationProvider = socialIntegrationList.find(
      (p) => p.identifier === getIntegration.providerIdentifier
    )!;

    if (!integrationProvider) {
      throw new HttpException({ msg: 'Integration provider not found' }, 404);
    }

    const tools = this._integrationManager.getAllTools();
    if (
      // @ts-ignore
      !tools[integrationProvider.identifier]?.some(
        (p: any) => p.methodName === body.methodName
      ) ||
      // @ts-ignore
      !integrationProvider[body.methodName]
    ) {
      throw new HttpException({ msg: 'Tool not found' }, 404);
    }

    while (true) {
      try {
        // @ts-ignore
        const result = await integrationProvider[body.methodName](

View on GitHub (pinned to 0f1647f749)

Solutions

  1. Update the backend (and orchestrator) to a version whose provider registry includes the integration's providerIdentifier
  2. Inspect the integration row's providerIdentifier and compare it against socialIntegrationList entries for a rename
  3. If the provider was intentionally removed, delete the stale integration and reconnect the channel using a supported provider
  4. Align all services (backend, orchestrator, frontend) on the same release so registries match

Example fix

// before
// integration.providerIdentifier === 'threads-v2' but build only knows 'threads'
await triggerTool(integration.id, 'post', {...}); // 404 provider not found

// after
// upgrade backend so socialIntegrationList contains 'threads-v2', or reconnect the channel
// so the integration row stores a providerIdentifier the build recognizes
await triggerTool(integration.id, 'post', {...});
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = new Set(['twitter', 'linkedin', 'instagram', /* mirror your build's socialIntegrationList */]);
if (!SUPPORTED.has(integration.providerIdentifier)) {
  throw new Error(`Provider ${integration.providerIdentifier} unsupported by this backend build`);
}

Type guard

const isKnownProvider = (id: string, registry: string[]): id is string =>
  registry.includes(id);

Try / catch

try {
  await triggerTool(id, method, args);
} catch (e: any) {
  if (e?.status === 404 && /provider/i.test(e?.response?.msg ?? '')) {
    // backend build lacks this provider: upgrade or reconnect under a supported provider
  } else throw e;
}

Prevention

When it happens

Trigger: POST to triggerIntegrationTool where the integration's providerIdentifier references a provider that has been renamed, removed, or is not registered in the running backend/orchestrator build. Also occurs if the DB row was written by a newer Postiz version with providers this build lacks.

Common situations: Running an older backend image against a database created by a newer version (new provider added); provider identifier renamed between versions; partially applied upgrade where the frontend/backend versions drift; custom provider removed from the build.

Related errors


AI-assisted analysis of gitroomhq/postiz-app@0f1647f749 (2026-08-27). Data as JSON: /api/errors/097c58c49aa45bab. Report an issue: GitHub.