fix: fallback p/ Facebook quando instagram_actor_id é inválido

O fallback que refaz o criativo só com Facebook só pegava o erro de
permissão (1815199). Agora também cobre "instagram_actor_id must be a
valid Instagram account id", evitando que um IG incompatível (ex: conta
do fluxo de login do Instagram) bloqueie a publicação inteira.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Marcio Bevervanso 2026-06-16 12:19:27 -03:00
parent 921eb97483
commit 87fdacfb3d

View file

@ -668,16 +668,24 @@ export async function addAdToAdSet(client: Client, params: AddAdToAdSetParams) {
});
};
// 1815199: "A conta de anúncios não tem acesso a esta conta do Instagram".
const isInstagramPermissionError = (err: unknown) =>
err instanceof Error && /1815199/.test(err.message);
// Erros ligados ao Instagram em que vale refazer o criativo só com o Facebook
// (o anúncio ainda roda no IG pela identidade da página):
// - 1815199: a conta de anúncios não tem acesso a esta conta do Instagram.
// - "instagram_actor_id must be a valid Instagram account id": o ID vinculado
// à página não é um ator de Instagram válido para Ads (ex: conta conectada
// pelo fluxo de "login do Instagram" em vez do Business/Página).
const isInstagramError = (err: unknown) =>
err instanceof Error &&
(/1815199/.test(err.message) ||
/instagram_actor_id/i.test(err.message) ||
/valid instagram account/i.test(err.message));
let creative;
let instagramDropped = false;
try {
creative = await buildCreative(params.instagram_actor_id);
} catch (err) {
if (params.instagram_actor_id && isInstagramPermissionError(err)) {
if (params.instagram_actor_id && isInstagramError(err)) {
creative = await buildCreative(undefined);
instagramDropped = true;
} else {