caOS Documentação TikTok Ads PT EN
Voltar ao guia

TikTok Ads

Você autoriza na própria plataforma do TikTok e o caOS cadastra os anunciantes que a autorização devolver. Não há nada para digitar, e também não há onde digitar um anunciante à mão.

Versão em uso Business API v1.3 Conferido em 11/09/2026 Cadência v1.3 estável desde 2022, sem sucessora anunciada Referência oficial

Começar

Conectarautorização na plataforma

Em Fontes · Conectar nova fonte · TikTok Ads, o cartão abre a tela de autorização do TikTok. O link vale 10 minutos e serve uma vez.

A janela só fecha depois que o caOS já cadastrou os anunciantes, então não há etapa em segundo plano. Em seguida marque os que entram no workspace e aplique uma tag. Nome e moeda vêm da própria API.

Quem clica precisa já ter acesso ao anunciante no Business Center. O caOS cadastra exatamente o que vier na resposta. Se a conta não veio, o conserto é do lado do TikTok, não na tela do caOS.

Sua credencial, e o que acontece com ela

Conectou uma vez, está conectado. A credencial se renova sozinha, indefinidamente. Você não precisa marcar data no calendário nem reconectar de tempos em tempos.

Só existe um jeito de a conexão cair: alguém revogar o acesso do lado da plataforma (senha trocada, pessoa removida da conta, autorização cancelada). Aí a conta aparece em Conexões perdidas e reconectar resolve, com as tags que ela já tinha.

A credencial fica cifrada de ponta a ponta. Ela é cifrada antes de ser gravada, e a chave não vive no banco: nem quem tem acesso ao banco lê o valor. Ninguém no caOS, nem você, vê a credencial de volta depois de salva; a tela mostra apenas que ela existe e está válida.

Só é lida a métrica que você pediu. O caOS não escreve na sua conta de anúncio para extrair dados, e não guarda dado pessoal de quem viu o anúncio. O tratamento segue a LGPD, e a exclusão é sua: revogar a conexão apaga a credencial guardada.

Referência

Métricas e dimensõeso que cada campo quer dizer

O TikTok separa as métricas em tabelas por assunto: a básica traz investimento e entrega, e vídeo e engajamento ficam em tabelas próprias, ligadas pelo anúncio e pelo dia.

Métricas principais11
Campo na APIO que éOnde aparece
spendQuanto foi investido, na moeda da conta.Investimento no Pacer.
impressionsQuantas vezes o anúncio foi exibido.Impressões.
clicksCliques que levam ao destino.Cliques.
reachPessoas diferentes que viram o anúncio.Alcance. Não some entre dias nem entre anúncios.
frequencyImpressões por pessoa.Frequência. O Pacer recalcula como impressões ÷ alcance do período.
conversionConversões atribuídas.Existe também real_time_conversion, que é a versão que ainda vai mudar.
cost_per_conversionCusto por conversão.Recalcule a partir das somas se for agregar períodos.
video_play_actionsReproduções iniciadas: o vídeo começou a tocar.Fica na tabela de vídeo. É o número maior.
video_watched_2sAssistiu 2 segundos. Existe também 6 segundos.Tabela de vídeo.
video_views_p100Assistiu até o fim. Há também 25, 50 e 75.Tabela de vídeo.
likesCurtidas. Junto vêm comentários, compartilhamentos e seguidores.Tabela de engajamento, separada da básica.
Dimensões3
Campo na APIO que éOnde aparece
stat_time_dayO dia da linha.Toda tabela de métrica vem por dia.
ad_idO anúncio.É a chave que liga a tabela básica, a de vídeo e a de engajamento.
advertiser_idO anunciante.Fica nas tabelas de cadastro, não nas de métrica por anúncio.

Parâmetros do relatório

Os campos acima dizem o que volta. Estes parâmetros dizem como: eles decidem o grão da linha, o período que ela cobre e o que conta como conversão. Dois relatórios da mesma conta com números diferentes quase sempre diferem aqui.

