How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Optimizely Graph API

Optimizely Graph — the GraphQL content query layer over CMS, Commerce and connected sources, with a REST management surface for content ingestion, types, synonyms and best bets. Two published documents (3.23.1 and 3.24.0). Harvested verbatim 2026-08-13.

Optimizely Graph API is one of 50 APIs that Optimizely publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include GraphQL, Content Management, and Search. The published artifact set on APIs.io includes an OpenAPI specification and API documentation.

This API exposes 40 operations across 19 paths, organized into 10 resource areas, and defines 46 schemas. It is described by OpenAPI 3.0.0, at version 3.24.0.

Requests are made against a single base URL, https://prod.cg.optimizely.com.

40 operations 19 paths 46 schemas 10 DELETE11 GET11 POST8 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.0.0
API Version
3.24.0
Base URL
https://cg.optimizely.com
Authentication
API Key, API Key, HTTP Basic, HTTP Bearer
License
Resource Areas
10

Authentication & Security 4

Optimizely Graph API declares 4 security schemes for authenticating requests. An API key is passed in the query as auth (epi-single). An API key is passed in the header as Authorization (epi-hmac). It accepts HTTP basic authentication (Basic). It accepts HTTP bearer tokens (JWT) (Bearer).

  • epi-single — Single key authentication
  • epi-hmac — HMAC authentication (epi-hmac xxx)
  • Basic — HMAC credentials
  • Bearer — JWT token

Paths & Operations 40

Across 19 paths, the API surfaces 40 operations — 10 DELETE, 11 GET, 11 POST, 8 PUT. They span 10 resource areas: 🏆 BestBets, 📖 Definition ( v2 ), 📖 Definition ( v3 ), Operations, ▶️ Query ( GraphQL ), 🔒 OIDC, 🏆 Pinned Results, 📜 Logs, 📝 Resources, 🪝 Webhooks. Each is listed below with its method, path, parameters, and response codes.

🏆 BestBets 4
GET
/api/bestbets/collectiondeprecated
Get bestbet collection(s)
get-BestBetCollectionHandler 2 params → 200
POST
/api/bestbets/collectiondeprecated
Register a bestbet collection
create-BestBetCollectionHandler body → 200
PUT
/api/bestbets/collection/{id}deprecated
Update a bestbet collection
update-BestBetCollectionHandler 1 param body → 200
DELETE
/api/bestbets/collection/{id}deprecated
Delete a bestbet collection
delete-BestBetCollectionHandler 1 param → 204
📖 Definition ( v2 ) 3
POST
/api/content/v2/data
Sync content data
post-ContentV2DataHandler 1 param body → 200
DELETE
/api/content/v2/data
Purge content data
delete-ContentV2DataHandler 2 params → 204
POST
/api/content/v2/typesdeprecated
Sync content types
post-ContentV2TypeHandler body → 200400
📖 Definition ( v3 ) 6
GET
/api/content/v3/sources
Get source metadata
get-ContentV3SourceHandler 2 params → 200
DELETE
/api/content/v3/sources
Delete source
delete-ContentV3SourceHandler 3 params → 200404
POST
/api/content/v3/sources
Update source metadata
post-ContentV3SourceHandler 2 params body → 204
GET
/api/content/v3/types
Get content types
get-ContentV3TypeHandler 1 param → 200
POST
/api/content/v3/types
Partial content type update
post-ContentV3TypeHandler 1 param body → 204
PUT
/api/content/v3/types
Full content type update
put-ContentV3TypeHandler 1 param body → 204
Operations 1
POST
/api/events/fx
post-FxEventHandler → 200
▶️ Query ( GraphQL ) 2
GET
/content/v2
Execute graphql query
get-GraphQLV2Handler 4 params → 200
POST
/content/v2
Execute graphql query
post-GraphQLV2Handler body → 200
🔒 OIDC 2
PUT
/api/config/oidc
Upsert OIDC config
upsert-OidcConfigHandler body → 204
DELETE
/api/config/oidc
Delete OIDC config
delete-OidcConfigHandler → 204
🏆 Pinned Results 12
GET
/api/pinned/collections
Get pinned collection(s)
list-PinnedCollectionHandler 1 param → 200
POST
/api/pinned/collections
Register a pinned collection
create-PinnedCollectionHandler body → 200
GET
/api/pinned/collections/{collectionId}
Get pinned collection by Id
get-PinnedCollectionHandler 1 param → 200
PUT
/api/pinned/collections/{collectionId}
Update a pinned collection
update-PinnedCollectionHandler 1 param body → 200
DELETE
/api/pinned/collections/{collectionId}
Delete a pinned collection
delete-PinnedCollectionHandler 1 param → 204
GET
/api/pinned/collections/{collectionId}/items
Get list of pinned items by collection id
list-PinnedItemHandler 5 params → 200
POST
/api/pinned/collections/{collectionId}/items
Create a new pinned item
create-PinnedItemHandler 1 param body → 200
DELETE
/api/pinned/collections/{collectionId}/items
Clear pinned items in collection
clear-PinnedItemHandler 1 param → 204
GET
/api/pinned/collections/{collectionId}/items/{id}
Get pinned item by id
get-PinnedItemHandler 2 params → 200
PUT
/api/pinned/collections/{collectionId}/items/{id}
Update a pinned item
update-PinnedItemHandler 2 params body → 200
DELETE
/api/pinned/collections/{collectionId}/items/{id}
Remove pinned item
delete-PinnedItemHandler 2 params → 200
POST
/api/pinned/results
Get pinned results
match-PinnedItemHandler body → 200
📜 Logs 1
GET
/api/logs/request
Get request logs
get-RequestLogHandler 5 params → 200
📝 Resources 5
PUT
/resources/stopwords
Store stop words
upsert-StopwordHandler 2 params body → 204
DELETE
/resources/stopwords
Delete stop words
delete-StopwordHandler 2 params → 204
GET
/resources/synonyms
List synonyms
list-SynonymHandler 3 params → 200
PUT
/resources/synonyms
Store synonyms
upsert-SynonymHandler 3 params body → 204
DELETE
/resources/synonyms
Delete synonyms
delete-SynonymHandler 2 params → 204
🪝 Webhooks 4
GET
/api/webhooks
List webhooks
list-WebhookHandler → 200
POST
/api/webhooks
Add webhook
create-WebhookHandler body → 204
DELETE
/api/webhooks/{id}
Delete webhook
delete-WebhookHandler 1 param → 204
PUT
/api/webhooks/{id}
Update webhook
update-WebhookHandler 1 param body → 204

