Skip to main content

Data Types

Internally, the data the passes through Rivet is marked as a number of data types. When integrating Rivet with your own application, you will need to know what these data types are and how to handle them.


A DataValue is a value that can be passed through Rivet. It is a union of all the possible data types that can be passed through Rivet. It is represented as an object with a type property and a value property. The type key is in the table below, except when additional type decorators are present on the type.


A type may have the following decorators applied to it, which change the type. Decorators can be combined on a type name, for example a type can be fn<string[]>. Valid decorators are:

[]The type is an array of the type before the brackets.
fn<type>The type is a function that returns the type inside the angle brackets.


TypeDescriptionTypeScript TypeNotes
anyA special type of data that can store anything.unknownOften, the value contained will be attempted to be either inferred based on the JavaScript type of the value, or it will be attempted to be coerced into a desired data type. Avoid using any in most cases, especially when you already know the type of a value.
booleanA boolean true or false.booleanEquivalent to the JavaScript boolean type.
stringA string value.stringEquivalent to the JavaScript string type.
numberA number value.numberEquivalent to the JavaScript number type.
dateA date value.stringISO-8601 date string.
timeA time value.stringISO-8601 time string.
datetimeA datetime value.stringISO-8601 datetime string.
chat-messageA representation of a chat message to sent to an LLM, with attached metadata such as who is sending it.{ type: string; message: string; name?: string; function_call?: string }
objectAn object value.Record<string, unknown>Roughly equivalent to the JavaScript object type. Often used interchangably with any, and may be an array sometimes.
control-flow-excludedA value that is excluded from control flow.undefined
gpt-functionA definition of a function that GPT can evaluate.(See Rivet source)Only used by the Chat node when "Enable function use" is turned on.
vectorA vector of numbers.number[]Used when generating and using embeddings.
imageAn image value.{ mediaType: string; data: UInt8Array; }
audioAn audio value.{ mediaType: string; eata: UInt8Array; }
binaryA binary value.UInt8Array