I've read forum about this error and usually it's associated to not properly setting AdGroupCriterion to BiddableAdGroupCriterion
In my case the error seems to be elsewhere and I'm not being able to find it.
<SOAP-ENV:Header>
<ns1:RequestHeader>
<ns1:clientCustomerId>xxx-xxx-xxx</ns1:clientCustomerId>
<ns1:developerToken>REDACTED</ns1:developerToken>
<ns1:userAgent>xxxxxxxxx (AwApi-PHP, googleads-php-lib/32.1.0, PHP/5.6.33)</ns1:userAgent>
<ns1:validateOnly>false</ns1:validateOnly>
<ns1:partialFailure>false</ns1:partialFailure>
</ns1:RequestHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:mutate>
<ns1:operations>
<ns1:operator>ADD</ns1:operator>
<ns1:operand>
<ns1:adGroupId>53774068962</ns1:adGroupId>
<ns1:criterion xsi:type="ns1:Keyword">
<ns1:text>keyword 1</ns1:text>
<ns1:matchType>BROAD</ns1:matchType>
</ns1:criterion>
</ns1:operand>
</ns1:operations>
</ns1:mutate>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
As you can see info about url and cpc are missing (while I set them in the code).
This is a dump of the $operation object before adding it to array $operators[] I pass to mutate ( class type AdGroupCriterionService )
object(Google\AdsApi\AdWords\v201710\cm\AdGroupCriterionOperation)#12 (5) {
["operand":protected]=>
object(Google\AdsApi\AdWords\v201702\cm\BiddableAdGroupCriterion)#47 (25) {
["userStatus":protected]=>
string(7) "ENABLED"
["systemServingStatus":protected]=>
NULL
["approvalStatus":protected]=>
NULL
["disapprovalReasons":protected]=>
NULL
["destinationUrl":protected]=>
string(0) ""
["firstPageCpc":protected]=>
NULL
["topOfPageCpc":protected]=>
NULL
["firstPositionCpc":protected]=>
NULL
["qualityInfo":protected]=>
NULL
["biddingStrategyConfiguration":protected]=>
object(Google\AdsApi\AdWords\v201710\cm\BiddingStrategyConfiguration)#25 (7)
{
["biddingStrategyId":protected]=>
NULL
["biddingStrategyName":protected]=>
NULL
["biddingStrategyType":protected]=>
NULL
["biddingStrategySource":protected]=>
NULL
["biddingScheme":protected]=>
NULL
["bids":protected]=>
array(1) {
[0]=>
object(Google\AdsApi\AdWords\v201710\cm\CpcBid)#13 (4) {
["bid":protected]=>
object(Google\AdsApi\AdWords\v201710\cm\Money)#29 (3) {
["microAmount":protected]=>
int(30000)
["ComparableValueType":protected]=>
NULL
["parameterMap":"Google\AdsApi\AdWords\v201710\cm\ComparableValue":private]=>
array(1) {
["ComparableValue.Type"]=>
string(19) "ComparableValueType"
}
}
["cpcBidSource":protected]=>
NULL
["BidsType":protected]=>
NULL
["parameterMap":"Google\AdsApi\AdWords\v201710\cm\Bids":private]=>
array(1) {
["Bids.Type"]=>
string(8) "BidsType"
}
}
}
["targetRoasOverride":protected]=>
NULL
}
["bidModifier":protected]=>
NULL
["finalUrls":protected]=>
object(Google\AdsApi\AdWords\v201710\cm\UrlList)#24 (1) {
["urls":protected]=>
array(1) {
[0]=>
}
}
["finalMobileUrls":protected]=>
NULL
["finalAppUrls":protected]=>
NULL
["trackingUrlTemplate":protected]=>
NULL
["urlCustomParameters":protected]=>
NULL
["adGroupId":protected]=>
float(53774068962)
["criterionUse":protected]=>
NULL
["criterion":protected]=>
object(Google\AdsApi\AdWords\v201710\cm\Keyword)#59 (6) {
["text":protected]=>
string(9) "keyword 1"
["matchType":protected]=>
string(5) "BROAD"
["id":protected]=>
NULL
["type":protected]=>
NULL
["CriterionType":protected]=>
NULL
["parameterMap":"Google\AdsApi\AdWords\v201710\cm\Criterion":private]=>
array(1) {
["Criterion.Type"]=>
string(13) "CriterionType"
}
}
["labels":protected]=>
NULL
["forwardCompatibilityMap":protected]=>
NULL
["baseCampaignId":protected]=>
NULL
["baseAdGroupId":protected]=>
NULL
["AdGroupCriterionType":protected]=>
NULL
["parameterMap":"Google\AdsApi\AdWords\v201702\cm\AdGroupCriterion":private]
=>
array(1) {
["AdGroupCriterion.Type"]=>
string(20) "AdGroupCriterionType"
}
}
["exemptionRequests":protected]=>
NULL
["operator":protected]=>
string(3) "ADD"
["OperationType":protected]=>
NULL
["parameterMap":"Google\AdsApi\AdWords\v201710\cm\Operation":private]=>
array(1) {
["Operation.Type"]=>
string(13) "OperationType"
}
}