> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Ads

> Ayrshare GraphQL API के माध्यम से ऑपरेशन्स के एक ही सेट से boosted विज्ञापनों का प्रबंधन करें, जो ads प्लेटफ़ॉर्म को argument के रूप में लेता है।

Ads ऑपरेशन्स ads प्लेटफ़ॉर्म को argument के रूप में लेते हैं, इसलिए वही ऑपरेशन Ayrshare द्वारा समर्थित हर ads प्लेटफ़ॉर्म पर काम करता है। वर्तमान में ये `FACEBOOK` और `INSTAGRAM` हैं।

प्रत्येक ऑपरेशन संबंधित [REST ads endpoint](/docs/apis/ads/overview) को कॉल करता है और उसका response बिना बदलाव के लौटाता है। Authentication और सीमाएँ REST के समान हैं। विफल call एक GraphQL error लौटाती है: `extensions.status` में REST status होता है, और जब REST error में Ayrshare error code हो, तो `extensions.code` में वह code होता है। [त्रुटियाँ](/docs/apis/graphql/errors) देखें। Ads ऑपरेशन्स के लिए Ads ऐड-ऑन की आवश्यकता होती है। इसके बिना, हर call `extensions.status` `403` और `extensions.code` `399` के साथ error लौटाती है।

## ऑपरेशन्स

| ऑपरेशन | प्रकार | REST endpoint |
| - | - | - |
| `adAccounts` | Query | `GET /ads/{platform}/accounts` |
| `adTargetingSearch` | Query | `GET /ads/{platform}/interests`, `/regions` या `/cities` |
| `ads` | Query | `GET /ads/{platform}/ads` |
| `adHistory` | Query | `GET /ads/{platform}/history` |
| `updateAd` | Mutation | `PUT /ads/{platform}/ads` |
| `boostPost` | Mutation | `POST /ads/{platform}/boost` |

हर ऑपरेशन किसी User Profile पर कार्य करने के लिए एक वैकल्पिक `profileKey` भी लेता है। ये सभी REST response को JSON के रूप में लौटाते हैं, इसलिए इनमें कोई फ़ील्ड selection नहीं होता।

## विज्ञापन खाते सूचीबद्ध करें

यहीं से शुरू करें। जहाँ भी कोई ऑपरेशन `accountId` माँगे, वहाँ response में मिले `accountId` मानों का उपयोग करें।

```graphql theme={"system"}
query {
  adAccounts(platform: FACEBOOK, limit: 10)
}
```

## Targeting विकल्प खोजें

`kind` खोज का प्रकार चुनता है: audience targeting के लिए `INTERESTS`, और स्थानों के लिए `REGIONS` या `CITIES`। प्रत्येक kind केवल अपने ही arguments लेता है। उदाहरण के लिए, `countryCode` और `regionId` केवल `CITIES` के साथ काम करते हैं, और `INTERESTS` के लिए `search` आवश्यक है।

```graphql theme={"system"}
query {
  adTargetingSearch(platform: INSTAGRAM, kind: INTERESTS, search: "running")
}
```

```graphql theme={"system"}
query {
  adTargetingSearch(platform: FACEBOOK, kind: CITIES, search: "Austin", countryCode: "US")
}
```

## विज्ञापन सूचीबद्ध करें

`campaignId`, `accountId`, `adId`, `postId` या `socialPostId` में से कम से कम एक पास करें। `socialPostId` नेटवर्क की अपनी post id है, उन पोस्ट के लिए जो Ayrshare के माध्यम से प्रकाशित नहीं की गईं।

```graphql theme={"system"}
query {
  ads(platform: FACEBOOK, accountId: "act_1234567890")
}
```

## देखें कि किसी विज्ञापन पर कितना खर्च हुआ

```graphql theme={"system"}
query {
  adHistory(platform: FACEBOOK, startDate: "2026-09-01", endDate: "2026-09-30")
}
```

## विज्ञापन को रोकें या फिर से शुरू करें

`updateAd` वास्तविक विज्ञापन खर्च को बदलता है। `PAUSED` खर्च रोकता है, `ACTIVE` उसे फिर से शुरू करता है, और `DELETED` या `ARCHIVED` विज्ञापन को समाप्त कर देता है। वही status विज्ञापन के विज्ञापन सेट और अभियान पर भी सेट होता है, इसलिए उस विज्ञापन सेट या अभियान के अन्य सभी विज्ञापन भी उसके साथ बदल जाते हैं। जिस अभियान या विज्ञापन सेट से बूस्ट को `attachTo` के साथ जोड़ा गया था, वह अपना status बनाए रखता है, और विज्ञापन केवल तभी चलता है जब उसके ऊपर का अभियान और विज्ञापन सेट सक्रिय हों।

