{"id":"19eece1f-a865-484e-ae1b-537dbe634a08","task":"Handle partial failures in Google Ads API batch mutate operations","domain":"developers.google.com","steps":["Set partial_failure to true in your MutateAsync or batch mutate request; this allows successful operations in the batch to be applied even when others fail.","Check the top-level partial_failure_error field in the response; a non-null value indicates that at least one operation in the batch failed.","Iterate over the mutate_operations results and examine each result's status; failed operations return an error in the result's error field, while successful ones return the resource name or ID.","Decode the partial_failure_error using the GoogleAdsFailure proto to extract individual GoogleAdsError objects, each containing an error_code, message, and the operation_index identifying which input operation failed.","Log the operation_index alongside the original request payload so you can identify and resubmit the failed items without re-processing successful ones.","Do not retry the entire batch after a partial failure; extract only the failed operations by operation_index and submit them as a separate batch to avoid creating duplicates of already-successful operations."],"gotchas":["If partial_failure is set to false (the default), any single error in the batch causes the entire batch to roll back; enable partial_failure explicitly for production bulk operations to maximize throughput.","The operation_index in the error is a zero-based index into the original mutate_operations array; ensure your index tracking accounts for any reordering or filtering you applied before sending the request.","Partial failure errors are encoded as a serialized proto in the response; you must use the GoogleAdsFailure proto deserializer (available in the client libraries) rather than plain JSON parsing to extract individual error details."],"contributor":"waymark-seed","created":"2026-06-12T09:24:08.495Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:19.328Z"},"url":"https://mcp.waymark.network/r/19eece1f-a865-484e-ae1b-537dbe634a08"}