ParâmetroO que mudaValores
report_typeQue família de métrica volta.BASIC traz desempenho; AUDIENCE traz idade, gênero e região. São chamadas separadas.
data_levelO grão de cada linha.AUCTION_AD e AUCTION_CAMPAIGN. O caOS extrai os dois, e é por isso que existe a família por anúncio e a por campanha.
service_typeLeilão ou reserva.AUCTION. Mídia comprada por reserva não vem por aqui.
dimensionsO recorte de cada linha.ad_id ou campaign_id, mais stat_time_day. Sem a dimensão de dia, a API devolve o acumulado.

Tudo que dá para puxar

As tabelas acima são as que a maior parte dos relatórios usa, mas você não está preso a elas. O catálogo inteiro do TikTok tem 20 tabelas e 841 campos, e ao montar a fonte você escolhe o que entra. O que aparece marcado como puxada por padrão é o que a fonte de exemplo usa; o resto está disponível do mesmo jeito.

A lista abaixo sai do próprio catálogo do Xtractor, o mesmo que a tela de nova fonte lê. Se um campo está aqui, a tela oferece.

ads_in_app_event_metrics_by_day176 campos

ad_id, stat_time_day, real_time_app_install, real_time_app_install_cost, app_install, cost_per_app_install, registration, cost_per_registration, registration_rate, total_registration, cost_per_total_registration, purchase, cost_per_purchase, purchase_rate, total_purchase, cost_per_total_purchase, value_per_total_purchase, total_purchase_value, total_active_pay_roas, app_event_add_to_cart, cost_per_app_event_add_to_cart, app_event_add_to_cart_rate, total_app_event_add_to_cart, cost_per_total_app_event_add_to_cart, value_per_total_app_event_add_to_cart, total_app_event_add_to_cart_value, checkout, cost_per_checkout, checkout_rate, total_checkout, cost_per_total_checkout, value_per_checkout, total_checkout_value, view_content, cost_per_view_content, view_content_rate, total_view_content, cost_per_total_view_content, value_per_total_view_content, total_view_content_value, next_day_open, cost_per_next_day_open, next_day_open_rate, total_next_day_open, cost_per_total_next_day_open, add_payment_info, cost_per_add_payment_info, add_payment_info_rate, total_add_payment_info, cost_total_add_payment_info, add_to_wishlist, cost_per_add_to_wishlist, add_to_wishlist_rate, total_add_to_wishlist, cost_per_total_add_to_wishlist, value_per_total_add_to_wishlist, total_add_to_wishlist_value, launch_app, cost_per_launch_app, launch_app_rate, total_launch_app, cost_per_total_launch_app, complete_tutorial, cost_per_complete_tutorial, complete_tutorial_rate, total_complete_tutorial, cost_per_total_complete_tutorial, value_per_total_complete_tutorial, total_complete_tutorial_value, create_group, cost_per_create_group, create_group_rate, total_create_group, cost_per_total_create_group, value_per_total_create_group, total_create_group_value, join_group, cost_per_join_group, join_group_rate, total_join_group, cost_per_total_join_group, value_per_total_join_group, total_join_group_value, create_gamerole, cost_per_create_gamerole, create_gamerole_rate, total_create_gamerole, cost_per_total_create_gamerole, value_per_total_create_gamerole, total_create_gamerole_value, spend_credits, cost_per_spend_credits, spend_credits_rate, total_spend_credits, cost_per_total_spend_credits, value_per_total_spend_credits, total_spend_credits_value, achieve_level, cost_per_achieve_level, achieve_level_rate, total_achieve_level, cost_per_total_achieve_level, value_per_total_achieve_level, total_achieve_level_value, unlock_achievement, cost_per_unlock_achievement, unlock_achievement_rate, total_unlock_achievement, cost_per_total_unlock_achievement, value_per_total_unlock_achievement, total_unlock_achievement_value, sales_lead, cost_per_sales_lead, sales_lead_rate, total_sales_lead, cost_per_total_sales_lead, value_per_total_sales_lead, total_sales_lead_value, in_app_ad_click, cost_per_in_app_ad_click, in_app_ad_click_rate, total_in_app_ad_click, cost_per_total_in_app_ad_click, value_per_total_in_app_ad_click, total_in_app_ad_click_value, in_app_ad_impr, cost_per_in_app_ad_impr, in_app_ad_impr_rate, total_in_app_ad_impr, cost_per_total_in_app_ad_impr, value_per_total_in_app_ad_impr, total_in_app_ad_impr_value, loan_apply, cost_per_loan_apply, loan_apply_rate, total_loan_apply, cost_per_total_loan_apply, loan_credit, cost_per_loan_credit, loan_credit_rate, total_loan_credit, cost_per_total_loan_credit, loan_disbursement, cost_per_loan_disbursement, loan_disbursement_rate, total_loan_disbursement, cost_per_total_loan_disbursement, login, cost_per_login, login_rate, total_login, cost_per_total_login, ratings, cost_per_ratings, ratings_rate, total_ratings, cost_per_total_ratings, value_per_total_ratings, total_ratings_value, search, cost_per_search, search_rate, total_search, cost_per_total_search, start_trial, cost_per_start_trial, start_trial_rate, total_start_trial, cost_per_total_start_trial, subscribe, cost_per_subscribe, subscribe_rate, total_subscribe, cost_per_total_subscribe, value_per_total_subscribe, total_subscribe_value

