paperclipai/paperclip · error · HttpError

cloud_portfolio_invalid_response

cloud_portfolio_invalid_response

Error message

Paperclip Cloud portfolio returned invalid JSON

What it means

Payload decode failure in the /stacks route: the upstream portfolio request succeeded but upstream.json() threw, so the response body is not valid JSON. Wrapped into HTTP 502 because the bad payload originates upstream.

Solutions

  1. Retry the request; if it persists, verify the Paperclip Cloud endpoint version matches this server.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at server/src/routes/cloud.ts:95 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18). Data as JSON: /api/errors/0a7acd69ae026f78. Report an issue: GitHub.

Appendix: source

Thrown at server/src/routes/cloud.ts:95

          "x-paperclip-cloud-stack-id": context.stackId,
        },
        signal: AbortSignal.timeout(10_000),
      });
      if (!upstream.ok) {
        logger.warn(
          { status: upstream.status, stackId: context.stackId },
          "Paperclip Cloud portfolio request failed",
        );
        throw new HttpError(502, "Paperclip Cloud portfolio request failed", {
          code: "cloud_portfolio_upstream_error",
        });
      }

      let payload: unknown;
      try {
        payload = await upstream.json();
      } catch {
        throw new HttpError(502, "Paperclip Cloud portfolio returned invalid JSON", {
          code: "cloud_portfolio_invalid_response",
        });
      }
      portfolioCache.set(cacheKey, {
        expiresAt: currentTime + cacheTtlMs,
        payload,
      });
      res.setHeader("Cache-Control", "no-store");
      res.json(payload);
    } catch (error) {
      if (error instanceof HttpError) throw error;
      logger.warn(
        { err: error, stackId: context.stackId },
        "Paperclip Cloud portfolio request failed",
      );
      throw new HttpError(502, "Paperclip Cloud portfolio request failed", {
        code: "cloud_portfolio_upstream_error",
      });

View on GitHub (pinned to 120ae5428f)