# wordpress-seo/28.2/src/ai/generator/infrastructure/wordpress-urls.php

Yoast SEO – Advanced SEO with real-time guidance and built-in AI, version 28.2. 43 lines.

- Page: https://pluginprobe.com/plugins/wordpress-seo/28.2/code/src/ai/generator/infrastructure/wordpress-urls.php
- Raw: https://pluginprobe.com/plugins/wordpress-seo/28.2/raw/src/ai/generator/infrastructure/wordpress-urls.php
- Modified: 2026-03-17T12:01:04+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/wordpress-seo/28.2/code/src/ai/generator/infrastructure/wordpress-urls.php#L10-L20`.

```php
<?php

// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.

namespace Yoast\WP\SEO\AI\Generator\Infrastructure;

use WPSEO_Utils;
use Yoast\WP\SEO\AI\Generator\Domain\URLs_Interface;

/**
 * Class WordPress_URLs
 * Provides URLs for the AI Generator API in a WordPress context.
 */
class WordPress_URLs implements URLs_Interface {

	/**
	 * Gets the license URL.
	 *
	 * @return string The license URL.
	 */
	public function get_license_url(): string {
		return WPSEO_Utils::get_home_url();
	}

	/**
	 * Gets the callback URL to be used by the API to send back the access token, refresh token and code challenge.
	 *
	 * @return string The callbacks URL.
	 */
	public function get_callback_url(): string {
		return \get_rest_url( null, 'yoast/v1/ai_generator/callback' );
	}

	/**
	 * Gets the callback URL to be used by the API to send back the refreshed JWTs once they expire.
	 *
	 * @return string The callbacks URL.
	 */
	public function get_refresh_callback_url(): string {
		return \get_rest_url( null, 'yoast/v1/ai_generator/refresh_callback' );
	}
}

```