campaigns_in_app_event_metrics_by_day176 campos

campaign_id, stat_time_day, real_time_app_install, real_time_app_install_cost, app_install, cost_per_app_install, registration, cost_per_registration, registration_rate, total_registration, cost_per_total_registration, purchase, cost_per_purchase, purchase_rate, total_purchase, cost_per_total_purchase, value_per_total_purchase, total_purchase_value, total_active_pay_roas, app_event_add_to_cart, cost_per_app_event_add_to_cart, app_event_add_to_cart_rate, total_app_event_add_to_cart, cost_per_total_app_event_add_to_cart, value_per_total_app_event_add_to_cart, total_app_event_add_to_cart_value, checkout, cost_per_checkout, checkout_rate, total_checkout, cost_per_total_checkout, value_per_checkout, total_checkout_value, view_content, cost_per_view_content, view_content_rate, total_view_content, cost_per_total_view_content, value_per_total_view_content, total_view_content_value, next_day_open, cost_per_next_day_open, next_day_open_rate, total_next_day_open, cost_per_total_next_day_open, add_payment_info, cost_per_add_payment_info, add_payment_info_rate, total_add_payment_info, cost_total_add_payment_info, add_to_wishlist, cost_per_add_to_wishlist, add_to_wishlist_rate, total_add_to_wishlist, cost_per_total_add_to_wishlist, value_per_total_add_to_wishlist, total_add_to_wishlist_value, launch_app, cost_per_launch_app, launch_app_rate, total_launch_app, cost_per_total_launch_app, complete_tutorial, cost_per_complete_tutorial, complete_tutorial_rate, total_complete_tutorial, cost_per_total_complete_tutorial, value_per_total_complete_tutorial, total_complete_tutorial_value, create_group, cost_per_create_group, create_group_rate, total_create_group, cost_per_total_create_group, value_per_total_create_group, total_create_group_value, join_group, cost_per_join_group, join_group_rate, total_join_group, cost_per_total_join_group, value_per_total_join_group, total_join_group_value, create_gamerole, cost_per_create_gamerole, create_gamerole_rate, total_create_gamerole, cost_per_total_create_gamerole, value_per_total_create_gamerole, total_create_gamerole_value, spend_credits, cost_per_spend_credits, spend_credits_rate, total_spend_credits, cost_per_total_spend_credits, value_per_total_spend_credits, total_spend_credits_value, achieve_level, cost_per_achieve_level, achieve_level_rate, total_achieve_level, cost_per_total_achieve_level, value_per_total_achieve_level, total_achieve_level_value, unlock_achievement, cost_per_unlock_achievement, unlock_achievement_rate, total_unlock_achievement, cost_per_total_unlock_achievement, value_per_total_unlock_achievement, total_unlock_achievement_value, sales_lead, cost_per_sales_lead, sales_lead_rate, total_sales_lead, cost_per_total_sales_lead, value_per_total_sales_lead, total_sales_lead_value, in_app_ad_click, cost_per_in_app_ad_click, in_app_ad_click_rate, total_in_app_ad_click, cost_per_total_in_app_ad_click, value_per_total_in_app_ad_click, total_in_app_ad_click_value, in_app_ad_impr, cost_per_in_app_ad_impr, in_app_ad_impr_rate, total_in_app_ad_impr, cost_per_total_in_app_ad_impr, value_per_total_in_app_ad_impr, total_in_app_ad_impr_value, loan_apply, cost_per_loan_apply, loan_apply_rate, total_loan_apply, cost_per_total_loan_apply, loan_credit, cost_per_loan_credit, loan_credit_rate, total_loan_credit, cost_per_total_loan_credit, loan_disbursement, cost_per_loan_disbursement, loan_disbursement_rate, total_loan_disbursement, cost_per_total_loan_disbursement, login, cost_per_login, login_rate, total_login, cost_per_total_login, ratings, cost_per_ratings, ratings_rate, total_ratings, cost_per_total_ratings, value_per_total_ratings, total_ratings_value, search, cost_per_search, search_rate, total_search, cost_per_total_search, start_trial, cost_per_start_trial, start_trial_rate, total_start_trial, cost_per_total_start_trial, subscribe, cost_per_subscribe, subscribe_rate, total_subscribe, cost_per_total_subscribe, value_per_total_subscribe, total_subscribe_value

