> ## Documentation Index > Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt > Use this file to discover all available pages before exploring further. # GenerationResponseData Generation data ## Example Usage ```typescript theme={null} import { GenerationResponseData } from "@openrouter/sdk/models"; let value: GenerationResponseData = { apiType: "tts", appId: 12345, cacheDiscount: 0.0002, cancelled: false, createdAt: "2024-07-15T23:33:19.433273+00:00", dataRegion: "global", externalUser: "user-123", finishReason: "stop", generationTime: 1200, httpReferer: "", id: "gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG", isByok: false, latency: 1250, model: "sao10k/l3-stheno-8b", moderationLatency: 50, nativeFinishReason: "stop", nativeTokensCached: 3, nativeTokensCompletion: 25, nativeTokensCompletionImages: 0, nativeTokensPrompt: 10, nativeTokensReasoning: 5, numFetches: 0, numInputAudioPrompt: 0, numMediaCompletion: 0, numMediaPrompt: 1, numSearchResults: 5, origin: "https://openrouter.ai/", presetId: "a9e8d400-592a-494f-908c-375efa66cafd", providerName: "Infermatic", providerResponses: [ { status: 200, }, ], router: "openrouter/auto", serviceTier: "priority", streamed: true, tokensCompletion: 25, tokensPrompt: 10, totalCost: 0.0015, upstreamId: "chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946", upstreamInferenceCost: 0.0012, usage: 0.0015, userAgent: "", webSearchEngine: "exa", workspaceId: "550e8400-e29b-41d4-a716-446655440000", }; ``` ## Fields | Field | Type | Required | Description | Example | | ------------------------------ | ------------------------------------------------------------ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | `apiType` | [models.ApiType](../models/apitype.mdx) | :heavy\_check\_mark: | Type of API used for the generation | | | `appId` | *number* | :heavy\_check\_mark: | ID of the app that made the request | 12345 | | `cacheDiscount` | *number* | :heavy\_check\_mark: | Discount applied due to caching | 0.0002 | | `cancelled` | *boolean* | :heavy\_check\_mark: | Whether the generation was cancelled | false | | `createdAt` | *string* | :heavy\_check\_mark: | ISO 8601 timestamp of when the generation was created | 2024-07-15T23:33:19.433273+00:00 | | `dataRegion` | [models.DataRegion](../models/dataregion.mdx) | :heavy\_check\_mark: | The data region this generation was routed through: 'global', 'europe', or 'us'. | global | | `externalUser` | *string* | :heavy\_check\_mark: | External user identifier | user-123 | | `finishReason` | *string* | :heavy\_check\_mark: | Reason the generation finished | stop | | `generationTime` | *number* | :heavy\_check\_mark: | Time taken for generation in milliseconds | 1200 | | `httpReferer` | *string* | :heavy\_check\_mark: | Referer header from the request | | | `id` | *string* | :heavy\_check\_mark: | Unique identifier for the generation | gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG | | `isByok` | *boolean* | :heavy\_check\_mark: | Whether this used bring-your-own-key | false | | `latency` | *number* | :heavy\_check\_mark: | Total latency in milliseconds | 1250 | | `model` | *string* | :heavy\_check\_mark: | Model used for the generation | sao10k/l3-stheno-8b | | `moderationLatency` | *number* | :heavy\_check\_mark: | Moderation latency in milliseconds | 50 | | `nativeFinishReason` | *string* | :heavy\_check\_mark: | Native finish reason as reported by provider | stop | | `nativeTokensCached` | *number* | :heavy\_check\_mark: | Native cached tokens as reported by provider | 3 | | `nativeTokensCompletion` | *number* | :heavy\_check\_mark: | Native completion tokens as reported by provider | 25 | | `nativeTokensCompletionImages` | *number* | :heavy\_check\_mark: | Native completion image tokens as reported by provider | 0 | | `nativeTokensPrompt` | *number* | :heavy\_check\_mark: | Native prompt tokens as reported by provider | 10 | | `nativeTokensReasoning` | *number* | :heavy\_check\_mark: | Native reasoning tokens as reported by provider | 5 | | `numFetches` | *number* | :heavy\_check\_mark: | Number of web fetches performed | 0 | | `numInputAudioPrompt` | *number* | :heavy\_check\_mark: | Number of audio inputs in the prompt | 0 | | `numMediaCompletion` | *number* | :heavy\_check\_mark: | Number of media items in the completion | 0 | | `numMediaPrompt` | *number* | :heavy\_check\_mark: | Number of media items in the prompt | 1 | | `numSearchResults` | *number* | :heavy\_check\_mark: | Number of search results included | 5 | | `origin` | *string* | :heavy\_check\_mark: | Origin URL of the request | [https://openrouter.ai/](https://openrouter.ai/) | | `presetId` | *string* | :heavy\_check\_mark: | ID of the preset used for this generation, null if no preset was used | a9e8d400-592a-494f-908c-375efa66cafd | | `providerName` | *string* | :heavy\_check\_mark: | Name of the provider that served the request | Infermatic | | `providerResponses` | [models.ProviderResponse](../models/providerresponse.mdx)\[] | :heavy\_check\_mark: | List of provider responses for this generation, including fallback attempts | | | `requestId` | *string* | :heavy\_minus\_sign: | Unique identifier grouping all generations from a single API request | req-1727282430-aBcDeFgHiJkLmNoPqRsT | | `responseCacheSourceId` | *string* | :heavy\_minus\_sign: | If this generation was served from response cache, contains the original generation ID. Null otherwise. | | | `router` | *string* | :heavy\_check\_mark: | Router used for the request (e.g., openrouter/auto) | openrouter/auto | | `serviceTier` | *string* | :heavy\_check\_mark: | Service tier the upstream provider reported running this request on, or null if it did not report one. | priority | | `sessionId` | *string* | :heavy\_minus\_sign: | Session identifier grouping multiple generations in the same session | | | `streamed` | *boolean* | :heavy\_check\_mark: | Whether the response was streamed | true | | `tokensCompletion` | *number* | :heavy\_check\_mark: | Number of tokens in the completion | 25 | | `tokensPrompt` | *number* | :heavy\_check\_mark: | Number of tokens in the prompt | 10 | | `totalCost` | *number* | :heavy\_check\_mark: | Total cost of the generation in USD | 0.0015 | | `upstreamId` | *string* | :heavy\_check\_mark: | Upstream provider's identifier for this generation | chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 | | `upstreamInferenceCost` | *number* | :heavy\_check\_mark: | Cost charged by the upstream provider | 0.0012 | | `usage` | *number* | :heavy\_check\_mark: | Usage amount in USD | 0.0015 | | `userAgent` | *string* | :heavy\_check\_mark: | User-Agent header from the request | | | `webSearchEngine` | *string* | :heavy\_check\_mark: | The resolved web search engine used for this generation (e.g. exa, firecrawl, parallel) | exa | | `workspaceId` | *string* | :heavy\_check\_mark: | ID of the workspace this generation is attributed to. Null for accounts without workspaces. Generations created before workspace resolution existed are attributed to the account default workspace. | 550e8400-e29b-41d4-a716-446655440000 |