Interface MeetingRunRecord

A run's row. The run store seals meetingUrl at rest with the product's key and opens it on read.

interface MeetingRunRecord {
    runId: string;
    ownerRef: string;
    providerName: string;
    providerConnectionRef?: string;
    platform: MeetingPlatform;
    state: MeetingRunState;
    keep: "none" | "account";
    meetingUrl: string;
    botName: string;
    notice: MeetingNotice;
    stopPhrase: string;
    limits: MeetingRunLimits;
    idempotencyKey?: string;
    transcriber?: string;
    requestedAt: number;
    joinAt: number;
    dispatchedAt?: number;
    joinedAt?: number;
    noticePostedAt?: number;
    captureStartedAt?: number;
    leftAt?: number;
    doneAt?: number;
    reason?: MeetingLeaveReason;
    billedSeconds: number;
    reservationId?: string;
    consentRecordId?: string;
    dispatch?: MeetingDispatchRecord;
    pageSeenAt?: number;
    lastUsageAt?: number;
    lastUsageSourceAt?: number;
    reportedSeconds?: number;
    cleanupPending?: boolean;
    purgedAt?: number;
    monitorSeenAt?: number;
    participantCount?: number;
    lastReportAt?: number;
    leaveCommandedAt?: number;
    captureSuspendedAt?: number;
    aloneSince?: number;
    creationPending?: boolean;
    creationContext?: string;
    completionHookAt?: number;
    completionHookClaimedAt?: number;
    funding?: {
        accountRef: string;
        policyVersion: string;
        reservationRef: string;
        maxSeconds: number;
        expiresAt: number;
        fundingMode: "bot_blocks";
        blockSeconds: number;
        maxLiability: {
            blocks: number;
        };
    } | {
        accountRef: string;
        policyVersion: string;
        reservationRef: string;
        maxSeconds: number;
        expiresAt: number;
        fundingMode: "developer_credit";
        rates: {
            version: string;
            currency: "USD";
            reasoningInOutput: boolean;
            components: Record<string, {
                customer: {
                    unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
                    micro: number;
                    per: number;
                };
                supplier: {
                    unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
                    micro: number;
                    per: number;
                };
            }>;
            attemptMinimum?: {
                customerMicro: number;
                supplierMicro: number;
            };
        };
        mediaComponent: string;
        maxLiability: {
            customerMicro: number;
            supplierMicro: number;
        };
    };
    fundingReservationId?: string;
    fundingSettlement?: MeetingFundingSettlement;
    fundingCleanup?: {
        unbilled: boolean;
        complete: boolean;
    };
}

Properties

runId: string
ownerRef: string

The product's reference for who owns the run (an account, an API key's workspace). Opaque to the library.

providerName: string
providerConnectionRef?: string

The provider's opaque reference for the connection the run was sent through (a credential's generation, for example). The content-free row keeps it, so the runs sent through one connection can still be found, and their kept content purged, after the connection's credentials are gone. It names no person and carries nothing of the meeting.

platform: MeetingPlatform
keep: "none" | "account"
meetingUrl: string
botName: string
stopPhrase: string
idempotencyKey?: string
transcriber?: string

The transcriber the run uses, named in the notice (a provider id).

requestedAt: number
joinAt: number
dispatchedAt?: number
joinedAt?: number

When the bot reached the meeting: its waiting room, then the call itself once it is admitted. The waiting-room limit counts from the first, the notice's confirmation from the second.

noticePostedAt?: number

When the bot confirmed its notice in the meeting's chat, as the worker reported it, on the worker's clock: the stop monitor's heartbeats are ordered against it on that clock.

captureStartedAt?: number
leftAt?: number
doneAt?: number
billedSeconds: number
reservationId?: string
consentRecordId?: string
pageSeenAt?: number

The last time the run's page was seen (a run sent from a page).

lastUsageAt?: number

When the last usage report was taken: on the manager's own clock when the host sets the manager's usageSilenceMs, which measures a run's silence from it, and otherwise the report's own time.

lastUsageSourceAt?: number

The worker's own time on the last usage report taken, when the host sets the manager's usageSilenceMs: a usage report the worker made no later than it (a report sent again, or one that arrives late) moves neither lastUsageAt nor reportedSeconds.

reportedSeconds?: number

The largest running total of seconds the worker reported: at left, done or a crash, and on each usage report when the host sets the manager's usageSilenceMs. What a settlement bills from.

cleanupPending?: boolean

