---
title: ODP APIs
slug: data-platform/connect-platform/ocpreference-odp-apis
docTags: 
createdAt: 2026-08-05T20:06:33.697Z
---

You can use almost all the Optimizely Data Platform (ODP) APIs from within an app using the [Node SDK](docId\:gxEU_0AA37IEZJK-uoVcT). The key management and authentication occur automatically within an app, so you do not have to provide API keys or any other credentials.

:::hint{type="info"}
**Note**
Omit the `configure` step, as this is done automatically within your app.
:::

## Access ODP APIs using Node SDK

```typescript
import {z} from '@zaiusinc/node-sdk';

/**
 * Send an event to ODP using the v3 event API
 */
z.event(eventPayload);
z.event(eventPayload[]);

/**
 * Create or update a customer profile in ODP using the v3 profiles API
 */
z.customer(customerPayload, options);
z.customer(customerPayload[], options);

/**
 * Create or update an object in ODP using the v3 objects API
 */
z.object(type, objectPayload, options);

/**
 * Manage schema (Optimizely domain objects and fields) using the v3 APIs
 */
z.schema.createField(object, field);
z.schema.createIdentifier(identifier);
z.schema.getEnabledModules();
z.schema.enableModule(moduleName);
z.schema.getObject(name);
z.schema.getAllObjects();
z.schema.createObject(objectDefinition);
z.schema.createRelation(object, relationDefinition);

/**
 * Manage customer identifiers using the v3 APIs
 */
z.identifier.updateMetadata(identifierUpdates);
z.identifier.getMetadata(identifierFieldName, identifierValue);
z.identifier.updateReachability(reachabilityUpdates);
z.identifier.getReachability(identifierFieldName, identifierValue);
z.identifier.updateConsent(consentUpdates);
z.identifier.getConsent(identifierFieldName, identifierValue);

/**
 * Manage list subscriptions using the v3 APIs
 */
z.list.createList(listName);
z.list.getLists(listName);
z.list.subscribe(listId, identifiers);
z.list.unsubscribe(listId, identifiers);
z.list.updateSubscriptions(listId, arrayOfUpdates);

/**
 * Query data using the GraphQL API
 */
z.graphql<ResponseType>(query, variables);
```

## Access ODP APIs using ApiV3

For ODP APIs that the Node SDK does not natively support, you can use the [ApiV3 helper](docId\:OZpxteyA2CB_Lzk9EZ-Jn) to call any ODP API directly.

:::hint{type="info"}
**Note**
Authentication occurs automatically within an app, so you do not have to provide API keys or any other credentials.
:::

For example:

```typescript
import {z} from '@zaiusinc/node-sdk';

await z.v3Api.post('objects/products', [
  {
    product_id: '123',
    name: 'Red Shirt'
  },
  {
    product_id: '456',
    name: 'Blue Shirt'
  }
]);
```

:::hint{type="info"}
**Note**
For more information on ODP APIs, see the [ODP API reference](docId\:AG2AAmfi-lqBG6sOp0eTu).
:::
