actualbudget/actual · error

fileId is required

Error message

fileId is required

What it means

Error "fileId is required" thrown in actualbudget/actual.

Source

Thrown at packages/sync-server/src/app-sync.ts:310

    }
  }

  res.send(OK_RESPONSE);
});

app.post('/upload-user-file', async (req, res) => {
  if (typeof req.headers['x-actual-name'] !== 'string') {
    // FIXME: Not sure how this cannot be a string when the header is
    // set.
    res.status(400).send('single x-actual-name is required');
    return;
  }

  const name = decodeURIComponent(req.headers['x-actual-name']);
  const fileId = req.headers['x-actual-file-id'];

  if (!fileId || typeof fileId !== 'string') {
    res.status(400).send('fileId is required');
    return;
  }
  if (!isValidFileId(fileId)) {
    res.status(400).send('invalid fileId');
    return;
  }

  let groupId = req.headers['x-actual-group-id'] || null;
  const encryptMeta = extractSingleHeader(req, res, 'x-actual-encrypt-meta');
  if (res.headersSent) return;
  const syncFormatVersion = extractSingleHeader(req, res, 'x-actual-format');
  if (res.headersSent) return;

  if (!!groupId && (typeof groupId !== 'string' || !isValidGroupId(groupId))) {
    res.status(400).send('invalid groupId');
    return;
  }

View on GitHub (pinned to d4334cb6e6)

When it happens

Trigger: Thrown at packages/sync-server/src/app-sync.ts:310 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of actualbudget/actual@d4334cb6e6 (2026-08-29). Data as JSON: /api/errors/0eaa1b738797b3de. Report an issue: GitHub.