Create a Push source in the Coveo Administration Console; note the sourceId and organizationId. Create an API key with the privilege to push items to sources (Sources > Push access level).
For single-item pushes, call PUT https://api.cloud.coveo.com/push/v1/organizations/{orgId}/sources/{sourceId}/documents?documentId={encodedURI} with a JSON body containing the product fields (title, uri, clickableUri, permanentId, and any custom metadata fields).
For bulk catalog imports, use the Stream API: call POST /push/v1/organizations/{orgId}/sources/{sourceId}/stream/open to get a streamId, then PUT multiple batches of documents to the stream endpoint, and finally POST /stream/{streamId}/close to commit the stream and trigger indexing.
Map product fields to Coveo's object model: use the standard title and uri fields, and add custom fields (e.g., ec_price, ec_brand, ec_category) using the Coveo e-commerce field convention so the Merchandising Hub can read them.
Add an indexing pipeline extension (IPE) if transformations are needed at index time — IPEs are Python scripts that can enrich, filter, or reformat document fields before they are stored in the index.
Known gotchas
The Push API and Stream API use different authentication and flow; the Push API is suitable for real-time single-document updates, while the Stream API is designed for full catalog refreshes and replaces all previously pushed documents in the source.
Indexing pipeline extensions require the Edit access level on the Extensions domain — a separate API key from the push credentials may be needed if you use scoped keys.
Coveo charges for indexing operations; use the Stream API for bulk imports to minimise per-document API call overhead and reduce cost compared to single-document Push API calls.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp