generated: '2026-08-13' method: searched source: >- https://docs.moosend.com/api-documentation/articles/KnowledgeBase/54558-API-rate-limiting?lang=en_US — corroborated per-operation by the prose in Moosend's own API Blueprint at https://moosendapp.docs.apiary.io/api-description-document ("The rate limit for this request is 10 requests per 10 seconds (*per API key)" and equivalents). limit_count: 10 name: Moosend API Rate Limits description: >- Moosend enforces per-endpoint rate limits measured per API key to prevent the API from being overwhelmed by too many requests. Limits vary by resource and HTTP method. When a rate limit is exceeded, the API returns HTTP 429 with a RATE-LIMITING error code in the response body. url: https://docs.moosend.com/api-documentation/articles/KnowledgeBase/54558-API-rate-limiting?lang=en_US specificationVersion: '0.1' rateLimits: - name: Campaign Statistics Activity description: Rate limit for retrieving campaign statistics activity reports. endpoint: /campaigns/{id}/stats/activity method: GET limit: 2 period: 60 periodUnit: seconds scope: api-key - name: Add Subscriber description: Rate limit for adding a single subscriber to a mailing list. endpoint: /subscribers/{listId}/subscribe method: POST limit: 10 period: 10 periodUnit: seconds scope: api-key - name: Add Multiple Subscribers description: Rate limit for bulk-adding multiple subscribers to a mailing list. endpoint: /subscribers/{listId}/subscribe/many method: POST limit: 2 period: 10 periodUnit: seconds scope: api-key - name: Unsubscribe Account-Wide description: Rate limit for unsubscribing an email address across all lists. endpoint: /subscribers/unsubscribe method: POST limit: 20 period: 10 periodUnit: seconds scope: api-key - name: Unsubscribe from List description: Rate limit for unsubscribing a subscriber from a specific mailing list. endpoint: /subscribers/{listId}/unsubscribe method: POST limit: 20 period: 10 periodUnit: seconds scope: api-key - name: Unsubscribe from List and Campaign description: >- Rate limit for unsubscribing a subscriber from a specific list and campaign combination. endpoint: /subscribers/{listId}/{campaignId}/unsubscribe method: POST limit: 20 period: 10 periodUnit: seconds scope: api-key - name: Delete Subscriber description: Rate limit for deleting a single subscriber from a mailing list. endpoint: /subscribers/{listId}/remove method: DELETE limit: 40 period: 10 periodUnit: seconds scope: api-key - name: Delete Multiple Subscribers description: Rate limit for bulk-deleting multiple subscribers from a mailing list. endpoint: /subscribers/{listId}/remove/many method: DELETE limit: 8 period: 10 periodUnit: seconds scope: api-key - name: Send Transactional Campaign description: Rate limit for sending transactional email campaigns. endpoint: /campaigns/transactional/send method: POST limit: 6 period: 1 periodUnit: seconds scope: api-key - name: Manage Transactional Campaign description: Rate limit for managing transactional campaign settings. endpoint: /campaigns/transactional method: POST limit: 500 period: null periodUnit: null scope: api-key errorHandling: httpStatus: 200 bodyCode: 429 errorCode: RATE-LIMITING bodyExample: '{"Code": 429, "Error": "RATE-LIMITING", "Context": null}' description: >- When a rate limit threshold is exceeded the response is still HTTP 200; the 429 is carried in the `Code` field of the body envelope alongside `"Error": "RATE-LIMITING"`. A client branching on the HTTP status will treat a throttled call as a success. Corrected 2026-08-13 — an earlier round of this file recorded httpStatus 429, which the provider's documentation does not support. responseHeaders: [] responseHeadersNote: >- Moosend documents no RateLimit-*, X-RateLimit-* or Retry-After response header. There is no runtime signal of remaining budget, so a client must track its own call timestamps and sleep the full published window (1s, 10s or 60s depending on the endpoint) before retrying. retrySafety: >- The API has no idempotency key. GET statistics calls are safe to retry; the subscriber and campaign POSTs are not — re-read state before retrying.