Set at left: the settlement, the cleanup and the room's deletion are still owed; cleared when done is written.

purgedAt?: number

When a kept run's content was purged after done (a session's deletion).

monitorSeenAt?: number

The last heartbeat the stop monitor made at or after the notice, at its time bounded to one heartbeat interval past the manager's clock, by which the limits measure the monitor's freshness. The notice's confirmation clears it, so a heartbeat from before the notice is never taken for one after it.

participantCount?: number

How many participants besides the bot the provider last reported.

lastReportAt?: number

When the manager last accepted a report about the run, on the manager's own clock.

leaveCommandedAt?: number

When the bot was last told to leave: a bot that has not left the manager's killAfterMs later is killed. This and the two fields after it are the manager's timers, kept on the row so that any manager sharing the stores, or one that restarted, runs the limits on them.

captureSuspendedAt?: number

When capture was suspended because the stop monitor went quiet; cleared when capture resumes.

aloneSince?: number

Since when the provider has reported no participant besides the bot; cleared when one is reported.

creationPending?: boolean

Set while the run's creation through MeetingManager.sendBotPrepared is unfinished: its reservation, the host's preparation or its job may still be owed. No job of such a run is dispatched. Cleared, with creationContext, once the run's job is scheduled, and by the run's terminal write.

creationContext?: string

Opaque host preparation data, sealed at rest and removed before dispatch.

completionHookAt?: number

When the host's beforeComplete step ran for the run, whether it resolved or threw: a cleanup tried again does not run it twice.

completionHookClaimedAt?: number

When a cleanup claimed the beforeComplete step: one cleanup runs it, and a claim older than the manager's lease is taken over.

funding?: {
    accountRef: string;
    policyVersion: string;
    reservationRef: string;
    maxSeconds: number;
    expiresAt: number;
    fundingMode: "bot_blocks";
    blockSeconds: number;
    maxLiability: {
        blocks: number;
    };
} | {
    accountRef: string;
    policyVersion: string;
    reservationRef: string;
    maxSeconds: number;
    expiresAt: number;
    fundingMode: "developer_credit";
    rates: {
        version: string;
        currency: "USD";
        reasoningInOutput: boolean;
        components: Record<string, {
            customer: {
                unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
                micro: number;
                per: number;
            };
            supplier: {
                unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
                micro: number;
                per: number;
            };
        }>;
        attemptMinimum?: {
            customerMicro: number;
            supplierMicro: number;
        };
    };
    mediaComponent: string;
    maxLiability: {
        customerMicro: number;
        supplierMicro: number;
    };
}

Immutable server-selected funding. Absence preserves legacy entitlement callers.

Type declaration

  • accountRef: string
  • policyVersion: string
  • reservationRef: string
  • maxSeconds: number
  • expiresAt: number
  • fundingMode: "bot_blocks"
  • blockSeconds: number
  • maxLiability: {
        blocks: number;
    }
    • blocks: number

Type declaration

  • accountRef: string
  • policyVersion: string
  • reservationRef: string
  • maxSeconds: number
  • expiresAt: number
  • fundingMode: "developer_credit"
  • rates: {
        version: string;
        currency: "USD";
        reasoningInOutput: boolean;
        components: Record<string, {
            customer: {
                unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
                micro: number;
                per: number;
            };
            supplier: {
                unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
                micro: number;
                per: number;
            };
        }>;
        attemptMinimum?: {
            customerMicro: number;
            supplierMicro: number;
        };
    }
    • version: string
    • currency: "USD"
    • reasoningInOutput: boolean
    • components: Record<string, {
          customer: {
              unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
              micro: number;
              per: number;
          };
          supplier: {
              unit: "request" | "character" | "token" | "second" | "millisecond" | "sample";
              micro: number;
              per: number;
          };
      }>
    • Optional attemptMinimum?: {
          customerMicro: number;
          supplierMicro: number;
      }
      • customerMicro: number
      • supplierMicro: number
  • mediaComponent: string
  • maxLiability: {
        customerMicro: number;
        supplierMicro: number;
    }
    • customerMicro: number
    • supplierMicro: number
fundingReservationId?: string

Write-once actual block reservation or compound hold id.

fundingSettlement?: MeetingFundingSettlement

Write-once terminal decision; retained after content purge for idempotent recovery.

fundingCleanup?: {
    unbilled: boolean;
    complete: boolean;
}

Durable cleanup policy and completion; completion prevents repeated external close effects.

Type declaration

  • unbilled: boolean
  • complete: boolean