Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon How do I handle API errors when using the Semrush API client in WordPress


How do I handle API errors when using the Semrush API client in WordPress


here's how you can handle API errors when using the Semrush API client in a WordPress plugin:

1. Use try-catch blocks to handle exceptions:

When making API calls, you should wrap the code in a try-catch block to catch any exceptions that may be thrown by the Semrush API client:

php
try {
    $result = $this->client->getDomainRanks('example.com', [
        'database' => \Silktide\SemRushApi\Data\Database::DATABASE_GOOGLE_US,
    ]);
} catch (\Silktide\SemRushApi\Exception\ApiException $e) {
    // Handle API exceptions
    error_log('Semrush API error: ' . $e->getMessage());
} catch (\Exception $e) {
    // Handle other exceptions
    error_log('Error: ' . $e->getMessage());
}

2. Check the error code and message:

The `ApiException` class provides access to the error code and message returned by the Semrush API. You can use this information to provide more detailed error handling and reporting:

php
try {
    $result = $this->client->getDomainRanks('example.com', [
        'database' => \Silktide\SemRushApi\Data\Database::DATABASE_GOOGLE_US,
    ]);
} catch (\Silktide\SemRushApi\Exception\ApiException $e) {
    $errorCode = $e->getCode();
    $errorMessage = $e->getMessage();

    if ($errorCode === 403) {
        // Handle 403 Forbidden error (e.g., invalid API key)
        error_log('Semrush API error (403 Forbidden): ' . $errorMessage);
    } elseif ($errorCode === 429) {
        // Handle 429 Too Many Requests error (e.g., exceeded rate limit)
        error_log('Semrush API error (429 Too Many Requests): ' . $errorMessage);
    } else {
        // Handle other API errors
        error_log('Semrush API error: ' . $errorMessage);
    }
} catch (\Exception $e) {
    // Handle other exceptions
    error_log('Error: ' . $e->getMessage());
}

3. Log errors and provide user feedback:

In the catch blocks, you can log the errors using `error_log()` or a logging library like Monolog. You can also provide user feedback in the WordPress admin area, for example, by displaying a notice or error message.

4. Implement retry logic:

For certain types of errors, such as rate limit exceeded (429 Too Many Requests), you may want to implement retry logic to automatically retry the API call after a certain delay.

By following these steps, you can effectively handle API errors when using the Semrush API client in your WordPress plugin. This will help you provide a better user experience and troubleshoot any issues that may arise during API interactions.

Citations:
[1] https://github.com/silktide/semrush-api
[2] https://www.semrush.com/kb/5-api
[3] https://developer.semrush.com/api/basics/get-started/
[4] https://www.semrush.com/kb/972-api-reports
[5] https://www.semrush.com/website/api.taboola.com/competitors/