gitroomhq/postiz-app · warning · BadBody

Pinterest may have already published this pin, please check

Error message

Pinterest may have already published this pin, please check your account before posting again to avoid duplicates

What it means

PinterestProvider.checkPostStatus detects a pending pin whose creation attempt was confirmed started but whose result was never recorded (workflow died mid-create). Pinterest offers no query API for whether a pin was created, so re-running create would risk a duplicate pin; the provider refuses and warns the user to check their account.

Source

Thrown at libraries/nestjs-libraries/src/integrations/social/pinterest.provider.ts:350

            board: postDetails?.[0]?.settings.board,
          },
          imagePaths: (postDetails?.[0]?.media || []).map((m) => m.path),
          coverPath: picture?.path,
        } as PinterestPendingData,
      },
    ];
  }

  override async checkPostStatus(
    accessToken: string,
    pendingData: PinterestPendingData,
    integration: Integration
  ): Promise<PendingCheckResponse> {
    // A confirmed create attempt died without reporting its result: Pinterest
    // gives no way to ask whether that pin was created, so never run the
    // create again - stop with an explicit warning instead.
    if (pendingData.attempting && pendingData.confirmed) {
      throw new BadBody(
        'pinterest',
        JSON.stringify({}),
        {} as any,
        'Pinterest may have already published this pin, please check your account before posting again to avoid duplicates'
      );
    }

    // witness the armed create so finalizePost knows the attempt is uniquely
    // accounted for before it mutates anything
    const witness = (): PendingCheckResponse =>
      pendingData.attempting && !pendingData.confirmed
        ? {
            status: 'ready',
            pendingData: { ...pendingData, confirmed: true },
          }
        : { status: 'ready', pendingData };

    // Image-only pins have no asynchronous processing step.

View on GitHub (pinned to 0f1647f749)

Solutions

  1. Manually check the Pinterest account/board for the pin
  2. If not published, delete the pending state and re-post
  3. If published, mark the post as done manually to avoid a duplicate
  4. Avoid retrying the same pending workflow repeatedly
Defensive patterns

Strategy: try-catch

Try / catch

catch (e) { if (/may have already published this pin/.test(e.message)) { /* pause, require manual verification */ } }

Prevention

When it happens

Trigger: pendingData.attempting && pendingData.confirmed is true — the create call was sent to Pinterest but the workflow crashed/timed out before saving the result, and checkPostStatus runs afterward.

Common situations: Temporal activity timeout or worker crash between the Pinterest create request and persisting the outcome; retrying a workflow in this ambiguous state.

Related errors


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