Use this endpoint to stream individual inference data points to Openlayer.
If you want to upload many inferences in one go, please use the batch upload method instead.
Authorizations
Authorization
string
header
required
Bearer authentication header of the form Bearer <token>, where <token> is your workspace API key. See Find your API key for more information.
Path Parameters
inferencePipelineId
string<uuid>
required
The inference pipeline id (a UUID).
Body
application/json
rows
object[]
required
A list of inference data points with inputs and outputs
Example:
[ { "user_query": "what is the meaning of life?", "output": "42", "tokens": 7, "cost": 0.02, "timestamp": 1620000000 } ]
config
LLM · object
required
Configuration for the data stream. Depends on your Openlayer project task type.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Openlayer","colors":{"primary":"#592FEA","light":"#7A58EE","dark":"#7A58EE"},"logo":{"light":"https://mintcdn.com/openlayer-docs/j8aCq8ZxFTiWgvd7/logo/logo-docs-brand.svg?fit=max\u0026auto=format\u0026n=j8aCq8ZxFTiWgvd7\u0026q=85\u0026s=e33e9c38c5e338a9df337ef2c11c1d12","dark":"https://mintcdn.com/openlayer-docs/j8aCq8ZxFTiWgvd7/logo/logo-docs-brand-dark.svg?fit=max\u0026auto=format\u0026n=j8aCq8ZxFTiWgvd7\u0026q=85\u0026s=55cba7faebfb90304a52071092233014","href":"https://openlayer.com"},"favicon":"https://mintcdn.com/openlayer-docs/V8WkhV9OB3C8n0Xk/favicon.svg?fit=max\u0026auto=format\u0026n=V8WkhV9OB3C8n0Xk\u0026q=85\u0026s=abe75e70e20a31a0c2b99b49d2ae158b","api":{"openapi":["api-reference/openapi.yaml"],"playground":{"display":"none"},"mdx":{"auth":{"method":"bearer"},"server":"https://api.openlayer.com/v1"}},"appearance":{"default":"system"},"background":{"color":{"light":"#FFFFFF","dark":"#000000"}},"navbar":{"links":[{"href":"https://discord.gg/t6wS2g6MMB","label":"Community"},{"href":"https://app.openlayer.com/?login=true","label":"Log in"}],"primary":{"type":"button","label":"Get started","href":"https://app.openlayer.com/"}},"footer":{"socials":{"discord":"https://discord.gg/t6wS2g6MMB","linkedin":"https://www.linkedin.com/company/openlayerco","twitter":"https://twitter.com/openlayerco"}},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"integrations":{"mixpanel":{"projectToken":"401ce9e4de4663c33009eb3d140d3945"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"openlayer-docs","hasAudioNarration":false,"actualSubdomain":"openlayer-docs","customDomains":["openlayer.com"],"gitSource":{"type":"github","owner":"openlayer-ai","repo":"openlayer-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af6316fc9aed49005cbf994","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"Documentation","count":198},{"language":"default","tag":"Tests","count":122},{"language":"default","tag":"Catalog","count":111},{"language":"default","tag":"Reference","count":91},{"language":"default","tag":"REST API","count":64},{"language":"default","tag":"Integrations","count":62},{"language":"default","tag":"Governance","count":35},{"language":"default","tag":"Observability","count":23},{"language":"default","tag":"CLI","count":19},{"language":"default","tag":"No-Code Platforms","count":18}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/rest/monitoring/stream-data","slug":"/api-reference/rest/monitoring/stream-data","pageMetadata":{"title":"Publish records","description":"Publish records to a data source (formerly known as \"inference pipeline\").","openapi":"post /inference-pipelines/{inferencePipelineId}/data-stream","href":"/api-reference/rest/monitoring/stream-data"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Publish records to a data source (formerly known as “inference pipeline”).\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,..._provideComponents(),...props.components},{Note}=_components;if(!Note)_missingMdxReference(`Note`,true);return _jsx(Note,{children:_jsxs(_components.p,{children:[`Use this endpoint to stream individual inference data points to Openlayer.\nIf you want to upload many inferences in one go, please use the `,_jsx(_components.a,{href:`https://github.com/openlayer-ai/openlayer-python/blob/main/examples/monitoring/upload_batch_data.py`,children:`batch upload method`}),` instead.`]})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Publish records","description":"Publish records to a data source (formerly known as \"inference pipeline\").","openapi":"post /inference-pipelines/{inferencePipelineId}/data-stream","href":"/api-reference/rest/monitoring/stream-data"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/openlayer-docs/a85e4a0a43b4a6e9/.eslintrc.js"],"openApiReferenceData":{"operation":{"tags":["Monitoring"],"summary":"Publish inference","operationId":"streamData","description":"Publish records to a data source (formerly known as \"inference pipeline\").","parameters":["cd0d03df-23ab-4d0b-9397-9eff91b4bcc6"],"responses":{"200":"551c96d1-1473-4280-b91b-ff1f7883a618","500":"33846c5d-ac70-4c40-8a34-6474377fa160"},"requestBody":"f2cc44cc-c8a7-4fd7-9455-a97b2c02b680","x-codeSamples":[{"lang":"python","source":"from openlayer import Openlayer\n\nclient = Openlayer()\n\nresponse = client.inference_pipelines.data.stream(\n \"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\",\n config={\n \"input_variable_names\": [\"user_query\"],\n \"output_column_name\": \"output\",\n \"num_of_token_column_name\": \"tokens\",\n \"cost_column_name\": \"cost\",\n \"timestamp_column_name\": \"timestamp\",\n },\n rows=[\n {\n \"user_query\": \"What is the meaning of life?\",\n \"output\": \"42\",\n \"tokens\": 7,\n \"cost\": 0.02,\n \"timestamp\": 1620000000,\n }\n ],\n)\nprint(response.success)\n"},{"lang":"typescript","source":"import Openlayer from 'openlayer';\n\nconst client = new Openlayer();\n\nconst response = await client.inferencePipelines.data.stream('c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f', {\n config: {\n inputVariableNames: ['user_query'],\n outputColumnName: 'output',\n numOfTokenColumnName: 'tokens',\n costColumnName: 'cost',\n timestampColumnName: 'timestamp',\n },\n rows: [\n {\n user_query: 'What is the meaning of life?',\n output: '42',\n tokens: 7,\n cost: 0.02,\n timestamp: 1610000000,\n },\n ],\n});\n\nconsole.log(response.success);\n"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openlayer-ai/openlayer-go\"\n)\n\nclient := openlayer.NewClient()\nresponse, err := client.InferencePipelines.Data.Stream(\n\tcontext.TODO(),\n\t\"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\",\n\topenlayer.InferencePipelineDataStreamParams{\n\t\tConfig: openlayer.F[openlayer.InferencePipelineDataStreamParamsConfigUnion](openlayer.InferencePipelineDataStreamParamsConfigLlmData{\n\t\t\tInputVariableNames: openlayer.F([]string{\"user_query\"}),\n\t\t\tOutputColumnName: openlayer.F(\"output\"),\n\t\t\tNumOfTokenColumnName: openlayer.F(\"tokens\"),\n\t\t\tCostColumnName: openlayer.F(\"cost\"),\n\t\t\tTimestampColumnName: openlayer.F(\"timestamp\"),\n\t\t}),\n\t\tRows: openlayer.F([]map[string]interface{}{{\n\t\t\t\"user_query\": \"What is the meaning of life?\",\n\t\t\t\"output\": \"42\",\n\t\t\t\"tokens\": 7,\n\t\t\t\"cost\": 0.02,\n\t\t\t\"timestamp\": 1710000000,\n\t\t}}),\n\t},\n)\nif err != nil {\n\tpanic(err.Error())\n}\nfmt.Printf(\"%+v\\n\", response.Success)\n"},{"lang":"java","source":"import com.openlayer.api.client.OpenlayerClient;\nimport com.openlayer.api.client.okhttp.OpenlayerOkHttpClient;\nimport com.openlayer.api.core.JsonValue;\nimport com.openlayer.api.models.inferencepipelines.data.DataStreamParams;\nimport com.openlayer.api.models.inferencepipelines.data.DataStreamResponse;\n\nOpenlayerClient client = OpenlayerOkHttpClient.fromEnv();\n\nDataStreamParams params = DataStreamParams.builder()\n .inferencePipelineId(\"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\")\n .config(DataStreamParams.Config.LlmData.builder()\n .addInputVariableName(\"user_query\")\n .outputColumnName(\"output\")\n .numOfTokenColumnName(\"tokens\")\n .costColumnName(\"cost\")\n .timestampColumnName(\"timestamp\")\n .build())\n .addRow(DataStreamParams.Row.builder()\n .putAdditionalProperty(\"user_query\", JsonValue.from(\"what is the meaning of life?\"))\n .putAdditionalProperty(\"output\", JsonValue.from(\"42\"))\n .putAdditionalProperty(\"tokens\", JsonValue.from(7))\n .putAdditionalProperty(\"cost\", JsonValue.from(0.02))\n .putAdditionalProperty(\"timestamp\", JsonValue.from(1610000000))\n .build())\n .build();\nDataStreamResponse response = client.inferencePipelines().data().stream(params);\n"},{"lang":"ruby","source":"require \"openlayer\"\n\nopenlayer = Openlayer::Client.new(api_key: ENV[\"OPENLAYER_API_KEY\"])\n\nresponse = openlayer.inference_pipelines.data.stream(\n \"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\",\n config: {\n inputVariableNames: [\"user_query\"],\n outputColumnName: \"output\",\n numOfTokenColumnName: \"tokens\",\n costColumnName: \"cost\",\n timestampColumnName: \"timestamp\"\n },\n rows: [\n {\n user_query: \"what is the meaning of life?\",\n output: \"42\",\n tokens: 7,\n cost: 0.02,\n timestamp: 1610000000\n }\n ]\n)\n\nputs(response.success)\n"},{"lang":"curl","source":"curl --request POST \\\n --url https://api.openlayer.com/v1/inference-pipelines/{inferencePipelineId}/data-stream \\\n --header 'Authorization: Bearer \u003ctoken>' \\\n --header 'Content-Type: application/json' \\\n --data '{\n \"rows\": [\n {\n \"user_query\": \"what is the meaning of life?\",\n \"output\": \"42\",\n \"tokens\": 7,\n \"cost\": 0.02,\n \"timestamp\": 1620000000\n }\n ],\n \"config\": {\n \"prompt\": [\n {\n \"role\": \"user\",\n \"content\": \"{{ user_query }}\"\n }\n ],\n \"inputVariableNames\": [\n \"user_query\"\n ],\n \"outputColumnName\": \"output\",\n \"timestampColumnName\": \"timestamp\",\n \"costColumnName\": \"cost\",\n \"numOfTokenColumnName\": \"tokens\"\n }\n}'\n"}],"method":"post","type":"path","servers":["fea2bc8c-1ea3-4343-9e20-4a7a6ebd16f0"],"security":["b47f0f8e-3253-43bf-bb73-d6de6e875cde"],"path":"/inference-pipelines/{inferencePipelineId}/data-stream","baseUrlOptions":["https://api.openlayer.com/v1"],"title":"Publish inference","codeSamples":[{"lang":"python","source":"from openlayer import Openlayer\n\nclient = Openlayer()\n\nresponse = client.inference_pipelines.data.stream(\n \"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\",\n config={\n \"input_variable_names\": [\"user_query\"],\n \"output_column_name\": \"output\",\n \"num_of_token_column_name\": \"tokens\",\n \"cost_column_name\": \"cost\",\n \"timestamp_column_name\": \"timestamp\",\n },\n rows=[\n {\n \"user_query\": \"What is the meaning of life?\",\n \"output\": \"42\",\n \"tokens\": 7,\n \"cost\": 0.02,\n \"timestamp\": 1620000000,\n }\n ],\n)\nprint(response.success)\n"},{"lang":"typescript","source":"import Openlayer from 'openlayer';\n\nconst client = new Openlayer();\n\nconst response = await client.inferencePipelines.data.stream('c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f', {\n config: {\n inputVariableNames: ['user_query'],\n outputColumnName: 'output',\n numOfTokenColumnName: 'tokens',\n costColumnName: 'cost',\n timestampColumnName: 'timestamp',\n },\n rows: [\n {\n user_query: 'What is the meaning of life?',\n output: '42',\n tokens: 7,\n cost: 0.02,\n timestamp: 1610000000,\n },\n ],\n});\n\nconsole.log(response.success);\n"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/openlayer-ai/openlayer-go\"\n)\n\nclient := openlayer.NewClient()\nresponse, err := client.InferencePipelines.Data.Stream(\n\tcontext.TODO(),\n\t\"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\",\n\topenlayer.InferencePipelineDataStreamParams{\n\t\tConfig: openlayer.F[openlayer.InferencePipelineDataStreamParamsConfigUnion](openlayer.InferencePipelineDataStreamParamsConfigLlmData{\n\t\t\tInputVariableNames: openlayer.F([]string{\"user_query\"}),\n\t\t\tOutputColumnName: openlayer.F(\"output\"),\n\t\t\tNumOfTokenColumnName: openlayer.F(\"tokens\"),\n\t\t\tCostColumnName: openlayer.F(\"cost\"),\n\t\t\tTimestampColumnName: openlayer.F(\"timestamp\"),\n\t\t}),\n\t\tRows: openlayer.F([]map[string]interface{}{{\n\t\t\t\"user_query\": \"What is the meaning of life?\",\n\t\t\t\"output\": \"42\",\n\t\t\t\"tokens\": 7,\n\t\t\t\"cost\": 0.02,\n\t\t\t\"timestamp\": 1710000000,\n\t\t}}),\n\t},\n)\nif err != nil {\n\tpanic(err.Error())\n}\nfmt.Printf(\"%+v\\n\", response.Success)\n"},{"lang":"java","source":"import com.openlayer.api.client.OpenlayerClient;\nimport com.openlayer.api.client.okhttp.OpenlayerOkHttpClient;\nimport com.openlayer.api.core.JsonValue;\nimport com.openlayer.api.models.inferencepipelines.data.DataStreamParams;\nimport com.openlayer.api.models.inferencepipelines.data.DataStreamResponse;\n\nOpenlayerClient client = OpenlayerOkHttpClient.fromEnv();\n\nDataStreamParams params = DataStreamParams.builder()\n .inferencePipelineId(\"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\")\n .config(DataStreamParams.Config.LlmData.builder()\n .addInputVariableName(\"user_query\")\n .outputColumnName(\"output\")\n .numOfTokenColumnName(\"tokens\")\n .costColumnName(\"cost\")\n .timestampColumnName(\"timestamp\")\n .build())\n .addRow(DataStreamParams.Row.builder()\n .putAdditionalProperty(\"user_query\", JsonValue.from(\"what is the meaning of life?\"))\n .putAdditionalProperty(\"output\", JsonValue.from(\"42\"))\n .putAdditionalProperty(\"tokens\", JsonValue.from(7))\n .putAdditionalProperty(\"cost\", JsonValue.from(0.02))\n .putAdditionalProperty(\"timestamp\", JsonValue.from(1610000000))\n .build())\n .build();\nDataStreamResponse response = client.inferencePipelines().data().stream(params);\n"},{"lang":"ruby","source":"require \"openlayer\"\n\nopenlayer = Openlayer::Client.new(api_key: ENV[\"OPENLAYER_API_KEY\"])\n\nresponse = openlayer.inference_pipelines.data.stream(\n \"c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f\",\n config: {\n inputVariableNames: [\"user_query\"],\n outputColumnName: \"output\",\n numOfTokenColumnName: \"tokens\",\n costColumnName: \"cost\",\n timestampColumnName: \"timestamp\"\n },\n rows: [\n {\n user_query: \"what is the meaning of life?\",\n output: \"42\",\n tokens: 7,\n cost: 0.02,\n timestamp: 1610000000\n }\n ]\n)\n\nputs(response.success)\n"},{"lang":"curl","source":"curl --request POST \\\n --url https://api.openlayer.com/v1/inference-pipelines/{inferencePipelineId}/data-stream \\\n --header 'Authorization: Bearer \u003ctoken>' \\\n --header 'Content-Type: application/json' \\\n --data '{\n \"rows\": [\n {\n \"user_query\": \"what is the meaning of life?\",\n \"output\": \"42\",\n \"tokens\": 7,\n \"cost\": 0.02,\n \"timestamp\": 1620000000\n }\n ],\n \"config\": {\n \"prompt\": [\n {\n \"role\": \"user\",\n \"content\": \"{{ user_query }}\"\n }\n ],\n \"inputVariableNames\": [\n \"user_query\"\n ],\n \"outputColumnName\": \"output\",\n \"timestampColumnName\": \"timestamp\",\n \"costColumnName\": \"cost\",\n \"numOfTokenColumnName\": \"tokens\"\n }\n}'\n"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{"cd0d03df-23ab-4d0b-9397-9eff91b4bcc6":{"name":"inferencePipelineId","in":"path","description":"The inference pipeline id (a UUID).","required":true,"schema":{"type":"string","format":"uuid","isRequired":true,"description":"The inference pipeline id (a UUID).","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","description":"A list of inference data points with inputs and outputs","example":[{"user_query":"what is the meaning of life?","output":"42","tokens":7,"cost":0.02,"timestamp":1620000000}],"nullable":false,"items":{"type":"object","additionalProperties":true,"uniqueKey":"rows.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"rows","typeLabel":"object[]"},"config":{"oneOf":[{"type":"object","title":"LLM","description":"Configuration for the data stream. Depends on your **Openlayer project task type**.","required":["outputColumnName"],"example":{"prompt":[{"role":"user","content":"{{ user_query }}"}],"inputVariableNames":["user_query"],"outputColumnName":"output","timestampColumnName":"timestamp","costColumnName":"cost","numOfTokenColumnName":"tokens"},"properties":{"outputColumnName":{"type":"string","description":"Name of the column with the model outputs.","example":"output","isRequired":true,"uniqueKey":"config.oneOf.0.outputColumnName","typeLabel":"string"},"numOfTokenColumnName":{"oneOf":[{"type":"string","description":"Name of the column with the total number of tokens.","example":"num_tokens","uniqueKey":"config.oneOf.0.numOfTokenColumnName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Name of the column with the total number of tokens.","example":"num_tokens","uniqueKey":"config.oneOf.0.numOfTokenColumnName.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.numOfTokenColumnName","typeLabel":"string | null"},"contextColumnName":{"type":"string","description":"Name of the column with the context retrieved. Applies to RAG use cases. Providing the context enables RAG-specific metrics.","example":"context","uniqueKey":"config.oneOf.0.contextColumnName","typeLabel":"string"},"costColumnName":{"type":"string","description":"Name of the column with the cost associated with each row.","example":"cost","uniqueKey":"config.oneOf.0.costColumnName","typeLabel":"string"},"groundTruthColumnName":{"type":"string","description":"Name of the column with the ground truths.","example":"ground_truth","uniqueKey":"config.oneOf.0.groundTruthColumnName","typeLabel":"string"},"inferenceIdColumnName":{"type":"string","description":"Name of the column with the inference ids. This is useful if you want to update rows at a later point in time. If not provided, a unique id is generated by Openlayer.","example":"id","uniqueKey":"config.oneOf.0.inferenceIdColumnName","typeLabel":"string"},"inputVariableNames":{"type":"array","description":"Array of input variable names. Each input variable should be a dataset column.","example":["user_query"],"items":{"type":"string","uniqueKey":"config.oneOf.0.inputVariableNames.items.[INDEX]","typeLabel":"string"},"uniqueKey":"config.oneOf.0.inputVariableNames","typeLabel":"string[]"},"latencyColumnName":{"type":"string","description":"Name of the column with the latencies.","example":"latency","uniqueKey":"config.oneOf.0.latencyColumnName","typeLabel":"string"},"metadata":{"type":"object","description":"Object with metadata.","uniqueKey":"config.oneOf.0.metadata","typeLabel":"object"},"prompt":{"type":"array","description":"Prompt for the LLM.","example":[{"role":"user","content":"{{ user_query }}"}],"items":{"type":"object","properties":{"role":{"type":"string","description":"Role of the prompt.","example":"user","uniqueKey":"config.oneOf.0.prompt.items.[INDEX].role","typeLabel":"string"},"content":{"type":"string","description":"Content of the prompt.","example":"{{ user_query }}","uniqueKey":"config.oneOf.0.prompt.items.[INDEX].content","typeLabel":"string"}},"uniqueKey":"config.oneOf.0.prompt.items.[INDEX]","typeLabel":"object"},"uniqueKey":"config.oneOf.0.prompt","typeLabel":"object[]"},"questionColumnName":{"type":"string","description":"Name of the column with the questions. Applies to RAG use cases. Providing the question enables RAG-specific metrics.","example":"question","uniqueKey":"config.oneOf.0.questionColumnName","typeLabel":"string"},"timestampColumnName":{"type":"string","description":"Name of the column with the timestamps. Timestamps must be in UNIX sec format. If not provided, the upload timestamp is used.","example":"timestamp","uniqueKey":"config.oneOf.0.timestampColumnName","typeLabel":"string"},"userIdColumnName":{"oneOf":[{"type":"string","description":"Name of the column with the user id.","example":"user_id","uniqueKey":"config.oneOf.0.userIdColumnName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Name of the column with the user id.","example":"user_id","uniqueKey":"config.oneOf.0.userIdColumnName.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.userIdColumnName","typeLabel":"string | null"},"sessionIdColumnName":{"oneOf":[{"type":"string","description":"Name of the column with the session id.","example":"session_id","uniqueKey":"config.oneOf.0.sessionIdColumnName.oneOf.0","typeLabel":"string"},{"type":"null","description":"Name of the column with the session id.","example":"session_id","uniqueKey":"config.oneOf.0.sessionIdColumnName.oneOf.1","typeLabel":"null"}],"uniqueKey":"config.oneOf.0.sessionIdColumnName","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"config.oneOf.0","typeLabel":"LLM · object"},{"type":"object","title":"Tabular classification","description":"Configuration for the data stream. Depends on your **Openlayer project task type**.","required":["classNames"],"example":{"timestampColumnName":"timestamp"},"properties":{"classNames":{"type":"array","description":"List of class names indexed by label integer in the dataset. E.g. [\"Retained\", \"Exited\"] when 0, 1 are in your label column.","example":["Retained","Exited"],"items":{"type":"string","uniqueKey":"config.oneOf.1.classNames.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"config.oneOf.1.classNames","typeLabel":"string[]"},"categoricalFeatureNames":{"type":"array","description":"Array with the names of all categorical features in the dataset. E.g. [\"Age\", \"Geography\"].","example":["Geography"],"items":{"type":"string","uniqueKey":"config.oneOf.1.categoricalFeatureNames.items.[INDEX]","typeLabel":"string"},"uniqueKey":"config.oneOf.1.categoricalFeatureNames","typeLabel":"string[]"},"featureNames":{"type":"array","description":"Array with all input feature names.","example":["Age","Geography"],"items":{"type":"string","uniqueKey":"config.oneOf.1.featureNames.items.[INDEX]","typeLabel":"string"},"uniqueKey":"config.oneOf.1.featureNames","typeLabel":"string[]"},"inferenceIdColumnName":{"type":"string","description":"Name of the column with the inference ids. This is useful if you want to update rows at a later point in time. If not provided, a unique id is generated by Openlayer.","example":"id","uniqueKey":"config.oneOf.1.inferenceIdColumnName","typeLabel":"string"},"labelColumnName":{"type":"string","description":"Name of the column with the labels. The data in this column must be **zero-indexed integers**, matching the list provided in `classNames`.","example":"label","uniqueKey":"config.oneOf.1.labelColumnName","typeLabel":"string"},"latencyColumnName":{"type":"string","description":"Name of the column with the latencies.","example":"latency","uniqueKey":"config.oneOf.1.latencyColumnName","typeLabel":"string"},"metadata":{"type":"object","description":"Object with metadata.","uniqueKey":"config.oneOf.1.metadata","typeLabel":"object"},"predictionsColumnName":{"type":"string","description":"Name of the column with the model's predictions as **zero-indexed integers**.","example":"prediction","uniqueKey":"config.oneOf.1.predictionsColumnName","typeLabel":"string"},"predictionScoresColumnName":{"type":"string","description":"Name of the column with the model's predictions as **lists of class probabilities**.","example":"prediction_scores","uniqueKey":"config.oneOf.1.predictionScoresColumnName","typeLabel":"string"},"timestampColumnName":{"type":"string","description":"Name of the column with the timestamps. Timestamps must be in UNIX sec format. If not provided, the upload timestamp is used.","example":"timestamp","uniqueKey":"config.oneOf.1.timestampColumnName","typeLabel":"string"}},"isRequired":true,"uniqueKey":"config.oneOf.1","typeLabel":"Tabular classification · object"},{"type":"object","title":"Tabular regression","description":"Configuration for the data stream. Depends on your **Openlayer project task type**.","example":{"timestampColumnName":"timestamp"},"properties":{"categoricalFeatureNames":{"type":"array","description":"Array with the names of all categorical features in the dataset. E.g. [\"Gender\", \"Geography\"].","example":["Gender","Geography"],"items":{"type":"string","uniqueKey":"config.oneOf.2.categoricalFeatureNames.items.[INDEX]","typeLabel":"string"},"uniqueKey":"config.oneOf.2.categoricalFeatureNames","typeLabel":"string[]"},"featureNames":{"type":"array","description":"Array with all input feature names.","items":{"type":"string","uniqueKey":"config.oneOf.2.featureNames.items.[INDEX]","typeLabel":"string"},"uniqueKey":"config.oneOf.2.featureNames","typeLabel":"string[]"},"inferenceIdColumnName":{"type":"string","description":"Name of the column with the inference ids. This is useful if you want to update rows at a later point in time. If not provided, a unique id is generated by Openlayer.","example":"id","uniqueKey":"config.oneOf.2.inferenceIdColumnName","typeLabel":"string"},"latencyColumnName":{"type":"string","description":"Name of the column with the latencies.","example":"latency","uniqueKey":"config.oneOf.2.latencyColumnName","typeLabel":"string"},"metadata":{"type":"object","description":"Object with metadata.","uniqueKey":"config.oneOf.2.metadata","typeLabel":"object"},"predictionsColumnName":{"type":"string","description":"Name of the column with the model's predictions.","example":"prediction","uniqueKey":"config.oneOf.2.predictionsColumnName","typeLabel":"string"},"targetColumnName":{"type":"string","description":"Name of the column with the targets (ground truth values).","example":"target","uniqueKey":"config.oneOf.2.targetColumnName","typeLabel":"string"},"timestampColumnName":{"type":"string","description":"Name of the column with the timestamps. Timestamps must be in UNIX sec format. If not provided, the upload timestamp is used.","example":"timestamp","uniqueKey":"config.oneOf.2.timestampColumnName","typeLabel":"string"}},"isRequired":true,"uniqueKey":"config.oneOf.2","typeLabel":"Tabular regression · object"},{"type":"object","title":"Text classification","description":"Configuration for the data stream. Depends on your **Openlayer project task type**.","required":["classNames"],"example":{"timestampColumnName":"timestamp"},"properties":{"classNames":{"type":"array","description":"List of class names indexed by label integer in the dataset. E.g. [\"Retained\", \"Exited\"] when 0, 1 are in your label column.","example":["Retained","Exited"],"items":{"type":"string","uniqueKey":"config.oneOf.3.classNames.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"config.oneOf.3.classNames","typeLabel":"string[]"},"inferenceIdColumnName":{"type":"string","description":"Name of the column with the inference ids. This is useful if you want to update rows at a later point in time. If not provided, a unique id is generated by Openlayer.","example":"id","uniqueKey":"config.oneOf.3.inferenceIdColumnName","typeLabel":"string"},"labelColumnName":{"type":"string","description":"Name of the column with the labels. The data in this column must be **zero-indexed integers**, matching the list provided in `classNames`.","example":"label","uniqueKey":"config.oneOf.3.labelColumnName","typeLabel":"string"},"latencyColumnName":{"type":"string","description":"Name of the column with the latencies.","example":"latency","uniqueKey":"config.oneOf.3.latencyColumnName","typeLabel":"string"},"metadata":{"type":"object","description":"Object with metadata.","uniqueKey":"config.oneOf.3.metadata","typeLabel":"object"},"predictionsColumnName":{"type":"string","description":"Name of the column with the model's predictions as **zero-indexed integers**.","example":"prediction","uniqueKey":"config.oneOf.3.predictionsColumnName","typeLabel":"string"},"predictionScoresColumnName":{"type":"string","description":"Name of the column with the model's predictions as **lists of class probabilities**.","example":"prediction_scores","uniqueKey":"config.oneOf.3.predictionScoresColumnName","typeLabel":"string"},"textColumnName":{"type":"string","description":"Name of the column with the text data.","example":"user_query","uniqueKey":"config.oneOf.3.textColumnName","typeLabel":"string"},"timestampColumnName":{"type":"string","description":"Name of the column with the timestamps. Timestamps must be in UNIX sec format. If not provided, the upload timestamp is used.","example":"timestamp","uniqueKey":"config.oneOf.3.timestampColumnName","typeLabel":"string"}},"isRequired":true,"uniqueKey":"config.oneOf.3","typeLabel":"Text classification · object"}],"isRequired":true,"uniqueKey":"config","typeLabel":"LLM · object | Tabular classification · object | Tabular regression · object | Text classification · object"}},"required":["rows","config"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"rows":[{"user_query":"what is the meaning of life?","output":"42","tokens":7,"cost":0.02,"timestamp":1620000000}],"config":{"prompt":[{"role":"user","content":"{{ user_query }}"}],"inputVariableNames":["user_query"],"outputColumnName":"output","timestampColumnName":"timestamp","costColumnName":"cost","numOfTokenColumnName":"tokens"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"551c96d1-1473-4280-b91b-ff1f7883a618":{"description":"Status OK.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true}}},"exampleType":"generated"}},"exampleType":"generated"},"33846c5d-ac70-4c40-8a34-6474377fa160":{"description":"Unexpected error.","content":{"application/json":{"schema":{"type":"object","required":["code","error"],"properties":{"code":{"type":"integer","format":"int32","isRequired":true,"uniqueKey":"code","typeLabel":"integer\u003cint32>"},"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":123,"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"b47f0f8e-3253-43bf-bb73-d6de6e875cde":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your workspace API key. See [Find your API key](https://www.openlayer.com/docs/workspace-and-projects/find-your-api-key) for more information.\n","scopes":[]}}},"servers":{"fea2bc8c-1ea3-4343-9e20-4a7a6ebd16f0":{"url":"https://api.openlayer.com/v1","description":"Our prod backend"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your workspace API key. See [Find your API key](https://www.openlayer.com/docs/workspace-and-projects/find-your-api-key) for more information.\n","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your workspace API key. See [Find your API key](https://www.openlayer.com/docs/workspace-and-projects/find-your-api-key) for more information.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"openlayer-docs","siteName":"Openlayer","title":"Publish records - Openlayer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-10-25T19:15:34.550Z","originalFileLocation":"api-reference/rest/monitoring/stream-data.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Publish records to a data source (formerly known as \u0026quot;inference pipeline\u0026quot;).\">\u003cmeta data-mint-head name=\"application-name\" content=\"Openlayer\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Publish records - Openlayer\">\u003cmeta data-mint-head property=\"og:description\" content=\"Publish records to a data source (formerly known as \u0026quot;inference pipeline\u0026quot;).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Openlayer\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://openlayer-docs.mintlify.site/docs/_mintlify/api/og/v2?division=Monitoring\u0026amp;title=Publish+records\u0026amp;description=Publish+records+to+a+data+source+%28formerly+known+as+%22inference+pipeline%22%29.\u0026amp;theme=16aea3c3368ea87f0bcc9384\u0026amp;signature=804c7a8b67095844e8240c948038e62c73126d99710610550ad21f1c6a91aa84\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Publish records - Openlayer\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Publish records to a data source (formerly known as \u0026quot;inference pipeline\u0026quot;).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://openlayer-docs.mintlify.site/docs/_mintlify/api/og/v2?division=Monitoring\u0026amp;title=Publish+records\u0026amp;description=Publish+records+to+a+data+source+%28formerly+known+as+%22inference+pipeline%22%29.\u0026amp;theme=16aea3c3368ea87f0bcc9384\u0026amp;signature=804c7a8b67095844e8240c948038e62c73126d99710610550ad21f1c6a91aa84\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/openlayer-docs/JkuoDa5Uvs4Y0n-U/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Openlayer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#592FEA\">\u003clink data-mint-head rel=\"canonical\" href=\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/rest/monitoring/stream-data.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://openlayer.com/#organization\",\"name\":\"Openlayer\",\"url\":\"https://openlayer.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/openlayer-docs/j8aCq8ZxFTiWgvd7/logo/logo-docs-brand.svg?fit=max\u0026auto=format\u0026n=j8aCq8ZxFTiWgvd7\u0026q=85\u0026s=e33e9c38c5e338a9df337ef2c11c1d12\"}},{\"@type\":\"WebSite\",\"@id\":\"https://openlayer.com/docs#website\",\"name\":\"Openlayer\",\"url\":\"https://openlayer.com/docs\",\"publisher\":{\"@id\":\"https://openlayer.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data#webpage\",\"url\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data\",\"name\":\"Publish records\",\"description\":\"Publish records to a data source (formerly known as \\\"inference pipeline\\\").\",\"dateModified\":\"2025-10-25T19:15:34.550Z\",\"isPartOf\":{\"@id\":\"https://openlayer.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"REST API\",\"item\":\"https://openlayer.com/docs/api-reference/rest/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Monitoring\",\"item\":\"https://openlayer.com/docs/api-reference/rest/monitoring/create-inference-pipeline\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Publish records\",\"item\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data#apireference\",\"headline\":\"Publish records\",\"name\":\"Publish records\",\"description\":\"Publish records to a data source (formerly known as \\\"inference pipeline\\\").\",\"url\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data\",\"mainEntityOfPage\":{\"@id\":\"https://openlayer.com/docs/api-reference/rest/monitoring/stream-data#webpage\"},\"dateModified\":\"2025-10-25T19:15:34.550Z\",\"publisher\":{\"@id\":\"https://openlayer.com/#organization\"},\"isPartOf\":{\"@id\":\"https://openlayer.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Openlayer\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Openlayer\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/api-reference/rest/monitoring/stream-data.md","siteName":"Openlayer","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"Reference","groups":[{"group":"Reference","pages":[{"title":"Introduction","href":"/api-reference/introduction"}]},{"group":"SDKs","pages":[{"title":"Overview","href":"/api-reference/sdk/overview"},{"group":"Openlayer SDKs","pages":[{"title":"Python","href":"/api-reference/sdk/libraries/python"},{"title":"TypeScript","href":"/api-reference/sdk/libraries/typescript"},{"title":"Go","href":"/api-reference/sdk/libraries/go"},{"title":"Ruby","href":"/api-reference/sdk/libraries/ruby"},{"title":"Java","href":"/api-reference/sdk/libraries/java"}]}]},{"group":"CLI","pages":[{"title":"Overview","href":"/api-reference/cli/overview"},{"title":"CLI global options","href":"/api-reference/cli/global-options"},{"group":"Commands","pages":[{"title":"batch","href":"/api-reference/cli/commands/batch"},{"title":"data-sources","href":"/api-reference/cli/commands/data-sources"},{"title":"export","href":"/api-reference/cli/commands/export"},{"title":"help","href":"/api-reference/cli/commands/help"},{"title":"init","href":"/api-reference/cli/commands/init"},{"title":"inspect","href":"/api-reference/cli/commands/inspect"},{"title":"install","href":"/api-reference/cli/commands/install"},{"title":"link","href":"/api-reference/cli/commands/link"},{"title":"login","href":"/api-reference/cli/commands/login"},{"title":"metrics","href":"/api-reference/cli/commands/metrics"},{"title":"profile","href":"/api-reference/cli/commands/profile"},{"title":"projects","href":"/api-reference/cli/commands/projects"},{"title":"push","href":"/api-reference/cli/commands/push"},{"title":"tests","href":"/api-reference/cli/commands/tests"},{"title":"update","href":"/api-reference/cli/commands/update"},{"title":"validate","href":"/api-reference/cli/commands/validate"},{"title":"whoami","href":"/api-reference/cli/commands/whoami"}]}]},{"group":"REST API","pages":[{"title":"Overview","href":"/api-reference/rest/overview"},{"group":"Workspaces","pages":[{"title":"Retrieve workspace","openapi":"get /workspaces/{workspaceId}","href":"/api-reference/rest/workspaces/retrieve-workspace"},{"title":"Update workspace","openapi":"put /workspaces/{workspaceId}","href":"/api-reference/rest/workspaces/update-workspace"}]},{"group":"Invites and API keys","pages":[{"title":"List API keys","openapi":"get /workspaces/{workspaceId}/api-keys","href":"/api-reference/rest/api-keys/list-api-keys"},{"title":"Create API key","openapi":"post /workspaces/{workspaceId}/api-keys","href":"/api-reference/rest/api-keys/create-api-key"},{"title":"Retrieve API key","openapi":"get /workspaces/{workspaceId}/api-keys/{apiKeyId}","href":"/api-reference/rest/api-keys/retrieve-api-key"},{"title":"Update API key","openapi":"put /workspaces/{workspaceId}/api-keys/{apiKeyId}","href":"/api-reference/rest/api-keys/update-api-key"},{"title":"Delete API key","openapi":"delete /workspaces/{workspaceId}/api-keys/{apiKeyId}","href":"/api-reference/rest/api-keys/delete-api-key"},{"title":"Rotate API key","openapi":"post /workspaces/{workspaceId}/api-keys/{apiKeyId}/rotate","href":"/api-reference/rest/api-keys/rotate-api-key"},{"title":"Create invite","openapi":"post /workspaces/{workspaceId}/invites","href":"/api-reference/rest/invites/create-invite"},{"title":"List invites","openapi":"get /workspaces/{workspaceId}/invites","href":"/api-reference/rest/invites/list-invites"}]},{"group":"Projects","pages":[{"openapi":"get /projects","title":"List projects","href":"/api-reference/rest/projects/list-projects"},{"openapi":"post /projects","title":"Create project","href":"/api-reference/rest/projects/create-project"},{"openapi":"delete /projects/{projectId}","title":"Delete project","href":"/api-reference/rest/projects/delete-project"}]},{"group":"Tests","pages":[{"title":"Create test","openapi":"post /projects/{projectId}/tests","href":"/api-reference/rest/tests/create-test"},{"title":"List tests","openapi":"get /projects/{projectId}/tests","href":"/api-reference/rest/tests/list-tests"},{"title":"Update tests","openapi":"put /projects/{projectId}/tests","href":"/api-reference/rest/tests/update-tests"},{"title":"Evaluate test","openapi":"post /tests/{testId}/evaluate","href":"/api-reference/rest/tests/evaluate-test"},{"title":"List the test results for a test","openapi":"get /tests/{testId}/results","href":"/api-reference/rest/tests/list-test-results"}]},{"group":"Development","pages":[{"openapi":"post /storage/presigned-url","title":"Create an upload url","href":"/api-reference/rest/development/presigned-url"},{"openapi":"get /storage/presigned-url","title":"Retrieve a download url","href":"/api-reference/rest/development/retrieve-download-url"},{"openapi":"get /projects/{projectId}/versions","title":"List project commits","href":"/api-reference/rest/development/list-project-versions"},{"openapi":"get /versions/{projectVersionId}","title":"Retrieve project commit","href":"/api-reference/rest/development/retrieve-project-version"},{"openapi":"post /projects/{projectId}/versions","title":"Create project commit","href":"/api-reference/rest/development/create-project-version"},{"openapi":"get /versions/{projectVersionId}/results","title":"List commit test results","href":"/api-reference/rest/development/list-test-results"}]},{"group":"Monitoring","pages":[{"title":"Create data source","openapi":"post /projects/{projectId}/inference-pipelines","href":"/api-reference/rest/monitoring/create-inference-pipeline"},{"title":"List data sources","openapi":"get /projects/{projectId}/inference-pipelines","href":"/api-reference/rest/monitoring/list-inference-pipelines"},{"title":"Retrieve data source","openapi":"get /inference-pipelines/{inferencePipelineId}","href":"/api-reference/rest/monitoring/retrieve-inference-pipeline"},{"title":"Update data source","openapi":"put /inference-pipelines/{inferencePipelineId}","href":"/api-reference/rest/monitoring/update-inference-pipeline"},{"title":"Delete data source","description":"Delete a data source (formerly known as \"inference pipeline\") by its ID.","openapi":"delete /inference-pipelines/{inferencePipelineId}","href":"/api-reference/rest/monitoring/delete-inference-pipeline"},{"title":"Publish records","openapi":"post /inference-pipelines/{inferencePipelineId}/data-stream","href":"/api-reference/rest/monitoring/stream-data"},{"title":"Retrieve record","description":"Retrieve a record by its ID from a data source (formerly known as \"inference pipeline\").","openapi":"get /inference-pipelines/{inferencePipelineId}/rows/{inferenceId}","href":"/api-reference/rest/monitoring/retrieve-inference"},{"title":"Update record","openapi":"put /inference-pipelines/{inferencePipelineId}/rows","href":"/api-reference/rest/monitoring/update-inference"},{"title":"Delete record","openapi":"delete /inference-pipelines/{inferencePipelineId}/rows/{inferenceId}","href":"/api-reference/rest/monitoring/delete-inference"},{"title":"Bulk delete records","openapi":"post /inference-pipelines/{inferencePipelineId}/rows/delete","href":"/api-reference/rest/monitoring/bulk-delete-inferences"},{"title":"List data source test results","openapi":"get /inference-pipelines/{inferencePipelineId}/results","href":"/api-reference/rest/monitoring/list-test-results"},{"title":"List data source users","openapi":"post /inference-pipelines/{inferencePipelineId}/users","href":"/api-reference/rest/monitoring/list-inference-pipeline-users"},{"title":"List data source sessions","openapi":"post /inference-pipelines/{inferencePipelineId}/sessions","href":"/api-reference/rest/monitoring/list-inference-pipeline-sessions"},{"title":"List data source rows","openapi":"post /inference-pipelines/{inferencePipelineId}/rows","href":"/api-reference/rest/monitoring/list-inference-pipeline-rows"}]},{"group":"Governance","pages":[{"openapi":"get /workspaces/{workspaceId}/frameworks","title":"List frameworks","href":"/api-reference/rest/governance/list-frameworks"},{"openapi":"post /workspaces/{workspaceId}/frameworks","title":"Create a framework","href":"/api-reference/rest/governance/create-framework"},{"openapi":"get /frameworks/{frameworkId}","title":"Retrieve a framework","href":"/api-reference/rest/governance/retrieve-framework"},{"openapi":"put /frameworks/{frameworkId}","title":"Update a framework","href":"/api-reference/rest/governance/update-framework"},{"openapi":"post /frameworks/{frameworkId}/export","title":"Export a framework","href":"/api-reference/rest/governance/export-framework"},{"openapi":"get /frameworks/{frameworkId}/rules","title":"List a framework's rules","href":"/api-reference/rest/governance/list-framework-rules"},{"openapi":"get /frameworks/{frameworkId}/projects","title":"List a framework's projects","href":"/api-reference/rest/governance/list-framework-projects"},{"openapi":"get /frameworks/{frameworkId}/project-rule-stats","title":"List a framework's per-project compliance","href":"/api-reference/rest/governance/list-project-rule-stats"},{"openapi":"get /frameworks/{frameworkId}/documents","title":"List a framework's documents","href":"/api-reference/rest/governance/list-framework-documents"},{"openapi":"get /frameworks/{frameworkId}/documents/{documentId}","title":"Retrieve a framework document","href":"/api-reference/rest/governance/retrieve-framework-document"},{"openapi":"get /frameworks/{frameworkId}/sections/{sectionId}/rules","title":"List a section's rules","href":"/api-reference/rest/governance/list-section-rules"},{"openapi":"get /frameworks/{frameworkId}/subsections/{subsectionId}/rules","title":"List a subsection's rules","href":"/api-reference/rest/governance/list-subsection-rules"},{"openapi":"get /workspaces/{workspaceId}/rules","title":"List rules","href":"/api-reference/rest/governance/list-rules"},{"openapi":"post /workspaces/{workspaceId}/rules","title":"Create a rule","href":"/api-reference/rest/governance/create-rule"},{"openapi":"get /rules/{ruleId}","title":"Retrieve a rule","href":"/api-reference/rest/governance/retrieve-rule"},{"openapi":"put /rules/{ruleId}","title":"Update a rule","href":"/api-reference/rest/governance/update-rule"},{"openapi":"delete /rules/{ruleId}","title":"Delete a rule","href":"/api-reference/rest/governance/delete-rule"},{"openapi":"get /workspaces/{workspaceId}/rule-results","title":"List rule results","href":"/api-reference/rest/governance/list-rule-results"},{"openapi":"get /rule-results/{ruleResultId}","title":"Retrieve a rule result","href":"/api-reference/rest/governance/retrieve-rule-result"},{"openapi":"patch /rule-results/{ruleResultId}","title":"Update a rule result","href":"/api-reference/rest/governance/update-rule-result"},{"openapi":"get /rule-results/{ruleResultId}/evidence","title":"List a rule result's evidence","href":"/api-reference/rest/governance/list-rule-result-evidence"},{"openapi":"post /rule-results/{ruleResultId}/evidence","title":"Attach evidence to a rule result","href":"/api-reference/rest/governance/create-rule-result-evidence"},{"openapi":"get /workspaces/{workspaceId}/rule-stats","title":"Retrieve workspace compliance statistics","href":"/api-reference/rest/governance/retrieve-rule-stats"},{"openapi":"get /workspaces/{workspaceId}/rule-tags","title":"List rule tags","href":"/api-reference/rest/governance/list-rule-tags"}]},{"group":"Background tasks","pages":[{"openapi":"get /background-tasks/{taskId}","title":"Retrieve a background task","href":"/api-reference/rest/background-tasks/retrieve-background-task"}]}]}]}]},"basePath":"","title":"Publish records - Openlayer","buildId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","deploymentId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CQGbdtm4.js","utils-D88A1f-Z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChqWdz1A.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-yBrxdh_6.js","snippetPresets-BgqDrFJC.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-Duxc2rZw.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C7jidOil.js","shallow-xkjpHm-U.js","getApiPlaygroundDisplay-fE3rVpvL.js","CodeSnippet-LgxljKed.js","CodeSnippets-D-pXWDHq.js","Page-C2-BijcO.js","getPastedJson-CLRcu-uo.js","icon-Cxirpjgo.js","MethodPill-D49eqY5e.js","DuplicateIcon-CivCz5Rp.js","createIcon-D71qL3f5.js","DynamicMarkdown-BcGRTrw6.js","SectionHeading-DzaqmmSD.js","axios-vUo_bRtp.js","Markdown-CZqUYmMp.js","clsx-B6IZIRsp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-B0ZV6X5T.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-MqLyPtsW.js"]}