Batch Process Resume ETL Failed Daily API
The command you send must match the type of ETL failure The batch process can only be resumed when it has stopped in a failed state because of its ETL (extract, transform, load) step, and the command you send must match that failure. A mismatched command returns 400 Bad Request with Cannot resume daily — it is not in correct state for resume.
400 Bad Request with Cannot resume daily — it is not in correct state for resume.The ResumeETLFailedDaily endpoint lets you resume your tenant's batch process after it has stopped due to an ETL failure, without waiting for manual intervention. Depending on the command you send, Optimove either retries the failed ETL action or skips it, so the rest of the batch process can complete.
Unlike TriggerDaily, this endpoint does not start a new run — it continues the existing failed run from the point of failure. The endpoint is protected by API key authentication, role-based authorization, and per-tenant rate limiting.
For triggering a batch process that has not yet run today, see the Batch Process Trigger Daily API guide.
Beta This capability is in Beta and must be enabled for your tenant before you can use it.
Using the ResumeETLFailedDaily Endpoint
Endpoint
POST <BASE_URL>/BatchProcessAPI/ResumeETLFailedDaily
Replace <BASE_URL> with the base URL for your region.
For the regional base URLs (hostnames), see General Information.
Authentication
API key authentication is required. Include your key in the request header:
| Header | Description |
|---|---|
X-API-KEY | Identifies the calling tenant and carries its role and permission claims. |
If the key is missing or invalid, the endpoint returns 401 Unauthorized.
Authorization
Access is controlled by the role attached to the API key. Callers with the 3rdParty role are explicitly blocked.
| Role | Access |
|---|---|
ApiRole (admin) | Allowed |
TransactionalMail | Allowed |
3rdParty | Blocked — returns 401 Unauthorized |
Rate Limiting
A per-tenant rate limit applies to all API-key-authenticated requests:
- Window: 600 seconds (10 minutes).
- Only one request per tenant is allowed within the window.
- Exceeding the limit returns
429 Too Many Requests. Wait for the current 10-minute window to expire before retrying.
Request Body Parameters
Content-Type: application/json
The request body must be minified (compact) JSON, with no spaces. A request that is not minified will fail.
{"CommandName":"ResumeTask"}Here's a breakdown of the request body parameters:
| Parameter | Type | Mandatory/Optional | Description | How it Affects Results |
|---|---|---|---|---|
CommandName | String | Mandatory | The name of the resume command to execute. Supported values: ResumeTask, ResumeSkipETLTask. | Determines how the batch process is resumed — the failed ETL action is either retried or skipped. |
CommandName is the only parameter this endpoint accepts.
Unlike TriggerDaily, this endpoint does not accept WaitTimeForValidationSeconds. The validation wait is fixed at 25 seconds server-side — there is no need to send it, and no way to change it.
Choosing a Command
CommandName | What it does | When to use it |
|---|---|---|
ResumeTask | Resumes the batch process from the failed ETL action and runs that action again. Nothing is skipped. | The failure was caused by a temporary data-availability issue — for example, expected data files were missing or your data source was not ready — and the issue has since been resolved, so the step can now succeed on retry. |
ResumeSkipETLTask | Resumes the batch process and skips the failed ETL action, so the rest of the run continues without it. | The ETL failed with a Data Not Updated error and you accept completing the run without that step. |
Not sure which command applies? Contact your Optimove representative. A command that does not match the failure type is rejected, and the rejected call still consumes your 10-minute rate-limit window.
Response Codes
| Status Code | Description |
|---|---|
200 OK | Batch process was resumed successfully (empty body). |
400 Bad Request | Validation failed. The response body contains a plain-text error message describing the reason. |
401 Unauthorized | Invalid or missing API key, or the caller's role is not permitted. |
403 Forbidden | The endpoint is not enabled for your tenant, or the authentication token has expired. |
429 Too Many Requests | Rate limit exceeded. Wait for the current 10-minute window to expire before retrying. |
500 Internal Server Error | An unexpected error occurred. |
504 Gateway Timeout | The request exceeded the maximum timeout of 30 seconds. |
Validation Rules
Before resuming the batch process, the endpoint checks the following preconditions. When a condition is not met, it returns 400 Bad Request with the corresponding plain-text error message.
| Condition | Error Message |
|---|---|
CommandName is missing or not recognized | Cannot resume daily — CommandName not found |
| Batch task not found for tenant | Cannot resume daily — task not found |
| Task is not in a resumable state — it has not failed, or the failure does not match the command sent | Cannot resume daily — it is not in correct state for resume |
| Task schedule is misconfigured | Cannot resume daily — task configured not correctly |
| Task failed to resume within the 25-second validation wait | Cannot resume daily — validation for Task resuming is failed |
Examples
Example Request
POST <BASE_URL>/BatchProcessAPI/ResumeETLFailedDaily HTTP/1.1
X-API-KEY: <YOUR_API_KEY>
Content-Type: application/json
{"CommandName":"ResumeTask"}Example Response (Success)
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
(empty body)Example Response (Validation Error)
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Cannot resume daily — it is not in correct state for resumeNotes & Best Practices
- Match the command to the failure. Use
ResumeTaskwhen the underlying data issue has been fixed and the ETL step should run again. UseResumeSkipETLTaskwhen the ETL failed with aData Not Updatederror and the run should continue with the ETL action skipped. A command that does not match the failure is rejected. - A rejected command costs you the rate-limit window. Only one request per tenant is accepted per 600-second window, and a
400still counts against it. Confirm the failure type before you call, rather than trying one command and then the other. CommandNameis the only parameter. Do not sendWaitTimeForValidationSeconds— the 25-second validation wait is fixed server-side.- Minify the payload. The request body must contain no spaces:
{"CommandName":"ResumeTask"}. - Empty body on success. On success, the response body is empty (
200 OK). Only validation failures return a plain-text message body. - The call triggers the resume; it does not wait for the run to finish. A
200 OKconfirms the resume started, not that the batch process completed. Monitor the run through your usual Optimove monitoring channels. - Not enabled by default. Contact your Optimove representative to confirm whether this endpoint is enabled for your tenant.
To trigger a batch process that has not yet run today rather than resume a failed one, see the Batch Process Trigger Daily API guide.
Updated about 11 hours ago