AdWords API Re: UNEXPECTED_INTERNAL_API_ERROR Trying to Add one or more Criterion
Hi Eric, Thanks for the response. Is there anyway I can check for this before I make the request (like using the validate only flag in the request header)? If not do you know or have an ETA on a solution for the engineering team? Also what are you defining as handled automatically of the error? Thanks, Kyle LeNeau On Feb 4, 9:24 am, AdWords API Advisor adwordsapiadvi...@google.com wrote: Hi Kyle, It looks like this error was caused because the keyword you were trying to add was already present in the ad group. This type of error is normally handled automatically, and I'll work with the core engineering team to resolve this issue. Best, - Eric Koleda, AdWords API Team On Feb 3, 10:54 am, Kyle LeNeau k.len...@gmail.com wrote: Hello, I am getting a very generic error when I try to add new criterion. I am trying to add multiple operations at one time except I am getting an UNEXPECTED_INTERNAL_API_ERROR returned. I have tried reducing the number of operations per call all they way down to one and am consistently getting this error. Here are my request and responses that I have traced. Request --- POST /api/adwords/cm/v200909/AdGroupCriterionService User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.4927) VsDebuggerCausalityData: uIDPo43de8ScpjJArhaHqjPGyb0A3gH8qt6H9kCDw0hbeo1ILfa6k1gts0FBs8B9zzFv/ TcACQAA Content-Type: text/xml; charset=utf-8 SOAPAction: Host: adwords.google.com Content-Length: 1217 Expect: 100-continue Connection: Keep-Alive ?xml version=1.0 encoding=utf-8? soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:xsd=http://www.w3.org/2001/XMLSchema; soap:Header RequestHeader xmlns=https://adwords.google.com/api/adwords/ cm/v200909 authToken/authToken clientCustomerId493-624-2678/clientCustomerId developerTokeniRFg/developerToken userAgentAWAPI DotNetLib 6.2 - WhereToLive.com/ userAgent /RequestHeader /soap:Header soap:Body mutate xmlns=https://adwords.google.com/api/adwords/cm/ v200909 operations operatorADD/operator operand xsi:type=BiddableAdGroupCriterion adGroupId1044065073/adGroupId criterion xsi:type=Keyword text5 Private Drive 1617/text matchTypePHRASE/matchType /criterion userStatusACTIVE/userStatus destinationUrlhttp://www.coldwellbankerlegacy.com/100174?utm_source=gawutm_medium=ppc.../destinationUrl /operand /operations /mutate /soap:Body /soap:Envelope Response Transfer-Encoding: chunked X-Content-Type-Options: nosniff X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Cache-Control: private, max-age=0 Content-Type: text/xml; charset=UTF-8 Date: Wed, 03 Feb 2010 15:50:45 GMT Expires: Wed, 03 Feb 2010 15:50:45 GMT Server: GFE/2.0 soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; soap:Body soap:Fault faultcodesoap:Server/faultcode faultstringInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ / faultstring detail ApiExceptionFault xmlns=https://adwords.google.com/ api/adwords/cm/v200909 messageInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /message ApplicationException.TypeApiException/ ApplicationException.Type errors xmlns:xsi=http://www.w3.org/2001/ XMLSchema-instance xsi:type=InternalApiError fieldPath/fieldPath trigger/trigger ApiError.TypeInternalApiError/ ApiError.Type reasonUNEXPECTED_INTERNAL_API_ERROR/reason /errors /ApiExceptionFault /detail /soap:Fault /soap:Body /soap:Envelope -- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-...@googlegroups.com. To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en.
AdWords API UNEXPECTED_INTERNAL_API_ERROR Trying to Add one or more Criterion
Hello, I am getting a very generic error when I try to add new criterion. I am trying to add multiple operations at one time except I am getting an UNEXPECTED_INTERNAL_API_ERROR returned. I have tried reducing the number of operations per call all they way down to one and am consistently getting this error. Here are my request and responses that I have traced. Request --- POST /api/adwords/cm/v200909/AdGroupCriterionService User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.4927) VsDebuggerCausalityData: uIDPo43de8ScpjJArhaHqjPGyb0A3gH8qt6H9kCDw0hbeo1ILfa6k1gts0FBs8B9zzFv/ TcACQAA Content-Type: text/xml; charset=utf-8 SOAPAction: Host: adwords.google.com Content-Length: 1217 Expect: 100-continue Connection: Keep-Alive ?xml version=1.0 encoding=utf-8? soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:xsd=http://www.w3.org/2001/XMLSchema; soap:Header RequestHeader xmlns=https://adwords.google.com/api/adwords/ cm/v200909 authToken/authToken clientCustomerId493-624-2678/clientCustomerId developerTokeniRFg/developerToken userAgentAWAPI DotNetLib 6.2 - WhereToLive.com/ userAgent /RequestHeader /soap:Header soap:Body mutate xmlns=https://adwords.google.com/api/adwords/cm/ v200909 operations operatorADD/operator operand xsi:type=BiddableAdGroupCriterion adGroupId1044065073/adGroupId criterion xsi:type=Keyword text5 Private Drive 1617/text matchTypePHRASE/matchType /criterion userStatusACTIVE/userStatus destinationUrlhttp:// www.coldwellbankerlegacy.com/100174?utm_source=gawamp;utm_medium=ppcamp;utm_campaign=addresses/destinationUrl /operand /operations /mutate /soap:Body /soap:Envelope Response Transfer-Encoding: chunked X-Content-Type-Options: nosniff X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Cache-Control: private, max-age=0 Content-Type: text/xml; charset=UTF-8 Date: Wed, 03 Feb 2010 15:50:45 GMT Expires: Wed, 03 Feb 2010 15:50:45 GMT Server: GFE/2.0 soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; soap:Body soap:Fault faultcodesoap:Server/faultcode faultstringInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ / faultstring detail ApiExceptionFault xmlns=https://adwords.google.com/ api/adwords/cm/v200909 messageInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /message ApplicationException.TypeApiException/ ApplicationException.Type errors xmlns:xsi=http://www.w3.org/2001/ XMLSchema-instance xsi:type=InternalApiError fieldPath/fieldPath trigger/trigger ApiError.TypeInternalApiError/ ApiError.Type reasonUNEXPECTED_INTERNAL_API_ERROR/reason /errors /ApiExceptionFault /detail /soap:Fault /soap:Body /soap:Envelope -- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-...@googlegroups.com. To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en.
AdWords API UNEXPECTED_INTERNAL_API_ERROR Trying to Add one or more Criterion
Hello, I am getting a very generic error when I try to add new criterion. I am trying to add multiple operations at one time except I am getting an UNEXPECTED_INTERNAL_API_ERROR returned. I have tried reducing the number of operations per call all they way down to one and am consistently getting this error. Here are my request and responses that I have traced. Request --- POST /api/adwords/cm/v200909/AdGroupCriterionService User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.4927) VsDebuggerCausalityData: uIDPo43de8ScpjJArhaHqjPGyb0A3gH8qt6H9kCDw0hbeo1ILfa6k1gts0FBs8B9zzFv/ TcACQAA Content-Type: text/xml; charset=utf-8 SOAPAction: Host: adwords.google.com Content-Length: 1217 Expect: 100-continue Connection: Keep-Alive ?xml version=1.0 encoding=utf-8? soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:xsd=http://www.w3.org/2001/XMLSchema; soap:Header RequestHeader xmlns=https://adwords.google.com/api/adwords/ cm/v200909 authToken/authToken clientCustomerId493-624-2678/clientCustomerId developerTokeniRFg/developerToken userAgentAWAPI DotNetLib 6.2 - WhereToLive.com/ userAgent /RequestHeader /soap:Header soap:Body mutate xmlns=https://adwords.google.com/api/adwords/cm/ v200909 operations operatorADD/operator operand xsi:type=BiddableAdGroupCriterion adGroupId1044065073/adGroupId criterion xsi:type=Keyword text5 Private Drive 1617/text matchTypePHRASE/matchType /criterion userStatusACTIVE/userStatus destinationUrlhttp:// www.coldwellbankerlegacy.com/100174?utm_source=gawamp;utm_medium=ppcamp;utm_campaign=addresses/destinationUrl /operand /operations /mutate /soap:Body /soap:Envelope Response Transfer-Encoding: chunked X-Content-Type-Options: nosniff X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Cache-Control: private, max-age=0 Content-Type: text/xml; charset=UTF-8 Date: Wed, 03 Feb 2010 15:50:45 GMT Expires: Wed, 03 Feb 2010 15:50:45 GMT Server: GFE/2.0 soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/; soap:Body soap:Fault faultcodesoap:Server/faultcode faultstringInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ / faultstring detail ApiExceptionFault xmlns=https://adwords.google.com/ api/adwords/cm/v200909 messageInternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ /message ApplicationException.TypeApiException/ ApplicationException.Type errors xmlns:xsi=http://www.w3.org/2001/ XMLSchema-instance xsi:type=InternalApiError fieldPath/fieldPath trigger/trigger ApiError.TypeInternalApiError/ ApiError.Type reasonUNEXPECTED_INTERNAL_API_ERROR/reason /errors /ApiExceptionFault /detail /soap:Fault /soap:Body /soap:Envelope -- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-...@googlegroups.com. To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en.
AdWords API Re: Order of Returned Operations Through Criterion Service
Hi Eric, What happens if one of the keywords fails to be added does the whole mutate request fail like batch transactions or will one fail at a time and return something else in the index place? Thanks, Kyle On Feb 2, 9:28 am, AdWords API Advisor adwordsapiadvi...@google.com wrote: Hi Kyle, Order is maintained between operations and results, so you can use a form of logic like you outlined. Best, - Eric Koleda, AdWords API Team On Feb 1, 6:38 pm, Kyle LeNeau k.len...@gmail.com wrote: Hello, I am developing a process to bulk add/purchase keywords. I need to maintain what is added and what I need to add or save to my database. Will the operations that I send in the mutate request be returned to me in the same order as I sent them (based on index)? Here is my code and expectation. m_adGroupCriterionService.mutate(new AdGroupCriterionOperation[] { operation1, operation2 }); if (result != null result.value != null result.value.Length 0) { // expecting: // result.value[0] = operation1 // result.value[1] = operation2 } Thanks, Kyle LeNeau -- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-...@googlegroups.com. To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en.
AdWords API Re: BulkMutateJob and extra identifiers
Hi Eric, I appreciate the detailed response. However I am still unclear on why performance is incredibly slow. I still (last 2 days) trying up update 7,000 keywords and I am getting a TON of concurrent modification errors. Response to topic #1: I am only sending the destination url to be updated with this code and it is still running SUPER slow to the point of unusable, what gives: Criterion criterion = new Criterion(); criterion.id = criterionId; criterion.idSpecified = true; BiddableAdGroupCriterion biddableAdGroupCriterion = new BiddableAdGroupCriterion(); biddableAdGroupCriterion.adGroupId = adGroupId; biddableAdGroupCriterion.adGroupIdSpecified = true; biddableAdGroupCriterion.destinationUrl = destinationUrl; biddableAdGroupCriterion.criterion = criterion; AdGroupCriterionOperation operation = GetAdGroupCriterionOperation (Operator.SET, biddableAdGroupCriterion); m_adGroupCriterionService.mutate(new AdGroupCriterionOperation[] { operation }); Response to topic #2: I am not re-updating the same keyword after failure, I moving on the next one. Response to topic #3: To clarify is there a way to send additional parameters what will just be sent back to with the criterion so that I can parse it and match it to my DB, sort of like a known request ID that is unique across all criterion. I also think of this as like and extra public property on the criterion of type string that I can put something into (like a JSON structure). Then I can de-serialize it on the return. I can seem this being a well used feature in the API. This way I can create a bulk update job, send it to the API and then check on it every X minutes (asynchronously). This will reduce the traffic to outside the building and reduce the SSL handshakes down significantly. It is assumed that your API has written good logic to process bulk jobs efficiently in house faster and with higher priority. Thanks Eric, I hope to hear from you again or someone else on your team. Thanks, Kyle On Jan 27, 10:13 am, AdWords API Advisor adwordsapiadvi...@google.com wrote: Hi Kyle, Thank you for the detailed description of your goals and the problems you have encountered. Some points I'd like to mention: - A simple way to improve the performance of keyword updates is to only send the information you wish to change. So for instance if you only want to change the bid on a keyword only send the adGroupId, criteriaId, and bids fields. Sending other fields that you aren't changing can often lead to increased request time since those other fields must also be processed and can sometimes trigger other workflows. - CONCURRENT_MODIFICATION errors can happen when you attempt to update the same keyword in quick succession. After you update a keyword it may need to be re-approved, and the back end approval workflow can sometimes try to modify a keyword at the same time you do. For this reason it is best to leave a few seconds before attempting to to make another update to the same keyword. - It is possible to retrieve the resulting IDs with the BulkMutateJobService, by setting the resultPartIndex on the BulkMutateJobSelector. We have an example of this included with our client libraries: http://code.google.com/p/google-api-adwords-java/source/browse/trunk/... In general though the BMJS makes no guarantees that it will process results any faster than the synchronous services, as that is not the main goal of the service. Under certain circumstances you may see some improvement, but the service is best used for changes that aren't as time-sensitive. Best, - Eric Koleda, AdWords API Team On Jan 26, 2:51 pm, Kyle LeNeau k.len...@gmail.com wrote: I have a process that maintains an Adwords campaign on behalf of a customer. The process will either purchase new keywords, or update keywords (destination URL only) nightly. The source of truth for what keywords to maintain is in a database on our end and a user/customer was the ability to insert new records into the table, thus triggering a purchase of a new keyword. When a new keyword is purchased the record that exists in my database is updated with the criterion id, adgroup id, campaign id, url, keywords and more. I then use the URL later to determine if the keyword should be updated. In the previous version of the API (v13) I was able to just update the keyword quickly and catch/handle any errors. This happened very quickly; our small customer of 7000 keywords would run and usually update 80% of the keywords in a little over an hour. With the new API (v200909) it is extremely slow, the same 7000 keywords and 80% update is approaching the 6 hour mark and has only updated 1/3 of the total. This is a C# program and I am using the client library off of google code. I have been debuging it all day and am getting a lot of Database.CONCURRENT_MODIFICATION errors and am only running on one thread. While debugging I have
AdWords API What are the effects of deleting all adgroups and criterion from a campaign?
Hello, As the subject states my question is simple: what are or would be the effect of deleting all adgroups and their criterion from a campaign? For example, will I loose bids on established keywords, statistics traffic, reporting, etc. Please be specific if you know the answer. My reason for wanting to do such a thing stems from my other topic/ discussion here : http://groups.google.com/group/adwords-api/browse_thread/thread/e77c38382813f7/72e42ee9adc70dd7#72e42ee9adc70dd7 The API is slow to update a LOT of keywords in a synchronous manner so I am thinking of manually using the ad words tool for the desktop to truncate a campaign, re-create ad groups dynamically, create a text file of keywords to load into the ad words tool. Then to keep my system in sync I will run a structure report to pull the keywords in the campaign, parse the XML file and insert a record of the keyword (and what entity it belongs to in my system) into our DB. Then in the future I can perform the updates, removals and add's in bulk. This is all in the hope of decreasing the execution time for some of our much larger customers we work on behalf of where the keyword count is in the tens of thousands and one being over one hundred thousand keywords (yes we hit a limit, and yes we had to call to get it raised). I hope someone can help answer my main question above and the the API team can look into why there is such consistently slow performance. Thanks, Kyle LeNeau -- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-...@googlegroups.com. To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en.
AdWords API BulkMutateJob and extra identifiers
I have a process that maintains an Adwords campaign on behalf of a customer. The process will either purchase new keywords, or update keywords (destination URL only) nightly. The source of truth for what keywords to maintain is in a database on our end and a user/customer was the ability to insert new records into the table, thus triggering a purchase of a new keyword. When a new keyword is purchased the record that exists in my database is updated with the criterion id, adgroup id, campaign id, url, keywords and more. I then use the URL later to determine if the keyword should be updated. In the previous version of the API (v13) I was able to just update the keyword quickly and catch/handle any errors. This happened very quickly; our small customer of 7000 keywords would run and usually update 80% of the keywords in a little over an hour. With the new API (v200909) it is extremely slow, the same 7000 keywords and 80% update is approaching the 6 hour mark and has only updated 1/3 of the total. This is a C# program and I am using the client library off of google code. I have been debuging it all day and am getting a lot of Database.CONCURRENT_MODIFICATION errors and am only running on one thread. While debugging I have noticed that the call to update/mutate a criterion is sometimes taking 30+ seconds to return, this was not the case in the last version. Which brings me to my main question about the Bulk Mutate Job. Is there a way to pass along extra identifiers to the job/operation so that when it returns and the job is complete I can loop over the results and grab my database ID's (primary key) from the criterion to update my system accordingly? If not, what are some alternatives to keeping two systems connected like this? If this is not currently supported can it be a feature request, sometime we want or need to pass along our identifiers so we know what to do with it when it returns. Thanks for the help, Kyle. -- You received this message because you are subscribed to the Google Groups AdWords API Forum group. To post to this group, send email to adwords-...@googlegroups.com. To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en.