ad_groups78 campos

adgroup_id, age, display_mode, operation_system, creative_material_mode, excluded_audience, optimize_goal, budget_mode, brand_safety_partner, enable_inventory_filter, conversion_bid, interest_keywords, scheduled_budget, deep_external_action, modify_time, placement_type, is_comment_disable, audience, schedule_end_time, brand_safety, daily_retention_ratio, languages, rf_predict_cpr, deep_bid_type, skip_learning_phase, rf_predict_frequency, external_type, gender, category, pixel_id, frequency_schedule, keywords, enable_search_result, bid, app_type, app_download_url, create_time, frequency, include_custom_actions, ios14_quota_type, bid_type, app_id, split_test_adgroup_ids, advertiser_id, buy_reach, dayparting, buy_impression, automated_targeting, pacing, statistic_type, is_hfss, conversion_id, campaign_name, rf_buy_type, device_models, campaign_id, device_price, schedule_start_time, placement, opt_status, status, external_action, conversion_window, adgroup_name, billing_event, location, budget, video_download, deep_cpabid, is_share_disable, feed_type, schedule_infos, exclude_custom_actions, action_v2, is_new_structure, schedule_type, interest_category_v2, connection_type

ads_page_event_metrics_by_day78 campos

ad_id, stat_time_day, complete_payment_roas, complete_payment, cost_per_complete_payment, complete_payment_rate, value_per_complete_payment, total_complete_payment_rate, page_browse_view, cost_per_page_browse_view, page_browse_view_rate, total_page_browse_view_value, value_per_page_browse_view, button_click, cost_per_button_click, button_click_rate, value_per_button_click, total_button_click_value, online_consult, cost_per_online_consult, online_consult_rate, value_per_online_consult, total_online_consult_value, user_registration, cost_per_user_registration, user_registration_rate, value_per_user_registration, total_user_registration_value, product_details_page_browse, cost_per_product_details_page_browse, product_details_page_browse_rate, value_per_product_details_page_browse, total_product_details_page_browse_value, web_event_add_to_cart, cost_per_web_event_add_to_cart, web_event_add_to_cart_rate, value_per_web_event_add_to_cart, total_web_event_add_to_cart_value, on_web_order, cost_per_on_web_order, on_web_order_rate, value_per_on_web_order, total_on_web_order_value, initiate_checkout, cost_per_initiate_checkout, initiate_checkout_rate, value_per_initiate_checkout, total_initiate_checkout_value, add_billing, cost_per_add_billing, add_billing_rate, value_per_add_billing, total_add_billing_value, page_event_search, cost_per_page_event_search, page_event_search_rate, value_per_page_event_search, total_page_event_search_value, form, cost_per_form, form_rate, value_per_form, total_form_value, download_start, cost_per_download_start, download_start_rate, value_per_download_start, total_download_start_value, on_web_add_to_wishlist, cost_per_on_web_add_to_wishlist, on_web_add_to_wishlist_per_click, value_per_on_web_add_to_wishlist, total_on_web_add_to_wishlist_value, on_web_subscribe, cost_per_on_web_subscribe, on_web_subscribe_per_click, value_per_on_web_subscribe, total_on_web_subscribe_value

