Skip to main content

Settings Configuration

This file defines all configurable settings required to integrate the Teads AI Chatbot SDK in different environments (Development, Staging, and Production).


1. Overview

The SDK requires a set of environment-specific keys, widget identifiers, and configuration parameters to connect securely with Teads and Partner APIs.
Settings should be stored in environment variables or secure configuration files — never hardcoded in public codebases.


2. Environment Structure

EnvironmentPurposeNotes
DevelopmentLocal QA testingUses testMode=true and sandbox keys
StagingPre-production validationUses real endpoints with limited traffic
ProductionLive traffic and reportingRequires verified keys and approved placements

3. Core Settings

SettingDescriptionExample
TEADS_BASE_URLBase URL for Teads endpointshttps://mv.outbrain.com
TEADS_BASE_PATHCommon API path/Multivac/api/platforms
TEADS_FORMATResponse formatvjnc
TEADS_CORSCORS flag for browser callstrue
TEADS_IDXDefault slot index0
TEADS_TEST_MODEDevelopment flagtrue
TEADS_TIMEOUT_MSRequest timeout in milliseconds3000

4. API Credentials and Widget IDs

Measurement Flow

SettingDescriptionExample
TEADS_MEASUREMENT_API_KEYAPI key for event signalingabcd1234-measurement
TEADS_MEASUREMENT_WIDGET_IDWidget ID for measurement flowwidget-measure-01

Publisher (Organic) Flow

SettingDescriptionExample
TEADS_CONTENT_API_KEYAPI key for content retrievalabcd1234-content
TEADS_ORGANIC_WIDGET_IDWidget ID for organic placementswidget-organic-01

Marketer (Paid) Flow

SettingDescriptionExample
TEADS_PAID_WIDGET_IDWidget ID for paid placementswidget-paid-01
TEADS_INSTALLATION_KEYUsed for Outbrain JS widget renderinginst-key-123

5. Environment Variable Example

.env (Local Development)

# Teads SDK Configuration
TEADS_BASE_URL=https://mv.outbrain.com
TEADS_BASE_PATH=/Multivac/api/platforms
TEADS_FORMAT=vjnc
TEADS_CORS=true
TEADS_IDX=0
TEADS_TEST_MODE=true
TEADS_TIMEOUT_MS=3000

# API Keys & Widget IDs
TEADS_MEASUREMENT_API_KEY=abcd1234-measurement
TEADS_MEASUREMENT_WIDGET_ID=widget-measure-01
TEADS_CONTENT_API_KEY=abcd1234-content
TEADS_ORGANIC_WIDGET_ID=widget-organic-01
TEADS_PAID_WIDGET_ID=widget-paid-01
TEADS_INSTALLATION_KEY=inst-key-123

.env.production

# Production (real traffic)
TEADS_BASE_URL=https://mv.outbrain.com
TEADS_BASE_PATH=/Multivac/api/platforms
TEADS_FORMAT=vjnc
TEADS_CORS=true
TEADS_IDX=0
TEADS_TEST_MODE=false
TEADS_TIMEOUT_MS=3000

# Securely provisioned keys
TEADS_MEASUREMENT_API_KEY=${PROD_MEASUREMENT_KEY}
TEADS_MEASUREMENT_WIDGET_ID=${PROD_MEASUREMENT_WIDGET_ID}
TEADS_CONTENT_API_KEY=${PROD_CONTENT_KEY}
TEADS_ORGANIC_WIDGET_ID=${PROD_ORGANIC_WIDGET_ID}
TEADS_PAID_WIDGET_ID=${PROD_PAID_WIDGET_ID}
TEADS_INSTALLATION_KEY=${PROD_INSTALLATION_KEY}

⚠️ Security Note: Never commit .env files to version control. Use CI/CD secrets or environment managers (e.g., AWS Secrets Manager, Google Secret Manager, Vercel Environment Variables).


6. JavaScript Configuration Example

export const teadsConfig = {
baseUrl: process.env.TEADS_BASE_URL,
basePath: process.env.TEADS_BASE_PATH,
format: process.env.TEADS_FORMAT || "vjnc",
cors: process.env.TEADS_CORS === "true",
idx: Number(process.env.TEADS_IDX || 0),
testMode: process.env.TEADS_TEST_MODE === "true",
timeout: Number(process.env.TEADS_TIMEOUT_MS || 3000),
keys: {
measurement: process.env.TEADS_MEASUREMENT_API_KEY,
content: process.env.TEADS_CONTENT_API_KEY
},
widgets: {
measurement: process.env.TEADS_MEASUREMENT_WIDGET_ID,
organic: process.env.TEADS_ORGANIC_WIDGET_ID,
paid: process.env.TEADS_PAID_WIDGET_ID
},
installationKey: process.env.TEADS_INSTALLATION_KEY
};

For secure integrations, proxy all Teads API requests through your server:

https://yourdomain.com/api/teads-proxy?flow=measurement&event=unit_load

Example Express.js Middleware

app.get("/api/teads-proxy", async (req, res) => {
const { flow, ...params } = req.query;
const url = new URL(`${process.env.TEADS_BASE_URL}${process.env.TEADS_BASE_PATH}`);
Object.entries(params).forEach(([key, val]) => url.searchParams.append(key, val));

try {
const response = await fetch(url.toString(), { method: "GET" });
const data = await response.json();
res.json(data);
} catch (err) {
res.status(500).json({ error: "Proxy request failed", details: err.message });
}
});

ParameterDefault ValueRationale
formatvjncEnsures structured JSON responses
corstrueRequired for browser/chatbot environments
idx0Single-slot standard
testModetrue in Dev, false in ProdPrevents test traffic pollution
timeout3000 msBalances latency and reliability

9. Versioning

When deploying SDK updates, version configuration should align with release tags.

SDK VersionCompatible Config SchemaNotes
v1.0.0config-v1Initial release
v1.1.0config-v1Added timeout and testMode options
v2.0.0config-v2Upcoming with AI adaptive content control

10. Troubleshooting

IssueCauseFix
API 403Invalid or missing keyCheck environment variables
Empty contentWrong widget ID or flow typeVerify widget IDs and flow params
TestMode ignoredEnv var not booleanEnsure TEADS_TEST_MODE=true
TimeoutNetwork delay or large payloadIncrease TEADS_TIMEOUT_MS

© 2025 Teads AI Platform. All rights reserved.