gitroomhq/postiz-app · error · BadBody
'checkPostStatus is not implemented for this provider'
Error message
'checkPostStatus is not implemented for this provider'
What it means
Base-method stub on the social integration abstract class: checkPostStatus is an optional provider capability (polling an async publish, e.g. uploading to a channel that returns a pending id). Providers that don't override it throw BadBody with this message.
Source
Thrown at libraries/nestjs-libraries/src/integrations/social.abstract.ts:186
return true;
}
/**
* Providers that return a `pending` PostResponse from `post` / `comment` must
* override this with a single, read-only status check (no loops, no timers) -
* the polling loop lives in the post workflow, where a retry is harmless.
*
* The defaults throw so a provider that returns `pending` without overriding
* fails loudly on the first test post instead of silently completing with a
* bogus releaseURL. They are unreachable for providers that never return
* `pending`.
*/
public async checkPostStatus(
accessToken: string,
pendingData: any,
integration: Integration
): Promise<PendingCheckResponse> {
throw new BadBody(
this.identifier,
'{}',
'{}',
'checkPostStatus is not implemented for this provider'
);
}
/** Runs the mutations left after `checkPostStatus` returns `ready`. Same contract as `checkPostStatus`. */
public async finalizePost(
accessToken: string,
pendingData: any,
integration: Integration
): Promise<PendingCheckResponse> {
throw new BadBody(
this.identifier,
'{}',
'{}',
'finalizePost is not implemented for this provider'View on GitHub (pinned to 0f1647f749)
Solutions
- In the provider's integration class, override checkPostStatus(accessToken, pendingData, integration) returning a PendingCheckResponse ({ state, data })
- If the provider publishes synchronously, ensure the publisher does not mark the post PENDING so polling is never triggered
- Update the calling workflow/activity to skip polling for providers without this capability
Example fix
// before
class FooProvider extends SocialAbstract {
// no checkPostStatus
}
// after
class FooProvider extends SocialAbstract {
public async checkPostStatus(accessToken: string, pendingData: any, integration: Integration): Promise<PendingCheckResponse> {
const res = await fetch(`https://api.foo.com/status/${pendingData.id}`, { headers: { Authorization: `Bearer ${accessToken}` } });
const json = await res.json();
return { state: json.ready ? 'ready' : 'pending', data: json };
}
} Defensive patterns
Strategy: type-guard
Validate before calling
if (!('checkPostStatus' in providerInstance) || providerInstance.checkPostStatus === SocialAbstract.prototype.checkPostStatus) {
// provider does not support pending polling; avoid marking post PENDING
} Type guard
const supportsPendingCheck = (p: SocialAbstract): boolean => p.checkPostStatus !== SocialAbstract.prototype.checkPostStatus;
Try / catch
try {
await provider.checkPostStatus(token, pendingData, integration);
} catch (e) {
if (/checkPostStatus is not implemented/.test(String(e?.message ?? e))) {
// treat as publish-complete or skip polling for this provider
} else throw e;
} Prevention
- Implement checkPostStatus whenever a provider publish can return a pending id
- In generic workflows, gate polling on the provider capability check
When it happens
Trigger: The generic pending-post polling flow calling checkPostStatus on a provider whose integration class never implemented the method — e.g. a newly added provider or one with synchronous publishing only.
Common situations: See trigger scenarios.
Related errors
- 'finalizePost is not implemented for this provider'
- Organization not found
- Integration not allowed
- Invalid body
- Invalid integration
AI-assisted analysis of gitroomhq/postiz-app@0f1647f749 (2026-08-27).
Data as JSON: /api/errors/ae8c7d3c7ef25bc3.
Report an issue: GitHub.