campaigns_page_event_metrics_by_day78 campos

campaign_id, stat_time_day, complete_payment_roas, complete_payment, cost_per_complete_payment, complete_payment_rate, value_per_complete_payment, total_complete_payment_rate, page_browse_view, cost_per_page_browse_view, page_browse_view_rate, total_page_browse_view_value, value_per_page_browse_view, button_click, cost_per_button_click, button_click_rate, value_per_button_click, total_button_click_value, online_consult, cost_per_online_consult, online_consult_rate, value_per_online_consult, total_online_consult_value, user_registration, cost_per_user_registration, user_registration_rate, value_per_user_registration, total_user_registration_value, product_details_page_browse, cost_per_product_details_page_browse, product_details_page_browse_rate, value_per_product_details_page_browse, total_product_details_page_browse_value, web_event_add_to_cart, cost_per_web_event_add_to_cart, web_event_add_to_cart_rate, value_per_web_event_add_to_cart, total_web_event_add_to_cart_value, on_web_order, cost_per_on_web_order, on_web_order_rate, value_per_on_web_order, total_on_web_order_value, initiate_checkout, cost_per_initiate_checkout, initiate_checkout_rate, value_per_initiate_checkout, total_initiate_checkout_value, add_billing, cost_per_add_billing, add_billing_rate, value_per_add_billing, total_add_billing_value, page_event_search, cost_per_page_event_search, page_event_search_rate, value_per_page_event_search, total_page_event_search_value, form, cost_per_form, form_rate, value_per_form, total_form_value, download_start, cost_per_download_start, download_start_rate, value_per_download_start, total_download_start_value, on_web_add_to_wishlist, cost_per_on_web_add_to_wishlist, on_web_add_to_wishlist_per_click, value_per_on_web_add_to_wishlist, total_on_web_add_to_wishlist_value, on_web_subscribe, cost_per_on_web_subscribe, on_web_subscribe_per_click, value_per_on_web_subscribe, total_on_web_subscribe_value

ads42 campos

ad_id, ad_format, campaign_name, external_action, identity_type, campaign_id, impression_tracking_url, brand_safety_postbid_partner, ad_name, avatar_icon_web_uri, ad_texts, vast_moat, is_creative_authorized, adgroup_id, image_ids, product_ids, call_to_action_id, video_id, adgroup_name, advertiser_id, open_url_type, creative_type, landing_page_url, modify_time, profile_image, call_to_action, identity_id, page_id, display_name, opt_status, playable_url, is_new_structure, click_tracking_url, ad_text, landing_page_urls, is_aco, open_url, app_name, status, create_time, card_id, fallback_type

