Marketo API: Errors, Warnings, & Results

When you call a Marketo API endpoint, it may return a success response code (200) to Python, even if the call wasn’t successful in Marketo. Therefore, using a try/except block alone won’t catch all errors, and you must check for issues within the JSON response.

Success = False: Smart Campaign Not Found

If you use the Get Smart Campaign by ID endpoint with an invalid ID, the response will include success: false and an error code of '702' with the message 'Smart Campaign not found'.

Success = True But With Warning

When calling the Get Landing Page by ID endpoint, you might see success: true but with a warning message such as 'No assets found for the given search criteria'.

Access Token Expired

Your access token expires after 3600 seconds (1 hour). After that, any API call with the expired token will return a '602' error, indicating 'Access token expired'. Use the OAuth token endpoint to refresh your token.

Checking for Results

A successful API call will have success: true, with no errors or warnings, and the result key will contain the JSON data.

Python Script to Handle Errors and Warnings

The following Python script example demonstrates how to handle errors, warnings, and results by checking the success and warnings values and printing or saving the error details when they occur:

def some_marketo_call():
    mat = get_token()
    success = False
    warnings = False
    try:
        mkto_call = requests.get(f'https://{mmc}.mktorest.com/rest/asset/v1/smartCampaign/123456.json?access_token={mat}')
        mkto_json = mkto_call.json()
        print(mkto_json)
        success = mkto_json['success']
        warnings = True if len(mkto_json['warnings']) > 0 else False

        if success and not warnings:
            mkto_response = mkto_json['result']
            print(mkto_response[0]['id'])
        else:
            if not success:
                if mkto_json['errors'][0]['code'] == '602':
                    get_token()
                else:             
                    error_code = mkto_json['errors'][0]['code']
                    error_message = mkto_json['errors'][0]['message']
                    print(f'Error with ID {error_code}: {error_message}')
            else:
                warning = mkto_json['warnings']
                print(f'Warning: {warning}')
    except Exception as e:
        print(e)