---
url: /docs/api/core/functions/toBinary.md
---
[**@kaiord/core**](../README.md)

***

[@kaiord/core](../README.md) / toBinary

# Function: toBinary()

> **toBinary**(`krd`, `writer`, `logger?`): `Promise`<`Uint8Array`<`ArrayBufferLike`>>

Defined in: [packages/core/src/application/to-format.ts:17](https://github.com/pablo-albaladejo/kaiord/blob/3eacbe62ef72342d970523967cc5155b5935bb85/packages/core/src/application/to-format.ts#L17)

Converts KRD to binary format with validation.

## Parameters

### krd

#### events?

`object`\[] = `...`

#### extensions?

{\[`key`: `string`]: `unknown`; `course?`: `unknown`; `course_points?`: `unknown`; `fit?`: `unknown`; `health?`: {\[`key`: `string`]: `unknown`; `bodyComposition?`: { `basalMetabolicRateKcal?`: `number`; `bmi?`: `number`; `bodyFatPercent?`: `number`; `bodyWaterPercent?`: `number`; `boneMassKilograms?`: `number`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"bodyComposition"`; `leanMassKilograms?`: `number`; `measuredAt`: `string`; `sourceBridgeId?`: `string`; `version`: `string`; `visceralFatRating?`: `number`; }; `daily?`: { `activeCalories`: `number`; `date`: `string`; `externalId?`: `string`; `floorsClimbed?`: `number`; `intensityMinutes`: { `moderate`: `number`; `vigorous`: `number`; }; `kaiordRecordId?`: `string`; `kind`: `"daily"`; `restingCalories`: `number`; `sourceBridgeId?`: `string`; `steps`: `number`; `version`: `string`; }; `hrv?`: { `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"hrv"`; `measuredAt`: `string`; `measurementWindow`: `"overnight"` | `"spot"`; `rMSSD`: `number`; `score?`: `number`; `sourceBridgeId?`: `string`; `version`: `string`; }; `sleep?`: { `endTime`: `string`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"sleep"`; `restingHeartRate?`: `number`; `score?`: `number`; `sourceBridgeId?`: `string`; `stages`: `object`\[]; `startTime`: `string`; `totalDurationSeconds?`: `number`; `version`: `string`; }; `stress?`: { `averageLevel`: `number`; `endTime`: `string`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"stress"`; `peakLevel`: `number`; `sourceBridgeId?`: `string`; `startTime`: `string`; `version`: `string`; }; `weight?`: { `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"weight"`; `measuredAt`: `string`; `sourceBridgeId?`: `string`; `version`: `string`; `weightKilograms`: `number`; }; }; `structured_workout?`: `unknown`; } = `...`

#### extensions.course?

`unknown` = `...`

#### extensions.course_points?

`unknown` = `...`

#### extensions.fit?

`unknown` = `...`

#### extensions.health?

{\[`key`: `string`]: `unknown`; `bodyComposition?`: { `basalMetabolicRateKcal?`: `number`; `bmi?`: `number`; `bodyFatPercent?`: `number`; `bodyWaterPercent?`: `number`; `boneMassKilograms?`: `number`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"bodyComposition"`; `leanMassKilograms?`: `number`; `measuredAt`: `string`; `sourceBridgeId?`: `string`; `version`: `string`; `visceralFatRating?`: `number`; }; `daily?`: { `activeCalories`: `number`; `date`: `string`; `externalId?`: `string`; `floorsClimbed?`: `number`; `intensityMinutes`: { `moderate`: `number`; `vigorous`: `number`; }; `kaiordRecordId?`: `string`; `kind`: `"daily"`; `restingCalories`: `number`; `sourceBridgeId?`: `string`; `steps`: `number`; `version`: `string`; }; `hrv?`: { `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"hrv"`; `measuredAt`: `string`; `measurementWindow`: `"overnight"` | `"spot"`; `rMSSD`: `number`; `score?`: `number`; `sourceBridgeId?`: `string`; `version`: `string`; }; `sleep?`: { `endTime`: `string`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"sleep"`; `restingHeartRate?`: `number`; `score?`: `number`; `sourceBridgeId?`: `string`; `stages`: `object`\[]; `startTime`: `string`; `totalDurationSeconds?`: `number`; `version`: `string`; }; `stress?`: { `averageLevel`: `number`; `endTime`: `string`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"stress"`; `peakLevel`: `number`; `sourceBridgeId?`: `string`; `startTime`: `string`; `version`: `string`; }; `weight?`: { `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"weight"`; `measuredAt`: `string`; `sourceBridgeId?`: `string`; `version`: `string`; `weightKilograms`: `number`; }; } = `...`

#### extensions.health.bodyComposition?

{ `basalMetabolicRateKcal?`: `number`; `bmi?`: `number`; `bodyFatPercent?`: `number`; `bodyWaterPercent?`: `number`; `boneMassKilograms?`: `number`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"bodyComposition"`; `leanMassKilograms?`: `number`; `measuredAt`: `string`; `sourceBridgeId?`: `string`; `version`: `string`; `visceralFatRating?`: `number`; } = `...`

#### extensions.health.bodyComposition.basalMetabolicRateKcal?

`number` = `...`

#### extensions.health.bodyComposition.bmi?

`number` = `...`

#### extensions.health.bodyComposition.bodyFatPercent?

`number` = `...`

#### extensions.health.bodyComposition.bodyWaterPercent?

`number` = `...`

#### extensions.health.bodyComposition.boneMassKilograms?

`number` = `...`

#### extensions.health.bodyComposition.externalId?

`string` = `...`

#### extensions.health.bodyComposition.kaiordRecordId?

`string` = `...`

#### extensions.health.bodyComposition.kind

`"bodyComposition"` = `...`

#### extensions.health.bodyComposition.leanMassKilograms?

`number` = `...`

#### extensions.health.bodyComposition.measuredAt

`string` = `...`

#### extensions.health.bodyComposition.sourceBridgeId?

`string` = `...`

#### extensions.health.bodyComposition.version

`string` = `healthVersionSchema`

#### extensions.health.bodyComposition.visceralFatRating?

`number` = `...`

#### extensions.health.daily?

{ `activeCalories`: `number`; `date`: `string`; `externalId?`: `string`; `floorsClimbed?`: `number`; `intensityMinutes`: { `moderate`: `number`; `vigorous`: `number`; }; `kaiordRecordId?`: `string`; `kind`: `"daily"`; `restingCalories`: `number`; `sourceBridgeId?`: `string`; `steps`: `number`; `version`: `string`; } = `...`

#### extensions.health.daily.activeCalories

`number` = `...`

#### extensions.health.daily.date

`string` = `...`

#### extensions.health.daily.externalId?

`string` = `...`

#### extensions.health.daily.floorsClimbed?

`number` = `...`

#### extensions.health.daily.intensityMinutes

{ `moderate`: `number`; `vigorous`: `number`; } = `...`

#### extensions.health.daily.intensityMinutes.moderate

`number` = `...`

#### extensions.health.daily.intensityMinutes.vigorous

`number` = `...`

#### extensions.health.daily.kaiordRecordId?

`string` = `...`

#### extensions.health.daily.kind

`"daily"` = `...`

#### extensions.health.daily.restingCalories

`number` = `...`

#### extensions.health.daily.sourceBridgeId?

`string` = `...`

#### extensions.health.daily.steps

`number` = `...`

#### extensions.health.daily.version

`string` = `healthVersionSchema`

#### extensions.health.hrv?

{ `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"hrv"`; `measuredAt`: `string`; `measurementWindow`: `"overnight"` | `"spot"`; `rMSSD`: `number`; `score?`: `number`; `sourceBridgeId?`: `string`; `version`: `string`; } = `...`

#### extensions.health.hrv.externalId?

`string` = `...`

#### extensions.health.hrv.kaiordRecordId?

`string` = `...`

#### extensions.health.hrv.kind

`"hrv"` = `...`

#### extensions.health.hrv.measuredAt

`string` = `...`

#### extensions.health.hrv.measurementWindow

`"overnight"` | `"spot"` = `...`

#### extensions.health.hrv.rMSSD

`number` = `...`

#### extensions.health.hrv.score?

`number` = `...`

#### extensions.health.hrv.sourceBridgeId?

`string` = `...`

#### extensions.health.hrv.version

`string` = `healthVersionSchema`

#### extensions.health.sleep?

{ `endTime`: `string`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"sleep"`; `restingHeartRate?`: `number`; `score?`: `number`; `sourceBridgeId?`: `string`; `stages`: `object`\[]; `startTime`: `string`; `totalDurationSeconds?`: `number`; `version`: `string`; } = `...`

#### extensions.health.sleep.endTime

`string` = `...`

#### extensions.health.sleep.externalId?

`string` = `...`

#### extensions.health.sleep.kaiordRecordId?

`string` = `...`

#### extensions.health.sleep.kind

`"sleep"` = `...`

#### extensions.health.sleep.restingHeartRate?

`number` = `...`

#### extensions.health.sleep.score?

`number` = `...`

#### extensions.health.sleep.sourceBridgeId?

`string` = `...`

#### extensions.health.sleep.stages

`object`\[] = `...`

#### extensions.health.sleep.startTime

`string` = `...`

#### extensions.health.sleep.totalDurationSeconds?

`number` = `...`

#### extensions.health.sleep.version

`string` = `healthVersionSchema`

#### extensions.health.stress?

{ `averageLevel`: `number`; `endTime`: `string`; `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"stress"`; `peakLevel`: `number`; `sourceBridgeId?`: `string`; `startTime`: `string`; `version`: `string`; } = `...`

#### extensions.health.stress.averageLevel

`number` = `...`

#### extensions.health.stress.endTime

`string` = `...`

#### extensions.health.stress.externalId?

`string` = `...`

#### extensions.health.stress.kaiordRecordId?

`string` = `...`

#### extensions.health.stress.kind

`"stress"` = `...`

#### extensions.health.stress.peakLevel

`number` = `...`

#### extensions.health.stress.sourceBridgeId?

`string` = `...`

#### extensions.health.stress.startTime

`string` = `...`

#### extensions.health.stress.version

`string` = `healthVersionSchema`

#### extensions.health.weight?

{ `externalId?`: `string`; `kaiordRecordId?`: `string`; `kind`: `"weight"`; `measuredAt`: `string`; `sourceBridgeId?`: `string`; `version`: `string`; `weightKilograms`: `number`; } = `...`

#### extensions.health.weight.externalId?

`string` = `...`

#### extensions.health.weight.kaiordRecordId?

`string` = `...`

#### extensions.health.weight.kind

`"weight"` = `...`

#### extensions.health.weight.measuredAt

`string` = `...`

#### extensions.health.weight.sourceBridgeId?

`string` = `...`

#### extensions.health.weight.version

`string` = `healthVersionSchema`

#### extensions.health.weight.weightKilograms

`number` = `...`

#### extensions.structured_workout?

`unknown` = `...`

#### laps?

`object`\[] = `...`

#### metadata

{ `created`: `string`; `manufacturer?`: `string`; `product?`: `string`; `serialNumber?`: `string`; `sport?`: `string`; `subSport?`: `string`; } = `krdMetadataSchema`

#### metadata.created

`string` = `...`

#### metadata.manufacturer?

`string` = `...`

#### metadata.product?

`string` = `...`

#### metadata.serialNumber?

`string` = `...`

#### metadata.sport?

`string` = `...`

**See**

sportSchema for known sport values. Accepts custom strings for forward compatibility.

Optional at the metadata level because health-metric KRD types
(sleep, weight, HRV, daily wellness, body composition, stress)
have no associated sport. A conditional refinement on `krdSchema`
still requires `sport` for the three legacy workout/activity/course
types so v1.x consumers see no change for those.

#### metadata.subSport?

`string` = `...`

#### records?

`object`\[] = `...`

#### sessions?

`object`\[] = `...`

#### type

`"structured_workout"` | `"recorded_activity"` | `"course"` | `"sleep_record"` | `"weight_measurement"` | `"hrv_summary"` | `"daily_wellness"` | `"body_composition"` | `"stress_episode"` = `fileTypeSchema`

#### version

`string` = `...`

### writer

[`BinaryWriter`](../type-aliases/BinaryWriter.md)

### logger?

[`Logger`](../type-aliases/Logger.md)

## Returns

`Promise`<`Uint8Array`<`ArrayBufferLike`>>

## Example

```typescript
import { toBinary } from '@kaiord/core';
import { fitWriter } from '@kaiord/fit';

const buffer = await toBinary(krd, fitWriter);
```