ad_accounts29 campos

advertiser_id, name, company, contacter, promotion_area, balance, license_province, currency, promotion_center_city, display_timezone, email, telephone, phonenumber, language, industry, create_time, address, role, reason, promotion_center_province, timezone, license_url, country, status, brand, license_city, description, license_no, owner_bc_id

ads_basic_data_metrics_by_day puxada por padrão26 campos

ad_id, stat_time_day, spend, cpc, cpm, impressions, clicks, ctr, reach, cost_per_1000_reached, conversion, cost_per_conversion, conversion_rate, real_time_conversion, real_time_cost_per_conversion, real_time_conversion_rate, result, cost_per_result, result_rate, real_time_result, real_time_cost_per_result, real_time_result_rate, secondary_goal_result, cost_per_secondary_goal_result, secondary_goal_result_rate, frequency

campaigns_basic_data_metrics_by_day26 campos

campaign_id, stat_time_day, spend, cpc, cpm, impressions, clicks, ctr, reach, cost_per_1000_reached, conversion, cost_per_conversion, conversion_rate, real_time_conversion, real_time_cost_per_conversion, real_time_conversion_rate, result, cost_per_result, result_rate, real_time_result, real_time_cost_per_result, real_time_result_rate, secondary_goal_result, cost_per_secondary_goal_result, secondary_goal_result_rate, frequency

ads_attribution_metrics_by_day16 campos

ad_id, stat_time_day, vta_app_install, vta_conversion, cost_per_vta_conversion, vta_registration, cost_per_vta_registration, vta_purchase, cost_per_vta_purchase, cta_app_install, cta_conversion, cost_per_cta_conversion, cta_registration, cost_per_cta_registration, cta_purchase, cost_per_cta_purchase

campaigns16 campos

campaign_id, campaign_name, campaign_type, objective, objective_type, advertiser_id, budget_mode, deep_bid_type, status, create_time, modify_time, opt_status, is_new_structure, split_test_variable, budget, roas_bid

campaigns_attribution_metrics_by_day16 campos

campaign_id, stat_time_day, vta_app_install, vta_conversion, cost_per_vta_conversion, vta_registration, cost_per_vta_registration, vta_purchase, cost_per_vta_purchase, cta_app_install, cta_conversion, cost_per_cta_conversion, cta_registration, cost_per_cta_registration, cta_purchase, cost_per_cta_purchase

ads_attribute_metrics14 campos

ad_id, campaign_name, objective_type, campaign_id, adgroup_name, placement, adgroup_id, ad_name, ad_text, tt_app_id, tt_app_name, mobile_app_id, promotion_type, dpa_target_audience_type

campaigns_attribute_metrics13 campos

campaign_id, campaign_name, objective_type, adgroup_name, placement, adgroup_id, ad_name, ad_text, tt_app_id, tt_app_name, mobile_app_id, promotion_type, dpa_target_audience_type

ads_video_play_metrics_by_day puxada por padrão11 campos

ad_id, stat_time_day, video_play_actions, video_watched_2s, video_watched_6s, average_video_play, average_video_play_per_user, video_views_p25, video_views_p50, video_views_p75, video_views_p100

campaigns_video_play_metrics_by_day11 campos

campaign_id, stat_time_day, video_play_actions, video_watched_2s, video_watched_6s, average_video_play, average_video_play_per_user, video_views_p25, video_views_p50, video_views_p75, video_views_p100

ads_audience_age_gender_by_day9 campos

advertiser_id, campaign_id, stat_time_day, age, gender, spend, impressions, clicks, conversion

ads_engagement_metrics_by_day puxada por padrão9 campos

ad_id, stat_time_day, profile_visits, profile_visits_rate, likes, comments, shares, follows, clicks_on_music_disc

