Push API Limits

The Push API enforces certain limits on request size, request frequency, and on security identities.

These limits could change at any time without prior notice.

Request Size Limits

You’ll typically get a 413 Request Entity Too Large response if your total Push API request size exceeds:

Assuming you’re using a fairly small number of batch calls to do so, you can safely push:

  • A sporadic burst of batches totalizing no more than 1,000,000 items over a one-hour period.

    Once per month, you push about 1,000,000 items over a one-hour period.

  • A sustained flow of batches totalizing no more than 300,000 items per hour.

    Once per month, over a 24-hour period, you push about 300,000 items per hour.

Always use batch calls when you need to push many items/security identities (see Managing Batches of Items in a Push Source and Managing Batches of Security Identities).

Remember that contractually, you must contact Coveo if you want to arrange performance tests on the Coveo Platform (see Can I Conduct a Performance Test on Coveo?).

When pushing many items over a short period of time, keep in mind that buffering will typically occur.

The index speed of a Coveo Cloud organization varies based on its typical usage. Also, the more items an index contains, the longer it takes to process new items. A typical production index can process up to 300,000 items per hour, while a typical trial index can process no more than 10,000 items per hour.

Consequently, while you technically can push bursts of up to 1,000,000 items over a one-hour period, your index will typically require at least 3 hours to process all this new information. Similarly, while you can push a sustained flow of 300,000 items per hour, there’s no guarantee that your index will be able to keep up with that pace.

Security Identity Limits

The Push API enforces limits on security identity size and relationships.

In a request to add or update one or more security identities:

  • The size of a security identity is defined as the combined sizes of its name value, its type value, and the keys and values in its additionalInfo value, all UTF-8 encoded.

  • The number of relationships of an identity is defined as the number of members, aliases, and granted identities it defines. In the case of an IdentityBody, this is its number of members and wellKnowns. In the case of a MappedIdentityBody, this is its number of mappings and wellKnowns.

The daily count of relationships is the total number of relationships present in requests to add or update one or more security identities. Note that this implies that every time you push an identity, even if it remains the same, the number of relationships it defines contributes to the daily count.

Example: Size and Relationship Counts

Consider the following request body:

[
  {
    "identity": {
      "name": "Group_A",
      "type": "GROUP",
      "additionalInfo": {"key_a": "value_a"}
    },
    "members": [
      {
        "name": "Group_B",
        "type": "GROUP",
        "additionalInfo": {}
      }
    ],
    "wellKnowns": [
      {
        "name": "Company",
        "type": "GROUP",
        "additionalInfo": {}
      }
    ]
  },
  {
    "identity": {
      "name": "Group_B",
      "type": "GROUP",
      "additionalInfo": {}
    },
    "members": [
      {
        "name": "user1@example.com",
        "type": "User",
        "additionalInfo": {}
      },
      {
        "name": "user2@example.com",
        "type": "User",
        "additionalInfo": {}
      }
    ],
    "wellKnowns": []
  }
]

Size Count

The size of the Group_A identity pushed in the above request is the size of the following strings, UTF-8 encoded: Group_A, GROUP, key_a and value_a. In total, that makes 24 characters, and therefore 24 bytes.

The size of the Group_B identity is the size of the following strings, UTF-8 encoded: Group_B, GROUP. In total, that makes 12 characters, and therefore 12 bytes.

Relationship Count

The definition of Group_A in the above request includes 1 member and 1 wellknown. It therefore includes 2 security identity relationships.

The definition of Group_B includes 2 members and no wellknown. It therefore includes 2 security identity relationships.

Therefore, the above request pushes 4 security identity relationships in total.

Size Limit

You can’t push any security identity whose size exceeds 10kB.

Relationship Limits

You can’t push any security identity which defines over 100,000 security identity relationships.

You can’t push more than 6,000,000 security identity relationships per day.

Be sure to respect this limit. It was selected because you shouldn’t be able to reach it in a properly-configured Coveo implementation. However, if you do manage to reach the limit, you won’t be able to push any more relationships until it resets, which may cause permission mismatches on items.

Recommended Articles