Schemas 46

The contract defines 46 schemas that model the data the API accepts and returns. The most detailed are RequestLog (13 properties), PinnedItemResult (9 properties), ContentSource_V3 (8 properties), ContentType_V2 (8 properties). Each schema is shown below with its type and property counts.

BestBetCollectionResult
object
2 properties 2 required
BestBetCollectionPayload
object
1 property 1 required
CacheInvalidationConfig
object
1 property
SourceInfo
object
4 properties 4 required
SourceInfoMap
object
Slot
string
DeleteMode
string
SourceMetadata
object
2 properties 2 required
LinkConfig
object
2 properties 2 required
LinkMap
object
Optional_string_
string
Property_V2
object
4 properties 2 required
ContentTypeProperty_V2
ContentType_V2
object
8 properties 3 required
PropertyType_V2
object
2 properties 1 required
ContentSource_V2
object
5 properties
FieldRef
object
2 properties
ContentTypeProperty_V3
object
5 properties 1 required
ContentType_V3
object
7 properties 1 required
ContentTypeMap_V3
object
Property_V3
object
4 properties 1 required
PropertyType_V3
object
3 properties
PropertyTypeMap_V3
object
Preset
string
ContentSource_V3
object
8 properties
Response
object
This Fetch API interface represents the response to a request. [MDN Reference](https://developer.mozilla.org/docs/Web/API/Response)
Record_string.any_
object
Construct a type with a set of properties K of type T
GraphQLResponse
object
2 properties
GraphQLRequest
object
4 properties
TokenClaims
object
2 properties 2 required
PinnedCollectionResult
object
6 properties 5 required
PinnedCollectionPayload
object
3 properties 2 required
Partial_PinnedCollectionPayload_
object
Make all properties in T optional
3 properties
PinnedItemResult
object
9 properties 6 required
PinnedItemPayload
object
5 properties 2 required
PinnedResultMatchParams
object
6 properties 1 required
RequestLog
object
13 properties 2 required
StopwordsBody
string
SynonymsBody
string
Record_string.string_
object
Construct a type with a set of properties K of type T
Request
object
3 properties 1 required
OperationMap
object
2 properties
Partial_Record_string.OperationMap__
object
Make all properties in T optional
FilterMap
WebhookPayload
object
The WebhookPayload type represents the payload of a webhook request, which includes information about the request, filters, and whether the webhook is disabled.
4 properties 1 required
Webhook

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

optimizely-platform-optimizely-swagger-openapi.json Raw ↑

Other APIs Optimizely publishes across the network.

Optimizely Experimentation REST API v2
Optimizely Feature Experimentation Flags API v1
Optimizely Flags Scheduling API
Optimizely Permission Service API
Optimizely Agent API
Optimizely Event API
Optimizely Edge Decider API
Optimizely Data Platform (ODP) API v3
Optimizely Content Marketing Platform (CMP) API v3
Optimizely Campaign REST API
Optimizely Configured Commerce API
Optimizely CMS Content Delivery API v3.0
Where this information came from

This is an independent, third-party profile of Optimizely Graph API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.