```graphql theme={"system"}
mutation {
  updateAd(platform: FACEBOOK, adId: "120210000000000000", status: PAUSED)
}
```

<h2 id="boost-a-post">
  पोस्ट बूस्ट करें
</h2>

`boostPost` विज्ञापन खाते से वास्तविक पैसा खर्च करता है। यह किसी प्रकाशित पोस्ट को विज्ञापन में बदल देता है।

* `postId` (Ayrshare post id) या `socialPostId` (नेटवर्क की अपनी post id) पास करें।
* `accountId` को `adAccounts` से प्राप्त करें।
* `budget.amount` विज्ञापन खाते की मुद्रा में होता है। `budget` केवल तभी छोड़ें जब `attachTo.adSetId` विज्ञापन को आपके पहले से चल रहे किसी विज्ञापन सेट में जोड़ता है, जो अपना बजट बनाए रखता है। उस स्थिति में `targeting` भी छोड़ दें: विज्ञापन सेट अपना targeting बनाए रखता है। [किसी मौजूदा अभियान या विज्ञापन सेट में बूस्ट करें](/docs/apis/ads/facebook/boost-post#attach-to) देखें।
* `schedule`, `targeting`, `callToAction`, `attachTo` और `status` वैकल्पिक हैं। यदि आप `status` और `schedule` छोड़ देते हैं, तो विज्ञापन **सक्रिय होता है, अभी शुरू होता है और उसकी कोई समाप्ति तिथि नहीं होती**, इसलिए वह तब तक खर्च करता रहता है जब तक आप उसे रोक नहीं देते। इसे सीमित करने के लिए `status: PAUSED` या `schedule.end` सेट करें।
* जो सेटिंग्स केवल एक प्लेटफ़ॉर्म में होती हैं, उन्हें प्लेटफ़ॉर्म को key बनाकर `platformOptions` के अंतर्गत रखें। Facebook और Instagram पर, वहाँ `adName` और `bidAmount` **आवश्यक** हैं, उदाहरण के लिए `platformOptions: { facebook: { adName: "Autumn sale", bidAmount: 2 } }`। इनके बिना boost एक missing-fields error लौटाता है। `attachTo.adSetId` के साथ `bidAmount` छोड़ दें: विज्ञापन सेट अपनी bid बनाए रखता है।

```graphql theme={"system"}
mutation {
  boostPost(
    platform: FACEBOOK
    accountId: "act_1234567890"
    postId: "RNlSOkyxl9G3EDhlPuCK"
    goal: "engagement"
    budget: { amount: 20, type: DAILY }
    schedule: { start: "2026-10-10T09:00:00Z", end: "2026-10-17T09:00:00Z" }
    targeting: { ageMin: 25, ageMax: 45, locations: { countries: ["US"] } }
    platformOptions: { facebook: { adName: "Autumn sale", bidAmount: 2 } }
    idempotencyKey: "4f9c2a7e-1b3d-4c8e-9a6f-2d5b7e0c1a34"
  )
}
```

कुछ arguments एक से अधिक रूप लेते हैं, इसलिए वे `JSON` type का उपयोग करते हैं:

* `accountId` एक string या number लेता है।
* `schedule` की तिथियाँ ISO 8601 date या date-time लेती हैं, जैसे `"2026-10-10T09:00:00Z"`। number के बजाय इसी रूप का उपयोग करें। `schedule.end` कोई समाप्ति तिथि न होने के लिए `0` भी लेता है।
* स्थान keys एक मान या एक सूची लेती हैं।
* `targeting.interests` ids को strings या numbers के रूप में लेता है।
* `platformOptions` एक object लेता है।

<Tip>
  हर boost के साथ एक नया `idempotencyKey` भेजें, जैसे कोई UUID। यदि कोई call time out हो जाती है या विफल होती है, तो उसी key और उन्हीं arguments के साथ फिर से प्रयास करें।

  * यदि पहला boost पूरा हो चुका था, तो retry दूसरा विज्ञापन बनाने और उसके लिए भुगतान करने के बजाय उसी का response लौटाता है।
  * यदि पहला boost अभी भी प्रगति में है, तो retry `extensions.status` `409` के साथ error लौटाता है। प्रतीक्षा करें, फिर उसी key के साथ फिर से प्रयास करें। नई key पर स्विच न करें।
  * किसी key को अलग arguments के साथ दोबारा उपयोग करने पर भी `409` लौटता है।
</Tip>

विज्ञापन खर्च रोकने के लिए, `status: PAUSED` के साथ `updateAd` को कॉल करें। `boostFacebookPost` और `instagramBoostPost` अब भी काम करते हैं।

प्रति-प्लेटफ़ॉर्म ऑपरेशन्स, जैसे `facebookAdAccounts` और `instagramAds`, अब भी काम करते हैं और अपरिवर्तित हैं।


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.