API de Anthropic (Claude)
* Para usar con WPCode (o Code Snippets), como snippet tipo «PHP» con alcance «Run everywhere».
*
* QUÉ HACE:
* Crea un endpoint propio en tu WordPress (postflyer.net/wp-json/metaads/v1/generate)
* que recibe la petición del generador de campañas, le agrega tu API key de Anthropic
* (que nunca se expone al navegador del visitante) y reenvía la respuesta.
*
* ANTES DE ACTIVAR: reemplaza las dos líneas marcadas con TODO más abajo.
*/
add_action(‘rest_api_init’, function () {
register_rest_route(‘metaads/v1’, ‘/generate’, array(
‘methods’ => ‘POST’,
‘callback’ => ‘metaads_proxy_to_claude’,
‘permission_callback’ => ‘__return_true’,
));
});
function metaads_proxy_to_claude(WP_REST_Request $request) {
// TODO 1: cambia esto por una clave secreta inventada por ti (cualquier texto largo y único).
// Debe ser EXACTAMENTE la misma que pongas en la constante SHARED_SECRET del archivo HTML.
$secret_expected = ‘CAMBIA-ESTO-POR-TU-PROPIA-CLAVE-SECRETA-123’;
$secret_received = $request->get_header(‘x-metaads-secret’);
if ($secret_received !== $secret_expected) {
return new WP_REST_Response(array(‘error’ => ‘No autorizado’), 401);
}
// TODO 2: pega aquí tu API key real de Anthropic (empieza con sk-ant-…).
$api_key = ‘TU_API_KEY_DE_ANTHROPIC_AQUI’;
$body = $request->get_body();
$response = wp_remote_post(‘https://api.anthropic.com/v1/messages’, array(
‘headers’ => array(
‘Content-Type’ => ‘application/json’,
‘x-api-key’ => $api_key,
‘anthropic-version’ => ‘2023-06-01’,
),
‘body’ => $body,
‘timeout’ => 90, // las respuestas largas de la campaña completa pueden tardar
));
if (is_wp_error($response)) {
return new WP_REST_Response(array(‘error’ => $response->get_error_message()), 500);
}
$status = wp_remote_retrieve_response_code($response);
$data = wp_remote_retrieve_body($response);
return new WP_REST_Response(json_decode($data, true), $status);
}