{
"apiVersion": "zebflow.com/v1",
"kind": "NodeBundle",
"metadata": {
"name": "openai-embedding",
"version": "1.0.0"
},
"spec": {
"package": "openai-embedding",
"version": "1.0.0",
"title": "OpenAI Embedding",
"description": "Generate text embeddings using any OpenAI-compatible API (/v1/embeddings).",
"icon": "icon.svg",
"credentials": [
{
"kind": "openai",
"title": "OpenAI",
"description": "OpenAI provider credential.",
"fields": [],
"placeholders": {
"API_KEY": "api_key",
"BASE_URL": "base_url",
"MODEL": "model",
"EMBEDDING_PATH": "embedding_path"
},
"config_key": "credential_id"
},
{
"kind": "openrouter",
"title": "OpenRouter",
"description": "OpenRouter provider credential.",
"fields": [],
"placeholders": {
"API_KEY": "api_key",
"BASE_URL": "base_url",
"MODEL": "model",
"EMBEDDING_PATH": "embedding_path"
},
"config_key": "credential_id"
}
],
"hosts": [
"api.openai.com",
"openrouter.ai"
],
"functions": {
"embed": "functions/embed.zf.json"
},
"modules": {},
"nodes": [
{
"kind": "n.ai.embedding",
"title": "AI Embedding",
"description": "Generate text embeddings via OpenAI-compatible /v1/embeddings endpoint.",
"icon": "icons/embedding.svg",
"ui_category": "logic.ai",
"ui_category_label": "AI",
"uses_credentials": [
"openai",
"openrouter"
],
"run": {
"function": "embed"
},
"definition": {
"input_pins": [
"in"
],
"output_pins": [
"out",
"error"
],
"config_schema": {
"type": "object",
"properties": {
"credential_id": {
"type": "string"
},
"model": {
"type": "string"
},
"input_expr": {
"type": "string"
}
}
},
"dsl_flags": [
{
"flag": "--credential",
"config_key": "credential_id",
"kind": "scalar",
"required": true,
"description": "OpenAI or OpenRouter credential."
},
{
"flag": "--model",
"config_key": "model",
"kind": "scalar",
"required": false,
"description": "Embedding model override (e.g. text-embedding-3-small)."
},
{
"flag": "--input-expr",
"config_key": "input_expr",
"kind": "scalar",
"required": false,
"description": "JS expression to extract text from input. Default: input.text || input.input"
}
],
"fields": [
{
"name": "credential_id",
"label": "Credential",
"type": "select",
"data_source": "credentials_open_ai",
"help": "Select an OpenAI or OpenRouter credential."
},
{
"name": "model",
"label": "Model",
"type": "text",
"help": "Embedding model id. Leave empty to use credential default."
},
{
"name": "input_expr",
"label": "Input Expression",
"type": "textarea",
"rows": 3,
"help": "JS expression to extract text to embed from the upstream payload. Examples: input.text, input.description, [input.title, input.body]. Default: input.text || input.input"
}
],
"layout": [
"credential_id",
"model",
"input_expr"
]
}
}
]
}
}