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

  1. Open the channel settings for that variant and fill the field named in settingsError
  2. Re-select the remote resource (board, playlist, channel) — it may have been deleted on the platform
  3. For drafts, complete required settings before switching status to schedule
  4. 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

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


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