Yandex Direct API v5
Essentials
Base URLs
| Environment |
JSON Endpoint |
SOAP Endpoint |
| Production |
https://api.direct.yandex.com/json/v5/{service} |
https://api.direct.yandex.com/v5/{service} |
| Sandbox |
https://api-sandbox.direct.yandex.com/json/v5/{service} |
https://api-sandbox.direct.yandex.com/v5/{service} |
| Reports |
https://api.direct.yandex.com/json/v5/reports |
Same pattern |
| Reports (sandbox) |
https://api-sandbox.direct.yandex.com/json/v5/reports |
Same pattern |
Authentication
All requests require an OAuth token in the Authorization header.
Required Headers (every request):
| Header |
Value |
Required |
Authorization |
Bearer YOUR_OAUTH_TOKEN |
Always |
Content-Type |
application/json; charset=utf-8 |
Always |
Accept-Language |
ru or en |
Recommended |
Client-Login |
client_login |
Agency accounts only |
Getting an OAuth Token:
- Register app at https://oauth.yandex.ru/client/new with
direct:api permission
- Get token:
https://oauth.yandex.ru/authorize?response_type=token&client_id=YOUR_CLIENT_ID
- Token appears in redirect URL:
#access_token=TOKEN&token_type=bearer&expires_in=31536000
- Token is valid for 1 year
Quick token setup:
bash scripts/get_token.sh --client-id YOUR_CLIENT_ID
Request Format (JSON)
Every API request (except Reports) follows this JSON structure:
{
"method": "get|add|update|delete|suspend|resume|archive|unarchive|...",
"params": {
"SelectionCriteria": { ... },
"FieldNames": ["Id", "Name", ...],
"Page": { "Limit": 10000, "Offset": 0 }
}
}
Key patterns:
SelectionCriteria -- filter which objects to return (Ids, CampaignIds, States, Statuses, Types, etc.)
FieldNames -- which fields to include in the response
Page -- pagination: Limit (max 10000) and Offset
add methods use an array of objects (e.g., "Campaigns": [...])
update methods use an array of objects with Id field
delete methods use SelectionCriteria with Ids array
Response Format
{
"result": {
"Campaigns": [ ... ],
"LimitedBy": 10000
}
}
LimitedBy appears when there are more objects than returned (need pagination)
Error response:
{
"error": {
"error_code": 53,
"error_string": "Authorization error",
"error_detail": "Token not found or expired"
}
}
Units (API Points) System
Every response includes the Units HTTP header: Units: spent/remaining/daily_limit
Example: Units: 10/20828/64000 means 10 points spent, 20828 remaining, 64000 daily limit.
| Rule |
Detail |
| Daily limit |
Individual per advertiser, based on campaign activity |
| Refresh |
Points awarded every 60 minutes (sliding 24h window) |
| Per period |
1/24 of daily limit per hour + unspent from previous 23 hours |
| Concurrent requests |
Max 5 simultaneous requests per advertiser |
| Error cost |
20 points per error (except server errors) |
| Minimum daily limit |
~64,000 points for active accounts |
| Agency |
Points deducted from advertiser by default; agency can opt to use own points |
Common Error Codes
| Code |
Meaning |
Action |
| 53 |
Authorization error |
Check token validity |
| 152 |
Insufficient points |
Wait for points refresh (hourly) |
| 1000 |
Concurrent request limit |
Reduce parallel requests |
| 1001 |
Operation limit exceeded |
Reduce batch size |
| 1002 |
Invalid token |
Reauthorize, get new token |
| 2000 |
Unknown error |
Retry after delay |
| 8800 |
Object limit per request |
Reduce batch size |
| 9000 |
Insufficient units |
Wait for daily limit refresh |
Sandbox
- Completely isolated from production data
- No web interface -- API only
- Same restrictions as live API
- Reports limited to one campaign per request
- Data deleted after 1 month of inactivity
- Roles: Advertiser or Agency (with 3 test clients)
- Use
YANDEX_DIRECT_SANDBOX=true in config or set base URL to api-sandbox.direct.yandex.com
Configuration
The skill uses config/.env for credentials:
# Required
YANDEX_DIRECT_TOKEN=your_oauth_token
# Optional: sandbox mode
YANDEX_DIRECT_SANDBOX=true
# Optional: agency client login
YANDEX_DIRECT_CLIENT_LOGIN=client_login
Scripts
IMPORTANT: Always run scripts with bash prefix and absolute paths from the skill directory. Scripts use bash-specific features and will not work if sourced from zsh. Do NOT source scripts/common.sh directly — use the wrapper scripts below.
check_connection.sh
Verify API token and list available campaigns.
bash scripts/check_connection.sh
campaigns.sh
Manage campaigns: list, get details, stats, suspend/resume/archive.
# List all campaigns
bash scripts/campaigns.sh --action list
# List only active campaigns
bash scripts/campaigns.sh --action list --states ON
# Get full campaign details
bash scripts/campaigns.sh --action get --ids 12345678
# Get campaign funds/spend info
bash scripts/campaigns.sh --action stats --ids 12345678
# Suspend a campaign
bash scripts/campaigns.sh --action suspend --ids 12345678
# Resume a campaign
bash scripts/campaigns.sh --action resume --ids 12345678
| Param |
Description |
--action, -a |
list, get, stats, suspend, resume, archive, unarchive |
--ids, -i |
Comma-separated campaign IDs |
--states, -s |
Filter: ON, OFF, SUSPENDED, ENDED, ARCHIVED |
--limit, -l |
Max results (default: 100) |
ads.sh
Manage ads: list, get details, suspend/resume/moderate/archive.
# List ads by campaign
bash scripts/ads.sh --action list --campaign-ids 12345678
# List ads by ad group
bash scripts/ads.sh --action list --adgroup-ids 987654
# Get specific ad details
bash scripts/ads.sh --action get --ad-ids 111222333
# Suspend an ad
bash scripts/ads.sh --action suspend --ad-ids 111222333
| Param |
Description |
--action, -a |
list, get, suspend, resume, moderate, archive |
--campaign-ids |
Filter by campaign IDs |
--adgroup-ids |
Filter by ad group IDs |
--ad-ids |
Specific ad IDs |
--limit, -l |
Max results (default: 1000) |
keywords.sh
Manage keywords and autotargeting.
# List keywords by campaign
bash scripts/keywords.sh --action list --campaign-ids 12345678
# List keywords by ad group
bash scripts/keywords.sh --action list --adgroup-ids 987654
# Suspend keywords
bash scripts/keywords.sh --action suspend --ids 111,222,333
reports.sh
Pull statistics reports (campaign, ad group, ad, keyword level).
# Campaign performance (last 30 days)
bash scripts/reports.sh
# Campaign performance for custom date range
bash scripts/reports.sh --date-range CUSTOM_DATE --date-from 2026-01-01 --date-to 2026-01-31
# Ad-level performance
bash scripts/reports.sh --type AD_PERFORMANCE_REPORT \
--fields "AdId,AdGroupId,Impressions,Clicks,Ctr,AvgCpc,Cost"
# Keyword/criteria performance with filter
bash scripts/reports.sh --type CRITERIA_PERFORMANCE_REPORT \
--fields "CriteriaType,Criteria,Impressions,Clicks,Ctr,AvgCpc,Cost" \
--filter '{"Field":"CampaignId","Operator":"EQUALS","Values":["12345678"]}'
# Demographics (age/gender)
bash scripts/reports.sh --type CAMPAIGN_PERFORMANCE_REPORT \
--fields "Age,Gender,Impressions,Clicks,Ctr,Cost"
# Search queries report
bash scripts/reports.sh --type SEARCH_QUERY_PERFORMANCE_REPORT \
--fields "Query,Impressions,Clicks,Ctr,Cost"
# Save report to file
bash scripts/reports.sh --output report.tsv
# Predefined date ranges
bash scripts/reports.sh --date-range YESTERDAY
bash scripts/reports.sh --date-range LAST_7_DAYS
bash scripts/reports.sh --date-range THIS_MONTH
| Param |
Default |
Description |
--type, -t |
CAMPAIGN_PERFORMANCE_REPORT |
Report type (see below) |
--date-range, -r |
LAST_30_DAYS |
Date range preset |
--date-from |
— |
Start date for CUSTOM_DATE |
--date-to |
— |
End date for CUSTOM_DATE |
--fields, -f |
CampaignName,Impressions,Clicks,Ctr,AvgCpc,Cost |
Fields |
--filter |
— |
Filter JSON |
--output, -o |
stdout |
Save to file |
--name, -n |
auto-generated |
Report name |
Report types: ACCOUNT_PERFORMANCE_REPORT, CAMPAIGN_PERFORMANCE_REPORT, ADGROUP_PERFORMANCE_REPORT, AD_PERFORMANCE_REPORT, CRITERIA_PERFORMANCE_REPORT, SEARCH_QUERY_PERFORMANCE_REPORT, CUSTOM_REPORT
Date ranges: TODAY, YESTERDAY, LAST_3_DAYS, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_90_DAYS, THIS_MONTH, LAST_MONTH, ALL_TIME, CUSTOM_DATE
dictionaries.sh
Get reference data (regions, currencies, etc.).
bash scripts/dictionaries.sh --dict GeoRegions
bash scripts/dictionaries.sh --dict Currencies
Advanced: common.sh functions
For custom API calls not covered by scripts above, use common.sh functions. Must be run inside a bash script (not sourced from zsh):
#!/bin/bash
source /path/to/scripts/common.sh
load_config
response=$(direct_request "campaigns" '{"method":"get","params":{...}}')
All API v5 Services
| Service |
Endpoint Suffix |
Methods |
Purpose |
| Campaigns |
/campaigns |
add, update, delete, get, suspend, resume, archive, unarchive |
Campaign management |
| AdGroups |
/adgroups |
add, update, delete, get |
Ad group management |
| Ads |
/ads |
add, update, delete, get, moderate, suspend, resume, archive, unarchive |
Ad management |
| Keywords |
/keywords |
add, update, delete, get, suspend, resume |
Keyword/autotargeting management |
| BidModifiers |
/bidmodifiers |
add, set, delete, get |
Bid adjustment management |
| KeywordBids |
/keywordbids |
set, setAuto, get |
Keyword bid management |
| AudienceTargets |
/audiencetargets |
add, delete, suspend, resume, get, setBids |
Audience target management |
| RetargetingLists |
/retargetinglists |
add, update, delete, get |
Retargeting list management |
| Sitelinks |
/sitelinks |
add, delete, get |
Sitelink set management |
| AdExtensions |
/adextensions |
add, delete, get |
Callout extension management |
| VCards |
/vcards |
add, delete, get |
Virtual business card management |
| AdImages |
/adimages |
add, delete, get |
Image management |
| AdVideos |
/advideos |
add, get |
Video management |
| Creatives |
/creatives |
add, get |
Creative management |
| Reports |
/reports |
POST (custom) |
Statistics and reporting |
| Dictionaries |
/dictionaries |
get |
Reference data (regions, currencies, etc.) |
| Clients |
/clients |
get, update |
Advertiser account management |
| AgencyClients |
/agencyclients |
add, update, get |
Agency client management |
| Changes |
/changes |
check, checkCampaigns, checkDictionaries |
Change tracking |
| Feeds |
/feeds |
add, update, delete, get |
Product feed management |
| DynamicTextAdTargets |
/dynamictextadtargets |
add, delete, get, resume, setBids, suspend |
Dynamic ad targeting |
| SmartAdTargets |
/smartadtargets |
add, update, delete, get, resume, setBids, suspend |
Smart banner targeting |
| TurboPages |
/turbopages |
get |
Turbo page parameters |
| Businesses |
/businesses |
get |
Business profile data |
| Strategies |
/strategies |
add, update, get, archive, unarchive |
Portfolio strategy management |
| NegativeKeywordSharedSets |
/negativekeywordsharedsets |
add, update, delete, get |
Shared negative keyword sets |
| KeywordsResearch |
/keywordsresearch |
hasSearchVolume, deduplicate |
Keyword preprocessing |
| Leads |
/leads |
get |
Turbo page form submissions |
| Bids |
/bids |
set, setAuto, get |
Bid management (legacy) |
Detailed References
Read the reference file matching the area you need:
- Campaign Management (Campaigns, AdGroups, Ads, Keywords, BidModifiers, KeywordBids) -- references/campaigns.md
- Targeting (AudienceTargets, RetargetingLists, DynamicTextAdTargets, SmartAdTargets) -- references/targeting.md
- Extensions (Sitelinks, AdExtensions, VCards, AdImages, AdVideos, Creatives) -- references/extensions.md
- Reports (Report service, report types, field names, date ranges, filters, headers) -- references/reports.md
- Other Services (Dictionaries, Changes, Clients, AgencyClients, Feeds, Strategies, NegativeKeywordSharedSets, TurboPages, Businesses, Leads, KeywordsResearch) -- references/other-services.md
- Common Use Cases (bash script examples for frequent tasks) -- references/use-cases.md
Guidelines
- Always verify the token is valid before batch operations:
bash scripts/check_connection.sh
- Use
Page.Limit and Page.Offset for paginating through large result sets (max 10000 per request)
- Request only the
FieldNames you actually need to save API points
- Use the
Changes service to detect modifications before re-downloading all data
- For reports, use
processingMode: auto and handle both 200 (ready) and 201/202 (pending) HTTP status codes
- Set
returnMoneyInMicros: false in report headers to get human-readable monetary values
- For agency accounts, always include the
Client-Login header
- Max 5 concurrent requests per advertiser -- queue or throttle your requests
- Use sandbox (
api-sandbox.direct.yandex.com) for development and testing
- Store tokens securely in
config/.env (file is gitignored)
- For monetary values in standard API requests/responses: amounts are in micros (multiplied by 1,000,000)
- For monetary values in reports: use
returnMoneyInMicros: false header to get human-readable values, or divide by 1,000,000
1---2name: yandex-direct3description: Manage Yandex Direct campaigns, ads, keywords, bids, reports via API v5. Use when the user needs to work with Yandex Direct API — campaign management, ad groups, ads, keywords, bids, targeting, reports, statistics, dictionaries, or any other Yandex Direct API operation. Triggers: Yandex Direct, Direct API, campaigns API, ad management API, keyword bids, Yandex advertising API, Direct reports, Direct statistics.4---56# Yandex Direct API v578## Essentials910### Base URLs1112| Environment | JSON Endpoint | SOAP Endpoint |13|-------------|--------------|---------------|14| **Production** | `https://api.direct.yandex.com/json/v5/{service}` | `https://api.direct.yandex.com/v5/{service}` |15| **Sandbox** | `https://api-sandbox.direct.yandex.com/json/v5/{service}` | `https://api-sandbox.direct.yandex.com/v5/{service}` |16| **Reports** | `https://api.direct.yandex.com/json/v5/reports` | Same pattern |17| **Reports (sandbox)** | `https://api-sandbox.direct.yandex.com/json/v5/reports` | Same pattern |1819### Authentication2021All requests require an OAuth token in the `Authorization` header.2223**Required Headers (every request):**2425| Header | Value | Required |26|--------|-------|----------|27| `Authorization` | `Bearer YOUR_OAUTH_TOKEN` | Always |28| `Content-Type` | `application/json; charset=utf-8` | Always |29| `Accept-Language` | `ru` or `en` | Recommended |30| `Client-Login` | `client_login` | Agency accounts only |3132**Getting an OAuth Token:**33341. Register app at https://oauth.yandex.ru/client/new with `direct:api` permission352. Get token: `https://oauth.yandex.ru/authorize?response_type=token&client_id=YOUR_CLIENT_ID`363. Token appears in redirect URL: `#access_token=TOKEN&token_type=bearer&expires_in=31536000`374. Token is valid for 1 year3839**Quick token setup:**4041```bash42bash scripts/get_token.sh --client-id YOUR_CLIENT_ID43```4445### Request Format (JSON)4647Every API request (except Reports) follows this JSON structure:4849```json50{51 "method": "get|add|update|delete|suspend|resume|archive|unarchive|...",52 "params": {53 "SelectionCriteria": { ... },54 "FieldNames": ["Id", "Name", ...],55 "Page": { "Limit": 10000, "Offset": 0 }56 }57}58```5960**Key patterns:**6162- `SelectionCriteria` -- filter which objects to return (Ids, CampaignIds, States, Statuses, Types, etc.)63- `FieldNames` -- which fields to include in the response64- `Page` -- pagination: `Limit` (max 10000) and `Offset`65- `add` methods use an array of objects (e.g., `"Campaigns": [...]`)66- `update` methods use an array of objects with `Id` field67- `delete` methods use `SelectionCriteria` with `Ids` array6869### Response Format7071```json72{73 "result": {74 "Campaigns": [ ... ],75 "LimitedBy": 1000076 }77}78```7980- `LimitedBy` appears when there are more objects than returned (need pagination)8182**Error response:**8384```json85{86 "error": {87 "error_code": 53,88 "error_string": "Authorization error",89 "error_detail": "Token not found or expired"90 }91}92```9394### Units (API Points) System9596Every response includes the `Units` HTTP header: `Units: spent/remaining/daily_limit`9798Example: `Units: 10/20828/64000` means 10 points spent, 20828 remaining, 64000 daily limit.99100| Rule | Detail |101|------|--------|102| Daily limit | Individual per advertiser, based on campaign activity |103| Refresh | Points awarded every 60 minutes (sliding 24h window) |104| Per period | 1/24 of daily limit per hour + unspent from previous 23 hours |105| Concurrent requests | Max **5** simultaneous requests per advertiser |106| Error cost | 20 points per error (except server errors) |107| Minimum daily limit | ~64,000 points for active accounts |108| Agency | Points deducted from advertiser by default; agency can opt to use own points |109110### Common Error Codes111112| Code | Meaning | Action |113|------|---------|--------|114| 53 | Authorization error | Check token validity |115| 152 | Insufficient points | Wait for points refresh (hourly) |116| 1000 | Concurrent request limit | Reduce parallel requests |117| 1001 | Operation limit exceeded | Reduce batch size |118| 1002 | Invalid token | Reauthorize, get new token |119| 2000 | Unknown error | Retry after delay |120| 8800 | Object limit per request | Reduce batch size |121| 9000 | Insufficient units | Wait for daily limit refresh |122123### Sandbox124125- Completely isolated from production data126- No web interface -- API only127- Same restrictions as live API128- Reports limited to one campaign per request129- Data deleted after 1 month of inactivity130- Roles: Advertiser or Agency (with 3 test clients)131- Use `YANDEX_DIRECT_SANDBOX=true` in config or set base URL to `api-sandbox.direct.yandex.com`132133### Configuration134135The skill uses `config/.env` for credentials:136137```bash138# Required139YANDEX_DIRECT_TOKEN=your_oauth_token140141# Optional: sandbox mode142YANDEX_DIRECT_SANDBOX=true143144# Optional: agency client login145YANDEX_DIRECT_CLIENT_LOGIN=client_login146```147148## Scripts149150**IMPORTANT:** Always run scripts with `bash` prefix and **absolute paths** from the skill directory. Scripts use bash-specific features and will not work if sourced from zsh. Do NOT `source scripts/common.sh` directly — use the wrapper scripts below.151152### check_connection.sh153Verify API token and list available campaigns.154```bash155bash scripts/check_connection.sh156```157158### campaigns.sh159Manage campaigns: list, get details, stats, suspend/resume/archive.160```bash161# List all campaigns162bash scripts/campaigns.sh --action list163164# List only active campaigns165bash scripts/campaigns.sh --action list --states ON166167# Get full campaign details168bash scripts/campaigns.sh --action get --ids 12345678169170# Get campaign funds/spend info171bash scripts/campaigns.sh --action stats --ids 12345678172173# Suspend a campaign174bash scripts/campaigns.sh --action suspend --ids 12345678175176# Resume a campaign177bash scripts/campaigns.sh --action resume --ids 12345678178```179180| Param | Description |181|-------|-------------|182| `--action, -a` | list, get, stats, suspend, resume, archive, unarchive |183| `--ids, -i` | Comma-separated campaign IDs |184| `--states, -s` | Filter: ON, OFF, SUSPENDED, ENDED, ARCHIVED |185| `--limit, -l` | Max results (default: 100) |186187### ads.sh188Manage ads: list, get details, suspend/resume/moderate/archive.189```bash190# List ads by campaign191bash scripts/ads.sh --action list --campaign-ids 12345678192193# List ads by ad group194bash scripts/ads.sh --action list --adgroup-ids 987654195196# Get specific ad details197bash scripts/ads.sh --action get --ad-ids 111222333198199# Suspend an ad200bash scripts/ads.sh --action suspend --ad-ids 111222333201```202203| Param | Description |204|-------|-------------|205| `--action, -a` | list, get, suspend, resume, moderate, archive |206| `--campaign-ids` | Filter by campaign IDs |207| `--adgroup-ids` | Filter by ad group IDs |208| `--ad-ids` | Specific ad IDs |209| `--limit, -l` | Max results (default: 1000) |210211### keywords.sh212Manage keywords and autotargeting.213```bash214# List keywords by campaign215bash scripts/keywords.sh --action list --campaign-ids 12345678216217# List keywords by ad group218bash scripts/keywords.sh --action list --adgroup-ids 987654219220# Suspend keywords221bash scripts/keywords.sh --action suspend --ids 111,222,333222```223224### reports.sh225Pull statistics reports (campaign, ad group, ad, keyword level).226```bash227# Campaign performance (last 30 days)228bash scripts/reports.sh229230# Campaign performance for custom date range231bash scripts/reports.sh --date-range CUSTOM_DATE --date-from 2026-01-01 --date-to 2026-01-31232233# Ad-level performance234bash scripts/reports.sh --type AD_PERFORMANCE_REPORT \235 --fields "AdId,AdGroupId,Impressions,Clicks,Ctr,AvgCpc,Cost"236237# Keyword/criteria performance with filter238bash scripts/reports.sh --type CRITERIA_PERFORMANCE_REPORT \239 --fields "CriteriaType,Criteria,Impressions,Clicks,Ctr,AvgCpc,Cost" \240 --filter '{"Field":"CampaignId","Operator":"EQUALS","Values":["12345678"]}'241242# Demographics (age/gender)243bash scripts/reports.sh --type CAMPAIGN_PERFORMANCE_REPORT \244 --fields "Age,Gender,Impressions,Clicks,Ctr,Cost"245246# Search queries report247bash scripts/reports.sh --type SEARCH_QUERY_PERFORMANCE_REPORT \248 --fields "Query,Impressions,Clicks,Ctr,Cost"249250# Save report to file251bash scripts/reports.sh --output report.tsv252253# Predefined date ranges254bash scripts/reports.sh --date-range YESTERDAY255bash scripts/reports.sh --date-range LAST_7_DAYS256bash scripts/reports.sh --date-range THIS_MONTH257```258259| Param | Default | Description |260|-------|---------|-------------|261| `--type, -t` | CAMPAIGN_PERFORMANCE_REPORT | Report type (see below) |262| `--date-range, -r` | LAST_30_DAYS | Date range preset |263| `--date-from` | — | Start date for CUSTOM_DATE |264| `--date-to` | — | End date for CUSTOM_DATE |265| `--fields, -f` | CampaignName,Impressions,Clicks,Ctr,AvgCpc,Cost | Fields |266| `--filter` | — | Filter JSON |267| `--output, -o` | stdout | Save to file |268| `--name, -n` | auto-generated | Report name |269270Report types: ACCOUNT_PERFORMANCE_REPORT, CAMPAIGN_PERFORMANCE_REPORT, ADGROUP_PERFORMANCE_REPORT, AD_PERFORMANCE_REPORT, CRITERIA_PERFORMANCE_REPORT, SEARCH_QUERY_PERFORMANCE_REPORT, CUSTOM_REPORT271272Date ranges: TODAY, YESTERDAY, LAST_3_DAYS, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_90_DAYS, THIS_MONTH, LAST_MONTH, ALL_TIME, CUSTOM_DATE273274### dictionaries.sh275Get reference data (regions, currencies, etc.).276```bash277bash scripts/dictionaries.sh --dict GeoRegions278bash scripts/dictionaries.sh --dict Currencies279```280281### Advanced: common.sh functions282283For custom API calls not covered by scripts above, use `common.sh` functions. **Must be run inside a bash script** (not sourced from zsh):284285```bash286#!/bin/bash287source /path/to/scripts/common.sh288load_config289response=$(direct_request "campaigns" '{"method":"get","params":{...}}')290```291292## All API v5 Services293294| Service | Endpoint Suffix | Methods | Purpose |295|---------|----------------|---------|---------|296| **Campaigns** | `/campaigns` | add, update, delete, get, suspend, resume, archive, unarchive | Campaign management |297| **AdGroups** | `/adgroups` | add, update, delete, get | Ad group management |298| **Ads** | `/ads` | add, update, delete, get, moderate, suspend, resume, archive, unarchive | Ad management |299| **Keywords** | `/keywords` | add, update, delete, get, suspend, resume | Keyword/autotargeting management |300| **BidModifiers** | `/bidmodifiers` | add, set, delete, get | Bid adjustment management |301| **KeywordBids** | `/keywordbids` | set, setAuto, get | Keyword bid management |302| **AudienceTargets** | `/audiencetargets` | add, delete, suspend, resume, get, setBids | Audience target management |303| **RetargetingLists** | `/retargetinglists` | add, update, delete, get | Retargeting list management |304| **Sitelinks** | `/sitelinks` | add, delete, get | Sitelink set management |305| **AdExtensions** | `/adextensions` | add, delete, get | Callout extension management |306| **VCards** | `/vcards` | add, delete, get | Virtual business card management |307| **AdImages** | `/adimages` | add, delete, get | Image management |308| **AdVideos** | `/advideos` | add, get | Video management |309| **Creatives** | `/creatives` | add, get | Creative management |310| **Reports** | `/reports` | POST (custom) | Statistics and reporting |311| **Dictionaries** | `/dictionaries` | get | Reference data (regions, currencies, etc.) |312| **Clients** | `/clients` | get, update | Advertiser account management |313| **AgencyClients** | `/agencyclients` | add, update, get | Agency client management |314| **Changes** | `/changes` | check, checkCampaigns, checkDictionaries | Change tracking |315| **Feeds** | `/feeds` | add, update, delete, get | Product feed management |316| **DynamicTextAdTargets** | `/dynamictextadtargets` | add, delete, get, resume, setBids, suspend | Dynamic ad targeting |317| **SmartAdTargets** | `/smartadtargets` | add, update, delete, get, resume, setBids, suspend | Smart banner targeting |318| **TurboPages** | `/turbopages` | get | Turbo page parameters |319| **Businesses** | `/businesses` | get | Business profile data |320| **Strategies** | `/strategies` | add, update, get, archive, unarchive | Portfolio strategy management |321| **NegativeKeywordSharedSets** | `/negativekeywordsharedsets` | add, update, delete, get | Shared negative keyword sets |322| **KeywordsResearch** | `/keywordsresearch` | hasSearchVolume, deduplicate | Keyword preprocessing |323| **Leads** | `/leads` | get | Turbo page form submissions |324| **Bids** | `/bids` | set, setAuto, get | Bid management (legacy) |325326## Detailed References327328Read the reference file matching the area you need:329330- **Campaign Management** (Campaigns, AdGroups, Ads, Keywords, BidModifiers, KeywordBids) -- [references/campaigns.md](references/campaigns.md)331- **Targeting** (AudienceTargets, RetargetingLists, DynamicTextAdTargets, SmartAdTargets) -- [references/targeting.md](references/targeting.md)332- **Extensions** (Sitelinks, AdExtensions, VCards, AdImages, AdVideos, Creatives) -- [references/extensions.md](references/extensions.md)333- **Reports** (Report service, report types, field names, date ranges, filters, headers) -- [references/reports.md](references/reports.md)334- **Other Services** (Dictionaries, Changes, Clients, AgencyClients, Feeds, Strategies, NegativeKeywordSharedSets, TurboPages, Businesses, Leads, KeywordsResearch) -- [references/other-services.md](references/other-services.md)335- **Common Use Cases** (bash script examples for frequent tasks) -- [references/use-cases.md](references/use-cases.md)336337## Guidelines338339- Always verify the token is valid before batch operations: `bash scripts/check_connection.sh`340- Use `Page.Limit` and `Page.Offset` for paginating through large result sets (max 10000 per request)341- Request only the `FieldNames` you actually need to save API points342- Use the `Changes` service to detect modifications before re-downloading all data343- For reports, use `processingMode: auto` and handle both 200 (ready) and 201/202 (pending) HTTP status codes344- Set `returnMoneyInMicros: false` in report headers to get human-readable monetary values345- For agency accounts, always include the `Client-Login` header346- Max 5 concurrent requests per advertiser -- queue or throttle your requests347- Use sandbox (`api-sandbox.direct.yandex.com`) for development and testing348- Store tokens securely in `config/.env` (file is gitignored)349- For monetary values in standard API requests/responses: amounts are in micros (multiplied by 1,000,000)350- For monetary values in reports: use `returnMoneyInMicros: false` header to get human-readable values, or divide by 1,000,000