Push API vs. Stream API
Push API vs. Stream API
item indexing is a critical part of any Coveo implementation. Choosing the method that fits your needs is essential for workflow efficiency and performance. One way to send items to Coveo for indexing is by using APIs that push content into your sources. There are two APIs that you can use for this purpose: the Push API and the Stream API.
While both APIs are used to ingest content, they’re designed for different types of data and workflows. This article provides a conceptual overview to help you understand their differences and determine which one is best for your use case.
|
|
Quick decision
|
API overviews
Push API
The Push API handles both item ingestion and security management, making it ideal when you need flexibility across content types and permission models.
The Push API supports:
-
Adding and updating items.
-
Managing security identities and permissions on items.
-
Working with file containers for batch operations.
Stream API
The Stream API is designed for e-commerce use cases, allowing efficient full and partial updates of product catalogs, variants, and availability channels.
The Stream API supports:
-
Full catalog updates using update and load operations
-
Partial item updates for specific fields only
-
Shallow merge operations
-
Commerce-optimized workflows
Key differences
This table summarizes the key differences between the Push API and Stream API.
| Feature | Push API | Stream API |
|---|---|---|
Source type |
Push sources |
Catalog sources |
Update types |
|
|
Security identities |
|
Item-level permissions |
When to use the Push API
Use the Push API when:
-
You need to index general content such as web pages or other non-commerce items.
-
Your content requires complex permission models with user and group relationships.
-
You’re working with Push sources across different content types.
-
You need to manage security identities and their relationships.
When to use the Stream API
Use the Stream API when:
-
You’re working with catalog data in Catalog sources.
-
You need to perform partial updates (for example, inventory or pricing) without re-indexing entire items.
-
You’re processing high volumes of product updates.
-
You want to use commerce-specific operations such as shallow merge.
FAQ about the APIs
This section answers common questions about using the Push API and Stream API:
Can both APIs be used in the same organization?
Yes, both APIs can be used within the same organization. Use the Push API for general content sources and the Stream API for Catalog sources.
Each API operates on different source types, so there’s no conflict between using both.
Can I migrate commerce data from a Push source to a Catalog source?
Yes. If you currently index commerce data in a Push source using the Push API, you can migrate to a Catalog source using the Stream API.
This migration is beneficial because Catalog sources offer commerce-specific features such as partial updates, shallow merge operations, and optimized performance for high-volume product catalog updates.
To migrate, you need:
-
Privilege to add and edit Catalog sources in your organization.
-
An API key with the required privileges to send data to the Stream API.
-
A test environment where you can validate catalog updates without affecting production.
Which API is faster?
Performance depends on your use case:
-
For full item updates, both APIs have similar performance when using batch operations.
-
For partial field updates, the Stream API is significantly faster because it updates only specific fields rather than re-indexing entire items.
-
For high-volume commerce updates, the Stream API’s specialized operations provide better throughput.
Can the Stream API be used with non-Catalog sources?
The Stream API works with Catalog sources and other commerce-enabled source types such as Database, REST API, or GraphQL API sources that are configured for catalog data.
To use the Stream API with non-Catalog sources, the source must be commerce-enabled and linked to a Commerce add-on.
What’s next
Learn more about the Push API and Stream API.