Class: BulkRefusedError
@kortexya/reasoninglayer / BulkRefusedError
Class: BulkRefusedError
Section titled “Class: BulkRefusedError”Defined in: src/errors.ts:527
A bulk write the engine refused row by row (HTTP 422).
Remarks
Section titled “Remarks”POST /api/v1/terms/bulk used to answer one message about a feature and
write nothing, so a client importing four thousand rows learned that
something, somewhere, was wrong. It now names every refused row by its index
in the request, and this error carries that list.
Reached three ways, all of them this class:
- an ordinary batch where any row was refused (nothing was written);
- a
partial: trueREAL write where EVERY row was refused (again nothing was written — a partial batch that landed something answers201instead, with the refusals on BulkAddTermsResponse.errors); - a
dryRun: truebatch WITHOUTpartialthat would have been refused.
⚠️ dryRun: true AND partial: true together do NOT throw. Measured
2026-09-21: bulkCreateTerms({terms: [bad, bad], dryRun: true, partial: true})
answers 200 with {termsAdded: 0, dryRun: true, refused: 2, errors: […, …], coreferencedTermIds: []}, because a dry run that wrote nothing has nothing
to refuse. That pair is the only shape that answers both halves of a forecast
in one call — how many rows would be created AND which rows are bad. A
refused dry run without partial throws, and the thrown error carries no
coreferencedTermIds, so a caller that expects the throw loses the “N would
create, M would merge” half for exactly the files that have a bad row.
Two failures are NOT this error, because neither can be attributed to a row: the end-of-batch constraint propagation answers a ConstraintViolationError for the whole batch, and a persistence failure reverts what the batch inserted.
Example
Section titled “Example”try { await client.terms.bulkCreateTerms({ terms });} catch (e) { if (e instanceof BulkRefusedError) { for (const row of e.rows) { console.error(`row ${row.index}: ${row.message}`); } }}Extends
Section titled “Extends”Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new BulkRefusedError(
message,body,headers,rows,errorCode?):BulkRefusedError
Defined in: src/errors.ts:538
Parameters
Section titled “Parameters”message
Section titled “message”string
unknown
headers
Section titled “headers”Headers
readonly BulkRowRefusal[]
errorCode?
Section titled “errorCode?”string
Returns
Section titled “Returns”BulkRefusedError
Overrides
Section titled “Overrides”Properties
Section titled “Properties”
readonlybody:unknown
Defined in: src/errors.ts:55
Parsed response body.
Inherited from
Section titled “Inherited from”cause?
Section titled “cause?”
optionalcause?:unknown
Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26
Inherited from
Section titled “Inherited from”errorCode
Section titled “errorCode”
readonlyerrorCode:string|undefined
Defined in: src/errors.ts:53
Backend error code (from response body error field), if present.
Inherited from
Section titled “Inherited from”headers
Section titled “headers”
readonlyheaders:Headers
Defined in: src/errors.ts:57
Response headers.
Inherited from
Section titled “Inherited from”message
Section titled “message”message:
string
Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts:1077
Inherited from
Section titled “Inherited from”name:
string='BulkRefusedError'
Defined in: src/errors.ts:528
Overrides
Section titled “Overrides”
readonlyrows: readonlyBulkRowRefusal[]
Defined in: src/errors.ts:536
The refused rows, each naming its index in the request’s terms array.
Remarks
Section titled “Remarks”Never empty — the engine answers this shape only when it refused something.
stack?
Section titled “stack?”
optionalstack?:string
Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts:1078
Inherited from
Section titled “Inherited from”status
Section titled “status”
readonlystatus:number
Defined in: src/errors.ts:51
HTTP status code.
Inherited from
Section titled “Inherited from”stackTraceLimit
Section titled “stackTraceLimit”
staticstackTraceLimit:number
Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:68
The Error.stackTraceLimit property specifies the number of stack frames
collected by a stack trace (whether generated by new Error().stack or
Error.captureStackTrace(obj)).
The default value is 10 but may be set to any valid JavaScript number. Changes
will affect any stack trace captured after the value has been changed.
If set to a non-number value, or set to a negative number, stack traces will not capture any frames.
Inherited from
Section titled “Inherited from”Methods
Section titled “Methods”captureStackTrace()
Section titled “captureStackTrace()”
staticcaptureStackTrace(targetObject,constructorOpt?):void
Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:52
Creates a .stack property on targetObject, which when accessed returns
a string representing the location in the code at which
Error.captureStackTrace() was called.
const myObject = {};Error.captureStackTrace(myObject);myObject.stack; // Similar to `new Error().stack`The first line of the trace will be prefixed with
${myObject.name}: ${myObject.message}.
The optional constructorOpt argument accepts a function. If given, all frames
above constructorOpt, including constructorOpt, will be omitted from the
generated stack trace.
The constructorOpt argument is useful for hiding implementation
details of error generation from the user. For instance:
function a() { b();}
function b() { c();}
function c() { // Create an error without stack trace to avoid calculating the stack trace twice. const { stackTraceLimit } = Error; Error.stackTraceLimit = 0; const error = new Error(); Error.stackTraceLimit = stackTraceLimit;
// Capture the stack trace above function b Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace throw error;}
a();Parameters
Section titled “Parameters”targetObject
Section titled “targetObject”object
constructorOpt?
Section titled “constructorOpt?”Function
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”prepareStackTrace()
Section titled “prepareStackTrace()”
staticprepareStackTrace(err,stackTraces):any
Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:56
Parameters
Section titled “Parameters”Error
stackTraces
Section titled “stackTraces”CallSite[]
Returns
Section titled “Returns”any
https://v8.dev/docs/stack-trace-api#customizing-stack-traces