{
  "components": {
    "schemas": {
      "CredentialsRequiredError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "credentials_required",
                "type": "string"
              },
              "message": {
                "const": "this capability requires authentication credentials; save them via POST /credentials",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "ExecuteAcceptedResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "fb-adlibrary.ad.search",
              "fb-adlibrary.advertiser-ads.list"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "fb-adlibrary"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "state": {
            "const": "queued",
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state"
        ],
        "type": "object"
      },
      "ExecuteNetwork": {
        "additionalProperties": false,
        "properties": {
          "session_id": {
            "description": "Optional explicit session identifier.",
            "minLength": 1,
            "type": "string"
          },
          "session_key": {
            "description": "Optional stable key used to derive a reusable session.",
            "minLength": 1,
            "type": "string"
          },
          "sticky": {
            "description": "Whether the request should reuse the resolved session.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "ExecuteReplayResponse": {
        "additionalProperties": false,
        "description": "Replayed response matching the original job's current state (completed, failed, or pending).",
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "fb-adlibrary.ad.search",
              "fb-adlibrary.advertiser-ads.list"
            ],
            "type": "string"
          },
          "error": {},
          "idempotent_replay": {
            "const": true,
            "type": "boolean"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "fb-adlibrary"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {},
          "state": {
            "enum": [
              "queued",
              "running",
              "retrying",
              "completed",
              "failed"
            ],
            "type": "string"
          },
          "stats": {},
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "idempotent_replay"
        ],
        "type": "object"
      },
      "FbAdlibraryAdSearchCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "fb-adlibrary.ad.search"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "fb-adlibrary"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "ad_archive_id": "1046730950862281",
                        "ad_id": null,
                        "categories": [
                          "UNKNOWN"
                        ],
                        "collation_count": 1,
                        "collation_id": "3472161186254279",
                        "contains_digital_created_media": false,
                        "contains_sensitive_content": false,
                        "currency": "",
                        "end_date": 1763712000,
                        "fev_info": null,
                        "gated_type": "ELIGIBLE",
                        "has_user_reported": false,
                        "hide_data_status": "NONE",
                        "impressions_with_index": {
                          "impressions_index": -1,
                          "impressions_text": null
                        },
                        "is_aaa_eligible": false,
                        "is_active": false,
                        "menu_items": [],
                        "page_id": "146705838515566",
                        "page_is_deleted": false,
                        "page_name": "Sukeban World",
                        "publisher_platform": [
                          "INSTAGRAM"
                        ],
                        "reach_estimate": null,
                        "regional_regulation_data": {
                          "finserv": {
                            "is_deemed_finserv": false,
                            "is_limited_delivery": false
                          },
                          "tw_anti_scam": {
                            "is_limited_delivery": false
                          }
                        },
                        "report_count": null,
                        "snapshot": {
                          "additional_info": null,
                          "body": {
                            "text": "SUKEBAN at @animeexpo \n07/05/25 Los Angeles \n\n🎬 @complicasian \nMC @kunichi_nomura \nMusic / yoyo @okamotoreiji @ecec_fc @haroodiy \nCostumes @olympialetan @softskinlatex @dawnamatrix\nSneakers @nike \nHats @stephenjonesmillinery \nMakeup @kalikennedy \nHair @dennisvlanni\nNails @nailsbymei \nProduction @exposureny \n#thisissukeban #sukebanxanimeexpo"
                          },
                          "branded_content": null,
                          "brazil_tax_id": "[redacted:brazil_tax_id]",
                          "byline": null,
                          "caption": "instagram.com",
                          "cards": [],
                          "country_iso_code": null,
                          "cta_text": "Visit Instagram profile",
                          "cta_type": "VIEW_INSTAGRAM_PROFILE",
                          "disclaimer_label": null,
                          "display_format": "VIDEO",
                          "ec_certificates": [],
                          "event": null,
                          "extra_images": [],
                          "extra_links": [],
                          "extra_texts": [],
                          "extra_videos": [],
                          "images": [],
                          "is_reshared": false,
                          "link_description": null,
                          "link_url": "http://instagram.com/sukeban_world",
                          "page_categories": [
                            "Sports league"
                          ],
                          "page_id": "146705838515566",
                          "page_is_deleted": false,
                          "page_like_count": 429,
                          "page_name": "Sukeban World",
                          "page_profile_picture_url": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s60x60_tt6&_nc_cat=100&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=oUYRQYYOixcQ7kNvwGS9K-S&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-2.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A739463",
                          "page_profile_uri": "https://www.facebook.com/61551864263186/",
                          "root_reshared_post": null,
                          "title": null,
                          "videos": [
                            {
                              "video_hd_url": "https://video-lga3-3.xx.fbcdn.net/o1/v/t2/f2/m86/[redacted:token].mp4?_nc_cat=104&_nc_sid=b66105&_nc_ht=video-lga3-3.xx.fbcdn.net&_nc_ohc=-XVUAjhSIXAQ7kNvwHS4mzy&efg=[redacted:token]&ccb=17-1&vs=6a7726380c03e491&_nc_vs=[redacted:token]&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&_nc_zt=28&oh=[redacted:token]&oe=6A6F98BD",
                              "video_preview_image_url": "https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=110&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=QrN3gjny3EgQ7kNvwFeLpe0&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-1.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73AB6C",
                              "video_sd_url": "https://video-lga3-3.xx.fbcdn.net/o1/v/t2/f2/m86/[redacted:token].mp4?_nc_cat=104&_nc_sid=b66105&_nc_ht=video-lga3-3.xx.fbcdn.net&_nc_ohc=BY_Lq-X7d5kQ7kNvwG-ly05&efg=[redacted:token]%3D&ccb=17-1&vs=c95c77148100653c&_nc_vs=[redacted:token]&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&_nc_zt=28&oh=[redacted:token]&oe=6A6FACA5",
                              "watermarked_video_hd_url": "",
                              "watermarked_video_sd_url": ""
                            }
                          ]
                        },
                        "spend": null,
                        "start_date": 1752044400,
                        "state_media_run_label": null,
                        "targeted_or_reached_countries": [],
                        "total_active_time": null
                      },
                      {
                        "ad_archive_id": "1869276447125570",
                        "ad_id": null,
                        "categories": [
                          "UNKNOWN"
                        ],
                        "collation_count": null,
                        "collation_id": null,
                        "contains_digital_created_media": false,
                        "contains_sensitive_content": false,
                        "currency": "",
                        "end_date": 1785567600,
                        "fev_info": null,
                        "gated_type": "ELIGIBLE",
                        "has_user_reported": false,
                        "hide_data_status": "NONE",
                        "impressions_with_index": {
                          "impressions_index": -1,
                          "impressions_text": null
                        },
                        "is_aaa_eligible": false,
                        "is_active": true,
                        "menu_items": [],
                        "page_id": "15087023444",
                        "page_is_deleted": false,
                        "page_name": "Nike",
                        "publisher_platform": [
                          "FACEBOOK",
                          "INSTAGRAM",
                          "AUDIENCE_NETWORK"
                        ],
                        "reach_estimate": null,
                        "regional_regulation_data": {
                          "finserv": {
                            "is_deemed_finserv": false,
                            "is_limited_delivery": false
                          },
                          "tw_anti_scam": {
                            "is_limited_delivery": false
                          }
                        },
                        "report_count": null,
                        "snapshot": {
                          "additional_info": null,
                          "body": {
                            "text": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año."
                          },
                          "branded_content": null,
                          "brazil_tax_id": "[redacted:brazil_tax_id]",
                          "byline": null,
                          "caption": "itunes.apple.com",
                          "cards": [
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "itunes.apple.com",
                              "cta_text": "Install Now",
                              "cta_type": "INSTALL_MOBILE_APP",
                              "image_crops": [],
                              "link_description": "Download Nike: Shoes, Apparel, Stories by Nike, Inc on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Nike: Shoes, Apparel,…",
                              "link_url": "https://www.nike.com/mx/t/espinillera-de-fútbol-charge-MFtBhV/DX4608-100?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=107&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=ttLZDV5dN64Q7kNvwFo1RxH&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-2.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B003",
                              "resized_image_url": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=107&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=ttLZDV5dN64Q7kNvwFo1RxH&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-2.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B003",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "itunes.apple.com",
                              "cta_text": "Install Now",
                              "cta_type": "INSTALL_MOBILE_APP",
                              "image_crops": [],
                              "link_description": "Download Nike: Shoes, Apparel, Stories by Nike, Inc on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Nike: Shoes, Apparel,…",
                              "link_url": "https://www.nike.com/mx/t/espinillera-de-fútbol-charge-MFtBhV/DX4608-010?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=111&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=FYoZDGOs1iYQ7kNvwHDwrFQ&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-1.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73AC2F",
                              "resized_image_url": "https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=111&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=FYoZDGOs1iYQ7kNvwHDwrFQ&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-1.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73AC2F",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "itunes.apple.com",
                              "cta_text": "Install Now",
                              "cta_type": "INSTALL_MOBILE_APP",
                              "image_crops": [],
                              "link_description": "Download Nike: Shoes, Apparel, Stories by Nike, Inc on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Nike: Shoes, Apparel,…",
                              "link_url": "https://www.nike.com/mx/t/calcetines-de-fútbol-hasta-la-rodilla-academy-wwdjrW/SX4120-001?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=100&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=7rfWHLvuJUAQ7kNvwE2YaFM&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-2.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B7A0",
                              "resized_image_url": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=100&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=7rfWHLvuJUAQ7kNvwE2YaFM&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-2.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B7A0",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            }
                          ],
                          "country_iso_code": null,
                          "cta_text": "Install now",
                          "cta_type": "INSTALL_MOBILE_APP",
                          "disclaimer_label": null,
                          "display_format": "DPA",
                          "ec_certificates": [],
                          "event": null,
                          "extra_images": [],
                          "extra_links": [],
                          "extra_texts": [],
                          "extra_videos": [],
                          "images": [],
                          "is_reshared": false,
                          "link_description": null,
                          "link_url": "http://itunes.apple.com/app/id1095459556",
                          "page_categories": [
                            "Sportswear"
                          ],
                          "page_id": "15087023444",
                          "page_is_deleted": false,
                          "page_like_count": 39577479,
                          "page_name": "Nike",
                          "page_profile_picture_url": "https://scontent-lga3-3.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s60x60_tt6&_nc_cat=106&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=drdbCFFung0Q7kNvwFF51VC&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-3.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A7393D6",
                          "page_profile_uri": "https://www.facebook.com/nike/",
                          "root_reshared_post": null,
                          "title": "Nike: Shoes, Apparel, Stories",
                          "videos": []
                        },
                        "spend": null,
                        "start_date": 1773730800,
                        "state_media_run_label": null,
                        "targeted_or_reached_countries": [],
                        "total_active_time": null
                      },
                      {
                        "ad_archive_id": "161966936869658",
                        "ad_id": null,
                        "categories": [
                          "UNKNOWN"
                        ],
                        "collation_count": null,
                        "collation_id": null,
                        "contains_digital_created_media": false,
                        "contains_sensitive_content": false,
                        "currency": "",
                        "end_date": 1774854000,
                        "fev_info": null,
                        "gated_type": "ELIGIBLE",
                        "has_user_reported": false,
                        "hide_data_status": "NONE",
                        "impressions_with_index": {
                          "impressions_index": -1,
                          "impressions_text": null
                        },
                        "is_aaa_eligible": true,
                        "is_active": false,
                        "menu_items": [],
                        "page_id": "15087023444",
                        "page_is_deleted": false,
                        "page_name": "Nike",
                        "publisher_platform": [
                          "FACEBOOK",
                          "INSTAGRAM",
                          "AUDIENCE_NETWORK"
                        ],
                        "reach_estimate": null,
                        "regional_regulation_data": {
                          "finserv": {
                            "is_deemed_finserv": false,
                            "is_limited_delivery": false
                          },
                          "tw_anti_scam": {
                            "is_limited_delivery": false
                          }
                        },
                        "report_count": null,
                        "snapshot": {
                          "additional_info": null,
                          "body": {
                            "text": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis."
                          },
                          "branded_content": null,
                          "brazil_tax_id": "[redacted:brazil_tax_id]",
                          "byline": null,
                          "caption": "nike.com/mx",
                          "cards": [
                            {
                              "body": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis.",
                              "caption": "ad.doubleclick.net",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "",
                              "link_url": "https://www.nike.com/mx/t/calzado-de-golf-tiger-woods-13-ChGrTt?cp=77438547234_soc_",
                              "original_image_url": "https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=103&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=LPYhebtLjEoQ7kNvwG1znt_&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-1.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B69F",
                              "resized_image_url": "https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=103&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=LPYhebtLjEoQ7kNvwG1znt_&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-1.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B69F",
                              "title": "Calzado de golf para hombre Tiger Woods '13 - Negro",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis.",
                              "caption": "ad.doubleclick.net",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "",
                              "link_url": "https://www.nike.com/mx/t/shorts-de-tejido-woven-jordan-essentials-sPBbsb?cp=77438547234_soc_",
                              "original_image_url": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=qvSnQLxbtZUQ7kNvwGdC7dq&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-2.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A738A61",
                              "resized_image_url": "https://scontent-lga3-2.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=qvSnQLxbtZUQ7kNvwGdC7dq&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-2.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A738A61",
                              "title": "Shorts de tejido Woven para hombre Jordan Essentials - Negro",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis.",
                              "caption": "ad.doubleclick.net",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "",
                              "link_url": "https://www.nike.com/mx/t/[redacted:token]?cp=77438547234_soc_",
                              "original_image_url": "https://scontent-lga3-3.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=108&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=rqZpzBJfjNIQ7kNvwE0K4JY&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-3.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73A3EC",
                              "resized_image_url": "https://scontent-lga3-3.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=108&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=rqZpzBJfjNIQ7kNvwE0K4JY&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-3.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73A3EC",
                              "title": "Calzado de entrenamiento para hombre Nike Metcon 8 - Gris",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            }
                          ],
                          "country_iso_code": null,
                          "cta_text": "Shop now",
                          "cta_type": "SHOP_NOW",
                          "disclaimer_label": null,
                          "display_format": "DPA",
                          "ec_certificates": [],
                          "event": null,
                          "extra_images": [],
                          "extra_links": [],
                          "extra_texts": [],
                          "extra_videos": [],
                          "images": [],
                          "is_reshared": false,
                          "link_description": null,
                          "link_url": "https://ad.doubleclick.net/ddm/trackclk/N8893.2410306FACEBOOKADS/B30448992.373431644;dc_trk_aid=564542764;dc_trk_cid=196659869;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1",
                          "page_categories": [
                            "Sportswear",
                            "Product/service"
                          ],
                          "page_id": "15087023444",
                          "page_is_deleted": false,
                          "page_like_count": 39577479,
                          "page_name": "Nike",
                          "page_profile_picture_url": "https://scontent-lga3-3.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s60x60_tt6&_nc_cat=104&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=08Vi-ht-T5IQ7kNvwHz9Bqj&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-lga3-3.xx&_nc_gid=XX3uZGZPxkWb3ZseFb25cg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73A4E8",
                          "page_profile_uri": "https://www.facebook.com/nike/",
                          "root_reshared_post": null,
                          "title": "{{product.name}}",
                          "videos": []
                        },
                        "spend": null,
                        "start_date": 1692082800,
                        "state_media_run_label": null,
                        "targeted_or_reached_countries": [],
                        "total_active_time": null
                      }
                    ],
                    "next_cursor": "[redacted:token]",
                    "total_items": 5
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "results",
          "billing",
          "stats"
        ],
        "type": "object"
      },
      "FbAdlibraryAdSearchExecuteRequest": {
        "additionalProperties": false,
        "example": {
          "capability": "fb-adlibrary.ad.search",
          "input": {
            "country": "US",
            "limit": 5,
            "query": "nike"
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "fb-adlibrary.ad.search"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/FbAdlibraryAdSearchInput"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 120000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "FbAdlibraryAdSearchInput": {
        "properties": {
          "active": {
            "description": "Filter by active status: all, active, inactive (default: all)",
            "example": "all",
            "type": "string"
          },
          "country": {
            "description": "ISO country code (default: US)",
            "example": "US",
            "type": "string"
          },
          "end_date": {
            "description": "Filter ads with impressions until this date (YYYY-MM-DD)",
            "example": "2025-01-01",
            "type": "string"
          },
          "languages": {
            "description": "Filter by content language codes (e.g. [\"en\", \"es\"])",
            "example": [
              "en"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "limit": {
            "description": "Maximum number of ads to return (default: 50)",
            "example": 10,
            "type": "integer"
          },
          "max_records": {
            "minimum": 1,
            "type": "integer"
          },
          "media_type": {
            "description": "Filter by media type: all, image, video, meme, none (default: all)",
            "example": "video",
            "type": "string"
          },
          "platforms": {
            "description": "Filter by publisher platform: facebook, instagram, messenger, audience_network",
            "example": [
              "facebook"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "query": {
            "description": "Search keyword or phrase",
            "example": "nike",
            "type": "string"
          },
          "sort_by": {
            "description": "Sort results: relevance, date, impressions (default: impressions)",
            "example": "relevance",
            "type": "string"
          },
          "start_date": {
            "description": "Filter ads with impressions from this date (YYYY-MM-DD)",
            "example": "2024-01-01",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "FbAdlibraryAdvertiserAdsListCompletedJob": {
        "additionalProperties": false,
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JobBilling"
          },
          "capability": {
            "enum": [
              "fb-adlibrary.advertiser-ads.list"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "fb-adlibrary"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Raw capability output. Its shape may evolve with the upstream source; the example is illustrative, not a compatibility guarantee.",
                  "example": {
                    "items": [
                      {
                        "ad_archive_id": "1869276447125570",
                        "ad_id": null,
                        "categories": [
                          "UNKNOWN"
                        ],
                        "collation_count": null,
                        "collation_id": null,
                        "contains_digital_created_media": false,
                        "contains_sensitive_content": false,
                        "currency": "",
                        "end_date": 1785567600,
                        "fev_info": null,
                        "gated_type": "ELIGIBLE",
                        "has_user_reported": false,
                        "hide_data_status": "NONE",
                        "impressions_with_index": {
                          "impressions_index": -1,
                          "impressions_text": null
                        },
                        "is_aaa_eligible": false,
                        "is_active": true,
                        "menu_items": [],
                        "page_id": "15087023444",
                        "page_is_deleted": false,
                        "page_name": "Nike",
                        "publisher_platform": [
                          "FACEBOOK",
                          "INSTAGRAM",
                          "AUDIENCE_NETWORK"
                        ],
                        "reach_estimate": null,
                        "regional_regulation_data": {
                          "finserv": {
                            "is_deemed_finserv": false,
                            "is_limited_delivery": false
                          },
                          "tw_anti_scam": {
                            "is_limited_delivery": false
                          }
                        },
                        "report_count": null,
                        "snapshot": {
                          "additional_info": null,
                          "body": {
                            "text": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año."
                          },
                          "branded_content": null,
                          "brazil_tax_id": "[redacted:brazil_tax_id]",
                          "byline": null,
                          "caption": "itunes.apple.com",
                          "cards": [
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "itunes.apple.com",
                              "cta_text": "Install Now",
                              "cta_type": "INSTALL_MOBILE_APP",
                              "image_crops": [],
                              "link_description": "Download Nike: Shoes, Apparel, Stories by Nike, Inc on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Nike: Shoes, Apparel,…",
                              "link_url": "https://www.nike.com/mx/t/calcetines-de-fútbol-hasta-la-rodilla-academy-wwdjrW/SX4120-101?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-ord5-3.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=110&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=t8SuOt5bvHEQ7kNvwHyrgDn&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-3.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73C2B0",
                              "resized_image_url": "https://scontent-ord5-3.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=110&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=t8SuOt5bvHEQ7kNvwHyrgDn&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-3.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73C2B0",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "itunes.apple.com",
                              "cta_text": "Install Now",
                              "cta_type": "INSTALL_MOBILE_APP",
                              "image_crops": [],
                              "link_description": "Download Nike: Shoes, Apparel, Stories by Nike, Inc on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Nike: Shoes, Apparel,…",
                              "link_url": "https://www.nike.com/mx/t/espinillera-de-fútbol-charge-MFtBhV/DX4608-100?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=107&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=ttLZDV5dN64Q7kNvwGsKZNo&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B003",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=107&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=ttLZDV5dN64Q7kNvwGsKZNo&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B003",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "itunes.apple.com",
                              "cta_text": "Install Now",
                              "cta_type": "INSTALL_MOBILE_APP",
                              "image_crops": [],
                              "link_description": "Download Nike: Shoes, Apparel, Stories by Nike, Inc on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Nike: Shoes, Apparel,…",
                              "link_url": "https://www.nike.com/mx/t/[redacted:token]/FD0645-100?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=rBw2W5DumT4Q7kNvwGhmRQE&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B73C",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=rBw2W5DumT4Q7kNvwGhmRQE&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B73C",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            }
                          ],
                          "country_iso_code": null,
                          "cta_text": "Install now",
                          "cta_type": "INSTALL_MOBILE_APP",
                          "disclaimer_label": null,
                          "display_format": "DPA",
                          "ec_certificates": [],
                          "event": null,
                          "extra_images": [],
                          "extra_links": [],
                          "extra_texts": [],
                          "extra_videos": [],
                          "images": [],
                          "is_reshared": false,
                          "link_description": null,
                          "link_url": "http://itunes.apple.com/app/id1095459556",
                          "page_categories": [
                            "Sportswear"
                          ],
                          "page_id": "15087023444",
                          "page_is_deleted": false,
                          "page_like_count": 39577509,
                          "page_name": "Nike",
                          "page_profile_picture_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s60x60_tt6&_nc_cat=106&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=drdbCFFung0Q7kNvwFoNV71&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A7393D6",
                          "page_profile_uri": "https://www.facebook.com/nike/",
                          "root_reshared_post": null,
                          "title": "Nike: Shoes, Apparel, Stories",
                          "videos": []
                        },
                        "spend": null,
                        "start_date": 1773730800,
                        "state_media_run_label": null,
                        "targeted_or_reached_countries": [],
                        "total_active_time": null
                      },
                      {
                        "ad_archive_id": "161966936869658",
                        "ad_id": null,
                        "categories": [
                          "UNKNOWN"
                        ],
                        "collation_count": null,
                        "collation_id": null,
                        "contains_digital_created_media": false,
                        "contains_sensitive_content": false,
                        "currency": "",
                        "end_date": 1774854000,
                        "fev_info": null,
                        "gated_type": "ELIGIBLE",
                        "has_user_reported": false,
                        "hide_data_status": "NONE",
                        "impressions_with_index": {
                          "impressions_index": -1,
                          "impressions_text": null
                        },
                        "is_aaa_eligible": true,
                        "is_active": false,
                        "menu_items": [],
                        "page_id": "15087023444",
                        "page_is_deleted": false,
                        "page_name": "Nike",
                        "publisher_platform": [
                          "FACEBOOK",
                          "INSTAGRAM",
                          "AUDIENCE_NETWORK"
                        ],
                        "reach_estimate": null,
                        "regional_regulation_data": {
                          "finserv": {
                            "is_deemed_finserv": false,
                            "is_limited_delivery": false
                          },
                          "tw_anti_scam": {
                            "is_limited_delivery": false
                          }
                        },
                        "report_count": null,
                        "snapshot": {
                          "additional_info": null,
                          "body": {
                            "text": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis."
                          },
                          "branded_content": null,
                          "brazil_tax_id": "[redacted:brazil_tax_id]",
                          "byline": null,
                          "caption": "nike.com/mx",
                          "cards": [
                            {
                              "body": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis.",
                              "caption": "ad.doubleclick.net",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "",
                              "link_url": "https://www.nike.com/mx/t/[redacted:token]?cp=77438547234_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=aCJ4QS2wWeUQ7kNvwGS9076&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B830",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=aCJ4QS2wWeUQ7kNvwGS9076&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B830",
                              "title": "Calzado de entrenamiento para hombre Nike MC Trainer 2 - Azul",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis.",
                              "caption": "ad.doubleclick.net",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "",
                              "link_url": "https://www.nike.com/mx/t/shorts-de-tejido-woven-jordan-essentials-sPBbsb?cp=77438547234_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=qvSnQLxbtZUQ7kNvwHaeyrP&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73C2A1",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=105&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=qvSnQLxbtZUQ7kNvwHaeyrP&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73C2A1",
                              "title": "Shorts de tejido Woven para hombre Jordan Essentials - Negro",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Entra a Nike.com y encuentra actualizaciones semanales de producto con envío gratis.",
                              "caption": "ad.doubleclick.net",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "",
                              "link_url": "https://www.nike.com/mx/t/[redacted:token]?cp=77438547234_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=108&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=rqZpzBJfjNIQ7kNvwHDbUtI&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73A3EC",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=108&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=rqZpzBJfjNIQ7kNvwHDbUtI&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73A3EC",
                              "title": "Calzado de entrenamiento para hombre Nike Metcon 8 - Gris",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            }
                          ],
                          "country_iso_code": null,
                          "cta_text": "Shop now",
                          "cta_type": "SHOP_NOW",
                          "disclaimer_label": null,
                          "display_format": "DPA",
                          "ec_certificates": [],
                          "event": null,
                          "extra_images": [],
                          "extra_links": [],
                          "extra_texts": [],
                          "extra_videos": [],
                          "images": [],
                          "is_reshared": false,
                          "link_description": null,
                          "link_url": "https://ad.doubleclick.net/ddm/trackclk/N8893.2410306FACEBOOKADS/B30448992.373431644;dc_trk_aid=564542764;dc_trk_cid=196659869;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1",
                          "page_categories": [
                            "Sportswear",
                            "Product/service"
                          ],
                          "page_id": "15087023444",
                          "page_is_deleted": false,
                          "page_like_count": 39577509,
                          "page_name": "Nike",
                          "page_profile_picture_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s60x60_tt6&_nc_cat=104&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=08Vi-ht-T5IQ7kNvwHdsoHJ&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73A4E8",
                          "page_profile_uri": "https://www.facebook.com/nike/",
                          "root_reshared_post": null,
                          "title": "{{product.name}}",
                          "videos": []
                        },
                        "spend": null,
                        "start_date": 1692082800,
                        "state_media_run_label": null,
                        "targeted_or_reached_countries": [],
                        "total_active_time": null
                      },
                      {
                        "ad_archive_id": "1249043200627555",
                        "ad_id": null,
                        "categories": [
                          "UNKNOWN"
                        ],
                        "collation_count": null,
                        "collation_id": null,
                        "contains_digital_created_media": false,
                        "contains_sensitive_content": false,
                        "currency": "",
                        "end_date": 1785567600,
                        "fev_info": null,
                        "gated_type": "ELIGIBLE",
                        "has_user_reported": false,
                        "hide_data_status": "NONE",
                        "impressions_with_index": {
                          "impressions_index": -1,
                          "impressions_text": null
                        },
                        "is_aaa_eligible": false,
                        "is_active": true,
                        "menu_items": [],
                        "page_id": "15087023444",
                        "page_is_deleted": false,
                        "page_name": "Nike",
                        "publisher_platform": [
                          "FACEBOOK",
                          "INSTAGRAM",
                          "AUDIENCE_NETWORK"
                        ],
                        "reach_estimate": null,
                        "regional_regulation_data": {
                          "finserv": {
                            "is_deemed_finserv": false,
                            "is_limited_delivery": false
                          },
                          "tw_anti_scam": {
                            "is_limited_delivery": false
                          }
                        },
                        "report_count": null,
                        "snapshot": {
                          "additional_info": null,
                          "body": {
                            "text": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año."
                          },
                          "branded_content": null,
                          "brazil_tax_id": "[redacted:brazil_tax_id]",
                          "byline": null,
                          "caption": "play.google.com",
                          "cards": [
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "play.google.com",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "Unlock the latest from Nike & Jordan. Shop sneakers & apparel for all athletes.",
                              "link_url": "https://www.nike.com/mx/t/espinillera-de-fútbol-charge-MFtBhV/DX4608-010?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=104&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=bz2W6vy2HzwQ7kNvwEu-i-y&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B98F",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=104&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=bz2W6vy2HzwQ7kNvwEu-i-y&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B98F",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "play.google.com",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "Unlock the latest from Nike & Jordan. Shop sneakers & apparel for all athletes.",
                              "link_url": "https://www.nike.com/mx/t/[redacted:token]/DX7906-010?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=111&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=1PpVh2HYf3kQ7kNvwGnCwkN&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A739255",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=111&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=1PpVh2HYf3kQ7kNvwGnCwkN&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A739255",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            },
                            {
                              "body": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos, MSI, envío y devoluciones gratis el resto del año.",
                              "caption": "play.google.com",
                              "cta_text": "Shop Now",
                              "cta_type": "SHOP_NOW",
                              "image_crops": [],
                              "link_description": "Unlock the latest from Nike & Jordan. Shop sneakers & apparel for all athletes.",
                              "link_url": "https://www.nike.com/mx/t/calcetines-de-fútbol-hasta-la-rodilla-academy-wwdjrW/SX4120-101?cp=54413048966_soc_",
                              "original_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?_nc_cat=101&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=QB8IlJ0V8-QQ7kNvwGlLPt_&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B076",
                              "resized_image_url": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s600x600_tt6&_nc_cat=101&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=QB8IlJ0V8-QQ7kNvwGlLPt_&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-1.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A73B076",
                              "title": "Nike",
                              "video_hd_url": null,
                              "video_preview_image_url": null,
                              "video_sd_url": null,
                              "watermarked_resized_image_url": "",
                              "watermarked_video_hd_url": null,
                              "watermarked_video_sd_url": null
                            }
                          ],
                          "country_iso_code": null,
                          "cta_text": "Shop now",
                          "cta_type": "SHOP_NOW",
                          "disclaimer_label": null,
                          "display_format": "DPA",
                          "ec_certificates": [],
                          "event": null,
                          "extra_images": [],
                          "extra_links": [],
                          "extra_texts": [],
                          "extra_videos": [],
                          "images": [],
                          "is_reshared": false,
                          "link_description": null,
                          "link_url": "http://play.google.com/store/apps/details?id=com.nike.omega",
                          "page_categories": [
                            "Sportswear"
                          ],
                          "page_id": "15087023444",
                          "page_is_deleted": false,
                          "page_like_count": 39577509,
                          "page_name": "Nike",
                          "page_profile_picture_url": "https://scontent-ord5-3.xx.fbcdn.net/v/t39.35426-6/[redacted:token].jpg?stp=dst-jpg_s60x60_tt6&_nc_cat=110&ccb=1-7&_nc_sid=c53f8f&_nc_ohc=ZLrvyEtvspIQ7kNvwEb50LW&_nc_oc=[redacted:token]&_nc_zt=14&_nc_ht=scontent-ord5-3.xx&_nc_gid=w9gukb2vim_EwS-QtQHgkg&_nc_ss=7b289&oh=[redacted:token]&oe=6A739DA7",
                          "page_profile_uri": "https://www.facebook.com/nike/",
                          "root_reshared_post": null,
                          "title": "Nike: Shoes, Apparel & Stories",
                          "videos": []
                        },
                        "spend": null,
                        "start_date": 1773730800,
                        "state_media_run_label": null,
                        "targeted_or_reached_countries": [],
                        "total_active_time": null
                      }
                    ],
                    "next_cursor": "[redacted:token]",
                    "total_items": 5
                  }
                },
                "error": {
                  "type": "null"
                },
                "index": {
                  "const": 0,
                  "type": "integer"
                },
                "url": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "index",
                "url",
                "data",
                "error"
              ],
              "type": "object"
            },
            "maxItems": 1,
            "minItems": 1,
            "type": "array"
          },
          "state": {
            "const": "completed",
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/JobStats"
          },
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "results",
          "billing",
          "stats"
        ],
        "type": "object"
      },
      "FbAdlibraryAdvertiserAdsListExecuteRequest": {
        "additionalProperties": false,
        "example": {
          "capability": "fb-adlibrary.advertiser-ads.list",
          "input": {
            "country": "US",
            "limit": 5,
            "page_id": "15087023444"
          }
        },
        "properties": {
          "capability": {
            "enum": [
              "fb-adlibrary.advertiser-ads.list"
            ],
            "type": "string"
          },
          "input": {
            "$ref": "#/components/schemas/FbAdlibraryAdvertiserAdsListInput"
          },
          "network": {
            "$ref": "#/components/schemas/ExecuteNetwork"
          },
          "timeout_ms": {
            "description": "Optional request timeout in milliseconds. Values above the capability timeout are rejected.",
            "maximum": 120000,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "capability",
          "input"
        ],
        "type": "object"
      },
      "FbAdlibraryAdvertiserAdsListInput": {
        "properties": {
          "active": {
            "description": "Filter by active status: all, active, inactive (default: all)",
            "example": "all",
            "type": "string"
          },
          "country": {
            "description": "ISO country code (default: US)",
            "example": "US",
            "type": "string"
          },
          "end_date": {
            "description": "Filter ads with impressions until this date (YYYY-MM-DD)",
            "example": "2025-01-01",
            "type": "string"
          },
          "languages": {
            "description": "Filter by content language codes (e.g. [\"en\"])",
            "example": [
              "en"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "limit": {
            "description": "Maximum number of ads to return (default: 50)",
            "example": 10,
            "type": "integer"
          },
          "max_records": {
            "minimum": 1,
            "type": "integer"
          },
          "media_type": {
            "description": "Filter by media type: all, image, video, meme, none (default: all)",
            "example": "all",
            "type": "string"
          },
          "page_id": {
            "description": "Facebook page ID of the advertiser",
            "example": "15087023444",
            "type": "string"
          },
          "platforms": {
            "description": "Filter by publisher platform: facebook, instagram, messenger, audience_network",
            "example": [
              "facebook"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sort_by": {
            "description": "Sort results: relevance, date, impressions (default: impressions)",
            "example": "date",
            "type": "string"
          },
          "start_date": {
            "description": "Filter ads with impressions from this date (YYYY-MM-DD)",
            "example": "2024-01-01",
            "type": "string"
          }
        },
        "required": [
          "page_id"
        ],
        "type": "object"
      },
      "IdempotencyConflictError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "idempotency_conflict",
                "type": "string"
              },
              "message": {
                "const": "idempotency key has already been used for a different request",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "InternalError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "internal_error",
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "JobBilling": {
        "additionalProperties": false,
        "properties": {
          "credits_charged": {
            "anyOf": [
              {
                "description": "Actual credits charged. Null only when retained historical facts cannot establish the amount.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "credits_per_unit": {
            "anyOf": [
              {
                "description": "Snapshotted price for one billed unit. Zero only for historical free work; null when unknown.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "model": {
            "enum": [
              "per_request",
              "per_record",
              "free",
              "unknown"
            ],
            "type": "string"
          },
          "pricing": {
            "additionalProperties": false,
            "properties": {
              "rule_id": {
                "anyOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "scope": {
                "anyOf": [
                  {
                    "enum": [
                      "module",
                      "platform",
                      "capability"
                    ],
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source": {
                "enum": [
                  "manifest",
                  "price_book"
                ],
                "type": "string"
              },
              "version": {
                "anyOf": [
                  {
                    "minimum": 1,
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "source",
              "scope",
              "version",
              "rule_id"
            ],
            "type": "object"
          },
          "units": {
            "anyOf": [
              {
                "description": "Billed units under the stated model. Null when units do not apply or cannot be established.",
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "model",
          "units",
          "credits_per_unit",
          "credits_charged",
          "pricing"
        ],
        "type": "object"
      },
      "JobErrorObject": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "description": "Machine-readable error code (e.g. forbidden, not_found, invalid_input, upstream_timeout, upstream_error).",
            "type": "string"
          },
          "message": {
            "description": "Human-readable error description.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "JobFailedResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "fb-adlibrary.ad.search",
              "fb-adlibrary.advertiser-ads.list"
            ],
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/JobErrorObject"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "fb-adlibrary"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "results": {
            "type": "null"
          },
          "state": {
            "const": "failed",
            "type": "string"
          },
          "stats": {
            "type": "null"
          },
          "success": {
            "const": false,
            "type": "boolean"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state",
          "success",
          "error",
          "results",
          "stats"
        ],
        "type": "object"
      },
      "JobPendingResponse": {
        "additionalProperties": false,
        "properties": {
          "capability": {
            "enum": [
              "fb-adlibrary.ad.search",
              "fb-adlibrary.advertiser-ads.list"
            ],
            "type": "string"
          },
          "job_id": {
            "format": "uuid",
            "type": "string"
          },
          "platform": {
            "enum": [
              "fb-adlibrary"
            ],
            "type": "string"
          },
          "request_id": {
            "format": "uuid",
            "type": "string"
          },
          "state": {
            "enum": [
              "queued",
              "running",
              "retrying"
            ],
            "type": "string"
          }
        },
        "required": [
          "job_id",
          "request_id",
          "platform",
          "capability",
          "state"
        ],
        "type": "object"
      },
      "JobStats": {
        "additionalProperties": false,
        "properties": {
          "duration_ms": {
            "anyOf": [
              {
                "minimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "failed": {
            "const": 0,
            "type": "integer"
          },
          "passed": {
            "const": 1,
            "type": "integer"
          },
          "total": {
            "const": 1,
            "type": "integer"
          }
        },
        "required": [
          "total",
          "passed",
          "failed",
          "duration_ms"
        ],
        "type": "object"
      },
      "NotFoundError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "not_found",
                "type": "string"
              },
              "message": {
                "const": "job not found",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "QuotaError": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "error": {
                "additionalProperties": false,
                "properties": {
                  "code": {
                    "const": "account_inactive",
                    "type": "string"
                  },
                  "message": {
                    "const": "an active paid account is required",
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              }
            },
            "required": [
              "error"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "error": {
                "additionalProperties": false,
                "properties": {
                  "code": {
                    "const": "quota_exhausted",
                    "type": "string"
                  },
                  "message": {
                    "const": "request quota exhausted for current billing period",
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              }
            },
            "required": [
              "error"
            ],
            "type": "object"
          }
        ]
      },
      "RateLimitError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "rate_limited",
                "type": "string"
              },
              "message": {
                "const": "rate limit exceeded",
                "type": "string"
              },
              "retry_after_ms": {
                "description": "Milliseconds until the rolling window resets enough to retry. The `retry-after` response header carries the same value rounded up to seconds.",
                "minimum": 0,
                "type": "integer"
              }
            },
            "required": [
              "code",
              "message",
              "retry_after_ms"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "UnauthorizedError": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "const": "unauthorized",
                "type": "string"
              },
              "message": {
                "enum": [
                  "authentication required",
                  "invalid bearer token",
                  "missing bearer token"
                ],
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "ValidationErrors": {
        "additionalProperties": false,
        "properties": {
          "errors": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "object"
          }
        },
        "required": [
          "errors"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "bearerFormat": "API Key",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Scrapes public Facebook Ad Library data including ad search by keyword and advertiser ad listings with full filter support.\nThis spec includes only the live `Facebook Ad Library` capabilities exposed by Upscrape.\nExecution uses the generic `POST /execute` endpoint and job polling uses `GET /jobs/{id}`.\nSupported capabilities: `fb-adlibrary.ad.search`, `fb-adlibrary.advertiser-ads.list`\n## Rate limiting\n\nRequests are rate-limited per API key at **1200 requests per minute** on a rolling window. Every response includes `x-ratelimit-limit`, `x-ratelimit-remaining`, and `x-ratelimit-reset` (Unix ms) headers so clients can self-pace. When the limit is exceeded the API returns `429` with a `rate_limited` error body and a `retry-after` header in seconds plus a `retry_after_ms` field on the body for finer-grained backoff.",
    "title": "Facebook Ad Library API",
    "version": "v0.4.5"
  },
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "openapi": "3.1.0",
  "paths": {
    "/execute": {
      "post": {
        "description": "All executions are asynchronous. Submit a capability-specific payload to `POST /execute`, then poll the returned `job_id`.",
        "operationId": "fb-adlibrary_execute",
        "parameters": [
          {
            "description": "Optional idempotency key. Reusing the same key with the same request replays the original job.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "description": "Request synchronous completion. Use `wait=N` to hold the connection up to N seconds (max 300). If the job completes within the window, the response is `200` with full results (same shape as `GET /jobs/{id}`). If not, the response is the normal `202` with a `job_id` for polling. Omit this header for default asynchronous behavior.",
            "examples": {
              "wait30": {
                "summary": "Wait up to 30 seconds",
                "value": "wait=30"
              },
              "wait5": {
                "summary": "Wait up to 5 seconds",
                "value": "wait=5"
              }
            },
            "in": "header",
            "name": "Prefer",
            "required": false,
            "schema": {
              "example": "wait=30",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "capability": "fb-adlibrary.ad.search",
                "input": {
                  "country": "US",
                  "limit": 5,
                  "query": "nike"
                }
              },
              "schema": {
                "discriminator": {
                  "mapping": {
                    "fb-adlibrary.ad.search": "#/components/schemas/FbAdlibraryAdSearchExecuteRequest",
                    "fb-adlibrary.advertiser-ads.list": "#/components/schemas/FbAdlibraryAdvertiserAdsListExecuteRequest"
                  },
                  "propertyName": "capability"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/FbAdlibraryAdSearchExecuteRequest"
                  },
                  {
                    "$ref": "#/components/schemas/FbAdlibraryAdvertiserAdsListExecuteRequest"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/FbAdlibraryAdSearchCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/FbAdlibraryAdvertiserAdsListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/ExecuteReplayResponse"
                    },
                    {
                      "$ref": "#/components/schemas/JobFailedResponse"
                    }
                  ]
                }
              }
            },
            "description": "Job completed within the `Prefer: wait` window, or existing job replayed via idempotency key.",
            "headers": {
              "Preference-Applied": {
                "description": "Present when the server honored the `Prefer: wait` preference.",
                "schema": {
                  "example": "wait=30",
                  "type": "string"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "capability": "fb-adlibrary.ad.search",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "fb-adlibrary",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "queued",
                  "success": false
                },
                "schema": {
                  "$ref": "#/components/schemas/ExecuteAcceptedResponse"
                }
              }
            },
            "description": "Job accepted and queued.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description": "Unauthorized"
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaError"
                }
              }
            },
            "description": "The authenticated account cannot execute the request."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdempotencyConflictError"
                }
              }
            },
            "description": "Idempotency conflict"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ValidationErrors"
                    },
                    {
                      "$ref": "#/components/schemas/CredentialsRequiredError"
                    }
                  ]
                }
              }
            },
            "description": "The request body failed validation."
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "rate_limited",
                    "message": "rate limit exceeded",
                    "retry_after_ms": 4200
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            },
            "description": "The per-API-key rate limit has been exceeded. Clients should back off until `retry_after_ms` has elapsed (or `retry-after` seconds).",
            "headers": {
              "retry-after": {
                "description": "Seconds until the client may retry (ceiling of `retry_after_ms`).",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "description": "Unexpected server error"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Queue a Facebook Ad Library capability run",
        "tags": [
          "Execution"
        ]
      }
    },
    "/jobs/{id}": {
      "get": {
        "description": "Get job status and result",
        "operationId": "fb-adlibrary_getJob",
        "parameters": [
          {
            "description": "The job ID returned by `POST /execute`.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/FbAdlibraryAdSearchCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/FbAdlibraryAdvertiserAdsListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/JobFailedResponse"
                    }
                  ]
                }
              }
            },
            "description": "Completed or terminal job state.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "capability": "fb-adlibrary.ad.search",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "fb-adlibrary",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "running",
                  "success": false
                },
                "schema": {
                  "$ref": "#/components/schemas/JobPendingResponse"
                }
              }
            },
            "description": "Job is still queued, running, or retrying.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            },
            "description": "Job not found"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "rate_limited",
                    "message": "rate limit exceeded",
                    "retry_after_ms": 4200
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            },
            "description": "The per-API-key rate limit has been exceeded. Clients should back off until `retry_after_ms` has elapsed (or `retry-after` seconds).",
            "headers": {
              "retry-after": {
                "description": "Seconds until the client may retry (ceiling of `retry_after_ms`).",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Poll a Facebook Ad Library job",
        "tags": [
          "Jobs"
        ]
      }
    },
    "/jobs/{id}/result": {
      "get": {
        "description": "Backward-compatible alias for `/jobs/{id}`.",
        "operationId": "fb-adlibrary_getJobResult",
        "parameters": [
          {
            "description": "The job ID returned by `POST /execute`.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/FbAdlibraryAdSearchCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/FbAdlibraryAdvertiserAdsListCompletedJob"
                    },
                    {
                      "$ref": "#/components/schemas/JobFailedResponse"
                    }
                  ]
                }
              }
            },
            "description": "Completed or terminal job state.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "202": {
            "content": {
              "application/json": {
                "example": {
                  "capability": "fb-adlibrary.ad.search",
                  "job_id": "00000000-0000-0000-0000-000000000001",
                  "platform": "fb-adlibrary",
                  "request_id": "00000000-0000-0000-0000-000000000001",
                  "state": "running",
                  "success": false
                },
                "schema": {
                  "$ref": "#/components/schemas/JobPendingResponse"
                }
              }
            },
            "description": "Job is still queued, running, or retrying.",
            "headers": {
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            },
            "description": "Job not found"
          },
          "429": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "rate_limited",
                    "message": "rate limit exceeded",
                    "retry_after_ms": 4200
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/RateLimitError"
                }
              }
            },
            "description": "The per-API-key rate limit has been exceeded. Clients should back off until `retry_after_ms` has elapsed (or `retry-after` seconds).",
            "headers": {
              "retry-after": {
                "description": "Seconds until the client may retry (ceiling of `retry_after_ms`).",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-limit": {
                "description": "Per-API-key request ceiling over the rolling window.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-remaining": {
                "description": "Requests remaining in the current window before throttling.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              },
              "x-ratelimit-reset": {
                "description": "Unix epoch milliseconds at which the current window resets.",
                "schema": {
                  "minimum": 0,
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "summary": "Poll a Facebook Ad Library job",
        "tags": [
          "Jobs"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://data.upscrape.com"
    }
  ],
  "tags": [
    {
      "description": "Submit asynchronous capability runs.",
      "name": "Execution"
    },
    {
      "description": "Poll queued jobs for status and results.",
      "name": "Jobs"
    }
  ]
}