gitroomhq/postiz-app · error · BadRequestException
${validation.name}: ${ validation.settingsError || 'Please
Error message
${validation.name}: ${
validation.settingsError || 'Please fix your settings'
} What it means
After a post leaves DRAFT, its channel-specific settings (merged user settings with provider defaults) are validated. settingsError reports which setting is invalid for the provider (e.g. missing board for Pinterest, missing YouTube title, invalid visibility), falling back to 'Please fix your settings'.
Source
Thrown at libraries/nestjs-libraries/src/database/prisma/posts/posts.service.ts:1060
// Same server-side validation as the dashboard / public create route.
const [validation] = await this.validatePosts(orgId, [
{
integration: { id: integration.id },
settings: mergedSettings,
value: value.map((p) => ({ content: p.content, image: p.image })),
},
]);
if (validation.emptyContent) {
throw new BadRequestException(
`${validation.name}: Your post should have at least one character or one image.`
);
}
if (root.state !== 'DRAFT') {
if (!validation.valid) {
throw new BadRequestException(
`${validation.name}: ${
validation.settingsError || 'Please fix your settings'
}`
);
}
if (validation.errors !== true) {
throw new BadRequestException(
`${validation.name}: ${validation.errors}`
);
}
if (validation.tooLong) {
throw new BadRequestException(
`${validation.name}: The maximum characters is ${validation.maximumCharacters}`
);
}
}View on GitHub (pinned to 0f1647f749)
Solutions
- Open the channel settings for that variant and fill the field named in settingsError
- Re-select the remote resource (board, playlist, channel) — it may have been deleted on the platform
- For drafts, complete required settings before switching status to schedule
- Update to the latest version if a provider schema changed and stale settings no longer validate
Example fix
// before
{ integration: { id }, content, settings: {} } // youtube: missing title
// after
{ integration: { id }, content, settings: { title: 'My video title' } } Defensive patterns
Strategy: validation
Validate before calling
const required = REQUIRED_SETTINGS_BY_PROVIDER[providerIdentifier] ?? []; const ok = body.posts.every((p) => required.every((k) => p.settings?.[k] != null && p.settings[k] !== '')); if (ok) await schedulePost(orgId, body);
Prevention
- Mark provider-required settings in the UI before scheduling (not just drafts)
- Re-validate settings when promoting a draft to schedule
- Re-pull remote resources (boards, channels) when they change
When it happens
Trigger: Scheduling a non-draft post whose provider-specific settings fail validation — e.g. YouTube without a title, Pinterest without a board id, Discord without a valid channel selection.
Common situations: Settings accordion skipped in the composer; provider settings changed server-side after the draft was saved; account-specific settings (boards/lists) deleted on the remote platform; drafts promoted to schedule with incomplete settings.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- ${validation.name}: Your post should have at least one chara
- ${validation.name}: ${validation.errors}
- ${validation.name}: The maximum characters is ${validation.m
- Post validation failed
- All posts must have an integration id
AI-assisted analysis of gitroomhq/postiz-app@0f1647f749 (2026-08-27).
Data as JSON: /api/errors/623b1e0e8e3663a1.
Report an issue: GitHub.