campaigns_engagement_metrics_by_day9 campos

campaign_id, stat_time_day, profile_visits, profile_visits_rate, likes, comments, shares, follows, clicks_on_music_disc

ads_audience_province_by_day8 campos

advertiser_id, ad_id, stat_time_day, province_id, spend, impressions, clicks, conversion

“Engajamento” não é uma coluna. Curtidas, comentários, compartilhamentos e seguidores estão na tabela de engajamento; os cliques, na básica. O Pacer soma curtidas, comentários e compartilhamentos para montar a métrica. Se o seu relatório também conta cliques, diga isso em nota, porque a definição muda o número.

Saída

Onde os dados chegamplanilha e banco são coisas diferentes

Planilha do Google

Para quem monta relatório na mão

Marque investimento, impressões, cliques e o nome da campanha, e a aba se atualiza sozinha a cada sincronização.

Se quiser vídeo ou engajamento na mesma linha, marque também esses campos ao montar a fonte: eles vêm de tabelas diferentes, e o caOS junta para você.

BigQuery

Para quem vai modelar em cima

20 conjuntos de dados. Três de cadastro no lado do anúncio (contas, conjuntos e anúncios) e nove de métrica por dia: básica, engajamento, vídeo, evento de página, evento no app, atribuição, idade e gênero, região e atributos. O lado da campanha repete a mesma família.

Juntar vídeo e engajamento à básica é um join por anúncio e dia, e é trabalho seu no modelo.

Confiança

Atualização do dadopor que o número de ontem ainda muda

Plataforma de anúncio reescreve o passado. Conversão que só é atribuída dias depois, gasto revisado, linha corrigida: o número de terça-feira muda na quinta. Se a extração só trouxesse o dia novo, sua planilha ficaria congelada no primeiro valor e passaria a divergir da plataforma sem ninguém perceber.

Por isso o caOS relê os últimos 28 dias a cada sincronização, e reescreve o que mudou. O histórico mais antigo continua no destino e não é tocado. Na prática: o que está na sua planilha ou no seu banco é o que a plataforma diz hoje, não o que ela dizia no dia da primeira carga.

As métricas vão até ontem. O dia corrente não chega, por mais que você sincronize. Relatório que fecha no mesmo dia sempre mostra o dia anterior.

Detalhe

Bom sabero que costuma gerar dúvida

O TikTok reescreve o nome do anúncio. Em anúncios gerados por Smart+, a plataforma cola a legenda ou o nome do arquivo antes da sua taxonomia. O conector puxa o nome fielmente, sujo desde a origem. A limpeza acontece depois, no modelo.

Alcance existe, e não soma. Diferente do Kwai e do Google, o TikTok entrega alcance e frequência. Mas somar dias ou anúncios infla o número.

Demográfico só existe por campanha. Idade e gênero não descem até o anúncio: a API colapsa o recorte nesse nível, por privacidade. Região vem por anúncio e dia.

Suporte

Quando dá erradoa mensagem e o que fazer

“Invalid or expired state.” O link passou dos 10 minutos ou já tinha sido usado. Feche e clique no cartão de novo.

Diz conectado e nenhuma conta aparece. A autorização voltou sem anunciante nenhum. Quem autorizou não tinha acesso: resolva no Business Center e reconecte.

A sincronização fica vermelha com mensagem genérica. A causa mais comum é o acesso àquele anunciante ter saído: removido do Business Center, papel alterado, usuário desativado. Peça a quem administra o Business Center que devolva o acesso à pessoa que autorizou, e sincronize de novo. Refazer a conexão antes disso não adianta.

Essa falha já foi silenciosa: a API do TikTok responde sucesso mesmo quando recusa, e a extração terminava verde trazendo zero linha. Hoje o erro derruba a sincronização, o que é melhor do que um verde mentiroso.

“Limite de requisições da plataforma atingido.” É limite do TikTok. Espere e sincronize mais tarde.