# Accepted Filter Values Source: https://docs.plyne.ai/api/accepted-filter-values Country code values accepted by API filters. Country filters use ISO 3166-1 alpha-2 country codes. Pass one country, several countries, or an expanded region array. ```json theme={null} { "lead_country_codes": ["US", "GB"], "company_country_codes": ["US"] } ```
```text theme={null} ๐Ÿ‡ฆ๐Ÿ‡ซ Afghanistan โ€” AF ๐Ÿ‡ฆ๐Ÿ‡ฝ ร…land Islands โ€” AX ๐Ÿ‡ฆ๐Ÿ‡ฑ Albania โ€” AL ๐Ÿ‡ฉ๐Ÿ‡ฟ Algeria โ€” DZ ๐Ÿ‡ฆ๐Ÿ‡ธ American Samoa โ€” AS ๐Ÿ‡ฆ๐Ÿ‡ฉ Andorra โ€” AD ๐Ÿ‡ฆ๐Ÿ‡ด Angola โ€” AO ๐Ÿ‡ฆ๐Ÿ‡ฎ Anguilla โ€” AI ๐Ÿ‡ฆ๐Ÿ‡ถ Antarctica โ€” AQ ๐Ÿ‡ฆ๐Ÿ‡ฌ Antigua And Barbuda โ€” AG ๐Ÿ‡ฆ๐Ÿ‡ท Argentina โ€” AR ๐Ÿ‡ฆ๐Ÿ‡ฒ Armenia โ€” AM ๐Ÿ‡ฆ๐Ÿ‡ผ Aruba โ€” AW ๐Ÿ‡ฆ๐Ÿ‡บ Australia โ€” AU ๐Ÿ‡ฆ๐Ÿ‡น Austria โ€” AT ๐Ÿ‡ฆ๐Ÿ‡ฟ Azerbaijan โ€” AZ ๐Ÿ‡ง๐Ÿ‡ธ Bahamas โ€” BS ๐Ÿ‡ง๐Ÿ‡ญ Bahrain โ€” BH ๐Ÿ‡ง๐Ÿ‡ฉ Bangladesh โ€” BD ๐Ÿ‡ง๐Ÿ‡ง Barbados โ€” BB ๐Ÿ‡ง๐Ÿ‡พ Belarus โ€” BY ๐Ÿ‡ง๐Ÿ‡ช Belgium โ€” BE ๐Ÿ‡ง๐Ÿ‡ฟ Belize โ€” BZ ๐Ÿ‡ง๐Ÿ‡ฏ Benin โ€” BJ ๐Ÿ‡ง๐Ÿ‡ฒ Bermuda โ€” BM ๐Ÿ‡ง๐Ÿ‡น Bhutan โ€” BT ๐Ÿ‡ง๐Ÿ‡ด Bolivia, Plurinational State Of โ€” BO ๐Ÿ‡ง๐Ÿ‡ถ Bonaire, Sint Eustatius And Saba โ€” BQ ๐Ÿ‡ง๐Ÿ‡ฆ Bosnia & Herzegovina โ€” BA ๐Ÿ‡ง๐Ÿ‡ผ Botswana โ€” BW ๐Ÿ‡ง๐Ÿ‡ป Bouvet Island โ€” BV ๐Ÿ‡ง๐Ÿ‡ท Brazil โ€” BR ๐Ÿ‡ฎ๐Ÿ‡ด British Indian Ocean Territory โ€” IO ๐Ÿ‡ง๐Ÿ‡ณ Brunei Darussalam โ€” BN ๐Ÿ‡ง๐Ÿ‡ฌ Bulgaria โ€” BG ๐Ÿ‡ง๐Ÿ‡ซ Burkina Faso โ€” BF ๐Ÿ‡ง๐Ÿ‡ฎ Burundi โ€” BI ๐Ÿ‡จ๐Ÿ‡ป Cabo Verde โ€” CV ๐Ÿ‡ฐ๐Ÿ‡ญ Cambodia โ€” KH ๐Ÿ‡จ๐Ÿ‡ฒ Cameroon โ€” CM ๐Ÿ‡จ๐Ÿ‡ฆ Canada โ€” CA ๐Ÿ‡ฐ๐Ÿ‡พ Cayman Islands โ€” KY ๐Ÿ‡จ๐Ÿ‡ซ Central African Republic โ€” CF ๐Ÿ‡น๐Ÿ‡ฉ Chad โ€” TD ๐Ÿ‡จ๐Ÿ‡ฑ Chile โ€” CL ๐Ÿ‡จ๐Ÿ‡ณ China โ€” CN ๐Ÿ‡จ๐Ÿ‡ฝ Christmas Island โ€” CX ๐Ÿ‡จ๐Ÿ‡จ Cocos (Keeling) Islands โ€” CC ๐Ÿ‡จ๐Ÿ‡ด Colombia โ€” CO ๐Ÿ‡ฐ๐Ÿ‡ฒ Comoros โ€” KM ๐Ÿ‡จ๐Ÿ‡ฐ Cook Islands โ€” CK ๐Ÿ‡จ๐Ÿ‡ท Costa Rica โ€” CR ๐Ÿ‡จ๐Ÿ‡ฎ Cรดte d'Ivoire โ€” CI ๐Ÿ‡ญ๐Ÿ‡ท Croatia โ€” HR ๐Ÿ‡จ๐Ÿ‡บ Cuba โ€” CU ๐Ÿ‡จ๐Ÿ‡ผ Curacao โ€” CW ๐Ÿ‡จ๐Ÿ‡พ Cyprus โ€” CY ๐Ÿ‡จ๐Ÿ‡ฟ Czech Republic โ€” CZ ๐Ÿ‡จ๐Ÿ‡ฉ Democratic Republic Of Congo โ€” CD ๐Ÿ‡ฉ๐Ÿ‡ฐ Denmark โ€” DK ๐Ÿ‡ฉ๐Ÿ‡ฏ Djibouti โ€” DJ ๐Ÿ‡ฉ๐Ÿ‡ฒ Dominica โ€” DM ๐Ÿ‡ฉ๐Ÿ‡ด Dominican Republic โ€” DO ๐Ÿ‡ช๐Ÿ‡จ Ecuador โ€” EC ๐Ÿ‡ช๐Ÿ‡ฌ Egypt โ€” EG ๐Ÿ‡ธ๐Ÿ‡ป El Salvador โ€” SV ๐Ÿ‡ฌ๐Ÿ‡ถ Equatorial Guinea โ€” GQ ๐Ÿ‡ช๐Ÿ‡ท Eritrea โ€” ER ๐Ÿ‡ช๐Ÿ‡ช Estonia โ€” EE ๐Ÿ‡ธ๐Ÿ‡ฟ Eswatini โ€” SZ ๐Ÿ‡ช๐Ÿ‡น Ethiopia โ€” ET ๐Ÿ‡ซ๐Ÿ‡ฐ Falkland Islands โ€” FK ๐Ÿ‡ซ๐Ÿ‡ด Faroe Islands โ€” FO ๐Ÿ‡ซ๐Ÿ‡ฏ Fiji โ€” FJ ๐Ÿ‡ซ๐Ÿ‡ฎ Finland โ€” FI ๐Ÿ‡ซ๐Ÿ‡ท France โ€” FR ๐Ÿ‡ฌ๐Ÿ‡ซ French Guiana โ€” GF ๐Ÿ‡ต๐Ÿ‡ซ French Polynesia โ€” PF ๐Ÿ‡น๐Ÿ‡ซ French Southern Territories โ€” TF ๐Ÿ‡ฌ๐Ÿ‡ฆ Gabon โ€” GA ๐Ÿ‡ฌ๐Ÿ‡ฒ Gambia โ€” GM ๐Ÿ‡ฌ๐Ÿ‡ช Georgia โ€” GE ๐Ÿ‡ฉ๐Ÿ‡ช Germany โ€” DE ๐Ÿ‡ฌ๐Ÿ‡ญ Ghana โ€” GH ๐Ÿ‡ฌ๐Ÿ‡ฎ Gibraltar โ€” GI ๐Ÿ‡ฌ๐Ÿ‡ท Greece โ€” GR ๐Ÿ‡ฌ๐Ÿ‡ฑ Greenland โ€” GL ๐Ÿ‡ฌ๐Ÿ‡ฉ Grenada โ€” GD ๐Ÿ‡ฌ๐Ÿ‡ต Guadeloupe โ€” GP ๐Ÿ‡ฌ๐Ÿ‡บ Guam โ€” GU ๐Ÿ‡ฌ๐Ÿ‡น Guatemala โ€” GT ๐Ÿ‡ฌ๐Ÿ‡ฌ Guernsey โ€” GG ๐Ÿ‡ฌ๐Ÿ‡ณ Guinea โ€” GN ๐Ÿ‡ฌ๐Ÿ‡ผ Guinea-bissau โ€” GW ๐Ÿ‡ฌ๐Ÿ‡พ Guyana โ€” GY ๐Ÿ‡ญ๐Ÿ‡น Haiti โ€” HT ๐Ÿ‡ญ๐Ÿ‡ฒ Heard Island And McDonald Islands โ€” HM ๐Ÿ‡ญ๐Ÿ‡ณ Honduras โ€” HN ๐Ÿ‡ญ๐Ÿ‡ฐ Hong Kong โ€” HK ๐Ÿ‡ญ๐Ÿ‡บ Hungary โ€” HU ๐Ÿ‡ฎ๐Ÿ‡ธ Iceland โ€” IS ๐Ÿ‡ฎ๐Ÿ‡ณ India โ€” IN ๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesia โ€” ID ๐Ÿ‡ฎ๐Ÿ‡ท Iran, Islamic Republic Of โ€” IR ๐Ÿ‡ฎ๐Ÿ‡ถ Iraq โ€” IQ ๐Ÿ‡ฎ๐Ÿ‡ช Ireland โ€” IE ๐Ÿ‡ฎ๐Ÿ‡ฒ Isle Of Man โ€” IM ๐Ÿ‡ฎ๐Ÿ‡ฑ Israel โ€” IL ๐Ÿ‡ฎ๐Ÿ‡น Italy โ€” IT ๐Ÿ‡ฏ๐Ÿ‡ฒ Jamaica โ€” JM ๐Ÿ‡ฏ๐Ÿ‡ต Japan โ€” JP ๐Ÿ‡ฏ๐Ÿ‡ช Jersey โ€” JE ๐Ÿ‡ฏ๐Ÿ‡ด Jordan โ€” JO ๐Ÿ‡ฐ๐Ÿ‡ฟ Kazakhstan โ€” KZ ๐Ÿ‡ฐ๐Ÿ‡ช Kenya โ€” KE ๐Ÿ‡ฐ๐Ÿ‡ฎ Kiribati โ€” KI ๐Ÿ‡ฐ๐Ÿ‡ท Korea, Republic Of โ€” KR ๐Ÿ‡ฐ๐Ÿ‡ผ Kuwait โ€” KW ๐Ÿ‡ฐ๐Ÿ‡ฌ Kyrgyzstan โ€” KG ๐Ÿ‡ฑ๐Ÿ‡ฆ Lao People's Democratic Republic โ€” LA ๐Ÿ‡ฑ๐Ÿ‡ป Latvia โ€” LV ๐Ÿ‡ฑ๐Ÿ‡ง Lebanon โ€” LB ๐Ÿ‡ฑ๐Ÿ‡ธ Lesotho โ€” LS ๐Ÿ‡ฑ๐Ÿ‡ท Liberia โ€” LR ๐Ÿ‡ฑ๐Ÿ‡พ Libya โ€” LY ๐Ÿ‡ฑ๐Ÿ‡ฎ Liechtenstein โ€” LI ๐Ÿ‡ฑ๐Ÿ‡น Lithuania โ€” LT ๐Ÿ‡ฑ๐Ÿ‡บ Luxembourg โ€” LU ๐Ÿ‡ฒ๐Ÿ‡ด Macao โ€” MO ๐Ÿ‡ฒ๐Ÿ‡ฌ Madagascar โ€” MG ๐Ÿ‡ฒ๐Ÿ‡ผ Malawi โ€” MW ๐Ÿ‡ฒ๐Ÿ‡พ Malaysia โ€” MY ๐Ÿ‡ฒ๐Ÿ‡ป Maldives โ€” MV ๐Ÿ‡ฒ๐Ÿ‡ฑ Mali โ€” ML ๐Ÿ‡ฒ๐Ÿ‡น Malta โ€” MT ๐Ÿ‡ฒ๐Ÿ‡ญ Marshall Islands โ€” MH ๐Ÿ‡ฒ๐Ÿ‡ถ Martinique โ€” MQ ๐Ÿ‡ฒ๐Ÿ‡ท Mauritania โ€” MR ๐Ÿ‡ฒ๐Ÿ‡บ Mauritius โ€” MU ๐Ÿ‡พ๐Ÿ‡น Mayotte โ€” YT ๐Ÿ‡ฒ๐Ÿ‡ฝ Mexico โ€” MX ๐Ÿ‡ซ๐Ÿ‡ฒ Micronesia, Federated States Of โ€” FM ๐Ÿ‡ฒ๐Ÿ‡ฉ Moldova โ€” MD ๐Ÿ‡ฒ๐Ÿ‡จ Monaco โ€” MC ๐Ÿ‡ฒ๐Ÿ‡ณ Mongolia โ€” MN ๐Ÿ‡ฒ๐Ÿ‡ช Montenegro โ€” ME ๐Ÿ‡ฒ๐Ÿ‡ธ Montserrat โ€” MS ๐Ÿ‡ฒ๐Ÿ‡ฆ Morocco โ€” MA ๐Ÿ‡ฒ๐Ÿ‡ฟ Mozambique โ€” MZ ๐Ÿ‡ฒ๐Ÿ‡ฒ Myanmar โ€” MM ๐Ÿ‡ณ๐Ÿ‡ฆ Namibia โ€” NA ๐Ÿ‡ณ๐Ÿ‡ท Nauru โ€” NR ๐Ÿ‡ณ๐Ÿ‡ต Nepal โ€” NP ๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands โ€” NL ๐Ÿ‡ณ๐Ÿ‡จ New Caledonia โ€” NC ๐Ÿ‡ณ๐Ÿ‡ฟ New Zealand โ€” NZ ๐Ÿ‡ณ๐Ÿ‡ฎ Nicaragua โ€” NI ๐Ÿ‡ณ๐Ÿ‡ช Niger โ€” NE ๐Ÿ‡ณ๐Ÿ‡ฌ Nigeria โ€” NG ๐Ÿ‡ณ๐Ÿ‡บ Niue โ€” NU ๐Ÿ‡ณ๐Ÿ‡ซ Norfolk Island โ€” NF ๐Ÿ‡ฒ๐Ÿ‡ฐ North Macedonia โ€” MK ๐Ÿ‡ฒ๐Ÿ‡ต Northern Mariana Islands โ€” MP ๐Ÿ‡ณ๐Ÿ‡ด Norway โ€” NO ๐Ÿ‡ด๐Ÿ‡ฒ Oman โ€” OM ๐Ÿ‡ต๐Ÿ‡ฐ Pakistan โ€” PK ๐Ÿ‡ต๐Ÿ‡ผ Palau โ€” PW ๐Ÿ‡ต๐Ÿ‡ธ Palestinian Territory, Occupied โ€” PS ๐Ÿ‡ต๐Ÿ‡ฆ Panama โ€” PA ๐Ÿ‡ต๐Ÿ‡ฌ Papua New Guinea โ€” PG ๐Ÿ‡ต๐Ÿ‡พ Paraguay โ€” PY ๐Ÿ‡ต๐Ÿ‡ช Peru โ€” PE ๐Ÿ‡ต๐Ÿ‡ญ Philippines โ€” PH ๐Ÿ‡ต๐Ÿ‡ณ Pitcairn โ€” PN ๐Ÿ‡ต๐Ÿ‡ฑ Poland โ€” PL ๐Ÿ‡ต๐Ÿ‡น Portugal โ€” PT ๐Ÿ‡ต๐Ÿ‡ท Puerto Rico โ€” PR ๐Ÿ‡ถ๐Ÿ‡ฆ Qatar โ€” QA ๐Ÿ‡จ๐Ÿ‡ฌ Republic Of Congo โ€” CG ๐Ÿ‡ท๐Ÿ‡ช Reunion โ€” RE ๐Ÿ‡ท๐Ÿ‡ด Romania โ€” RO ๐Ÿ‡ท๐Ÿ‡บ Russia โ€” RU ๐Ÿ‡ท๐Ÿ‡ผ Rwanda โ€” RW ๐Ÿ‡ง๐Ÿ‡ฑ Saint Barthรฉlemy โ€” BL ๐Ÿ‡ธ๐Ÿ‡ญ Saint Helena, Ascension And Tristan Da Cunha โ€” SH ๐Ÿ‡ฐ๐Ÿ‡ณ Saint Kitts And Nevis โ€” KN ๐Ÿ‡ฑ๐Ÿ‡จ Saint Lucia โ€” LC ๐Ÿ‡ฒ๐Ÿ‡ซ Saint Martin โ€” MF ๐Ÿ‡ต๐Ÿ‡ฒ Saint Pierre And Miquelon โ€” PM ๐Ÿ‡ป๐Ÿ‡จ Saint Vincent And The Grenadines โ€” VC ๐Ÿ‡ผ๐Ÿ‡ธ Samoa โ€” WS ๐Ÿ‡ธ๐Ÿ‡ฒ San Marino โ€” SM ๐Ÿ‡ธ๐Ÿ‡น Sao Tome and Principe โ€” ST ๐Ÿ‡ธ๐Ÿ‡ฆ Saudi Arabia โ€” SA ๐Ÿ‡ธ๐Ÿ‡ณ Senegal โ€” SN ๐Ÿ‡ท๐Ÿ‡ธ Serbia โ€” RS ๐Ÿ‡ธ๐Ÿ‡จ Seychelles โ€” SC ๐Ÿ‡ธ๐Ÿ‡ฑ Sierra Leone โ€” SL ๐Ÿ‡ธ๐Ÿ‡ฌ Singapore โ€” SG ๐Ÿ‡ธ๐Ÿ‡ฝ Sint Maarten โ€” SX ๐Ÿ‡ธ๐Ÿ‡ฐ Slovakia โ€” SK ๐Ÿ‡ธ๐Ÿ‡ฎ Slovenia โ€” SI ๐Ÿ‡ธ๐Ÿ‡ง Solomon Islands โ€” SB ๐Ÿ‡ธ๐Ÿ‡ด Somalia โ€” SO ๐Ÿ‡ฟ๐Ÿ‡ฆ South Africa โ€” ZA ๐Ÿ‡ฌ๐Ÿ‡ธ South Georgia And The South Sandwich Islands โ€” GS ๐Ÿ‡ธ๐Ÿ‡ธ South Sudan โ€” SS ๐Ÿ‡ช๐Ÿ‡ธ Spain โ€” ES ๐Ÿ‡ฑ๐Ÿ‡ฐ Sri Lanka โ€” LK ๐Ÿ‡ธ๐Ÿ‡ฉ Sudan โ€” SD ๐Ÿ‡ธ๐Ÿ‡ท Suriname โ€” SR ๐Ÿ‡ธ๐Ÿ‡ฏ Svalbard And Jan Mayen โ€” SJ ๐Ÿ‡ธ๐Ÿ‡ช Sweden โ€” SE ๐Ÿ‡จ๐Ÿ‡ญ Switzerland โ€” CH ๐Ÿ‡ธ๐Ÿ‡พ Syrian Arab Republic โ€” SY ๐Ÿ‡น๐Ÿ‡ผ Taiwan โ€” TW ๐Ÿ‡น๐Ÿ‡ฏ Tajikistan โ€” TJ ๐Ÿ‡น๐Ÿ‡ฟ Tanzania, United Republic Of โ€” TZ ๐Ÿ‡น๐Ÿ‡ญ Thailand โ€” TH ๐Ÿ‡น๐Ÿ‡ฑ Timor-Leste, Democratic Republic of โ€” TL ๐Ÿ‡น๐Ÿ‡ฌ Togo โ€” TG ๐Ÿ‡น๐Ÿ‡ฐ Tokelau โ€” TK ๐Ÿ‡น๐Ÿ‡ด Tonga โ€” TO ๐Ÿ‡น๐Ÿ‡น Trinidad And Tobago โ€” TT ๐Ÿ‡น๐Ÿ‡ณ Tunisia โ€” TN ๐Ÿ‡น๐Ÿ‡ท Turkey โ€” TR ๐Ÿ‡น๐Ÿ‡ฒ Turkmenistan โ€” TM ๐Ÿ‡น๐Ÿ‡จ Turks And Caicos Islands โ€” TC ๐Ÿ‡น๐Ÿ‡ป Tuvalu โ€” TV ๐Ÿ‡บ๐Ÿ‡ฌ Uganda โ€” UG ๐Ÿ‡บ๐Ÿ‡ฆ Ukraine โ€” UA ๐Ÿ‡ฆ๐Ÿ‡ช United Arab Emirates โ€” AE ๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom โ€” GB ๐Ÿ‡บ๐Ÿ‡ธ United States โ€” US ๐Ÿ‡บ๐Ÿ‡ฒ United States Minor Outlying Islands โ€” UM ๐Ÿ‡บ๐Ÿ‡พ Uruguay โ€” UY ๐Ÿ‡บ๐Ÿ‡ฟ Uzbekistan โ€” UZ ๐Ÿ‡ป๐Ÿ‡บ Vanuatu โ€” VU ๐Ÿ‡ป๐Ÿ‡ฆ Vatican City State โ€” VA ๐Ÿ‡ป๐Ÿ‡ช Venezuela, Bolivarian Republic Of โ€” VE ๐Ÿ‡ป๐Ÿ‡ณ VietNam โ€” VN ๐Ÿ‡ป๐Ÿ‡ฌ Virgin Islands (British) โ€” VG ๐Ÿ‡ป๐Ÿ‡ฎ Virgin Islands (US) โ€” VI ๐Ÿ‡ผ๐Ÿ‡ซ Wallis And Futuna โ€” WF ๐Ÿ‡ช๐Ÿ‡ญ Western Sahara โ€” EH ๐Ÿ‡พ๐Ÿ‡ช Yemen โ€” YE ๐Ÿ‡ฟ๐Ÿ‡ฒ Zambia โ€” ZM ๐Ÿ‡ฟ๐Ÿ‡ผ Zimbabwe โ€” ZW ``` Plyne's dashboard treats Europe as a convenience group. For API requests, send the expanded country code array. ```json theme={null} [ "AL", "AD", "AM", "AT", "AZ", "BY", "BE", "BA", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "GE", "DE", "GR", "HU", "IS", "IE", "IT", "XK", "LV", "LI", "LT", "LU", "MT", "MD", "MC", "ME", "NL", "MK", "NO", "PL", "PT", "RO", "RU", "SM", "RS", "SK", "SI", "ES", "SE", "CH", "TR", "UA", "GB", "VA" ] ``` Use these values with the `signals` filter. They match the `signal.type` value returned on each lead. ```text theme={null} You & Your Company โ€” your_company_engagement_signal Competitor Engagement โ€” competitor_engagement_signal Post Engagers โ€” topic_engagement_signal LinkedIn Profiles โ€” profile_engagement_signal Changes & Events โ€” recent_job_changes_signal Hiring Activity โ€” hiring_signals Technology Adoption โ€” tech_stack_signals ``` Use these values with the `statuses` filter on Monitor account and signal endpoints. ```text theme={null} Detected โ€” detected Not detected โ€” not_detected Unknown โ€” unknown Error โ€” error ``` Use these values with the `statuses` filter on Custom Signals. ```text theme={null} Active โ€” active Paused โ€” paused ```
Example: ```json theme={null} { "lead_country_codes": ["DE", "FR", "GB"], "cursor": { "limit": 100 } } ``` # Authentication Source: https://docs.plyne.ai/api/authentication Authentication model for the Plyne API. The Plyne API uses organization-scoped API keys. ```bash theme={null} Authorization: Bearer plyne_... ``` Manage API keys from **Developer โ†’ API Keys** in the dashboard. Every request is scoped to the organization that owns the key. ## Headers ```bash theme={null} Authorization: Bearer plyne_... Content-Type: application/json ``` ## Behavior * Invalid or missing keys return `401`. * Keys without access to a resource return `403`. * Rate limits are applied per organization. # API Overview Source: https://docs.plyne.ai/api/overview Read Plyne intent signals, leads, and monitored accounts from your product or workflow. The Plyne API is designed around the same jobs your team handles in the dashboard: find buyers showing intent, track accounts that matter, and pull the context needed for timely outreach. Setup stays in the dashboard. The API gives you a clean read layer for Signal Agents, Leads, Monitored Accounts, Custom Signals, and detected account signals. ## What Plyne tracks Plyne tracks two kinds of GTM movement: | Product area | Answers | API output | | ------------------ | --------------------------------------------------- | ----------------------------------------------- | | Intent Signals | Which leads are showing buying intent now? | Signal Agents and qualified Leads | | Monitored Accounts | What changed in the accounts we already care about? | Monitored Accounts and detected account signals | ### Intent Signals Intent Signals find buying-intent leads across keywords, sources, watched profiles, and signal types. Your team configures Signal Agents in the dashboard. The API lets you read those Signal Agents and pull the qualified Leads they surface. Examples of what Intent Signals can track: * leads engaging with relevant topics, posts, companies, or watched profiles * leads matching your target title, seniority, geography, and ICP criteria * companies hiring for roles that suggest a new initiative * companies showing funding, launch, expansion, technology, or category activity * leads tied to a specific sheet, signal type, or source your team configured ### Monitored Accounts Monitored Accounts are the companies your team has chosen to track over time. Your team adds accounts and defines Custom Signals in the dashboard. Plyne evaluates those accounts and surfaces detected account signals when something worth acting on appears. Examples of what Custom Signals can track across Monitored Accounts: * hiring for sales, engineering, security, compliance, or other target roles * expansion into a new country, region, market, or customer segment * launches of new products, features, pricing pages, integrations, or partnerships * mentions of competitors, tools, migrations, compliance, procurement, or security * new public evidence that an account is entering an active buying window ## Base URL ```http theme={null} https://api.plyne.ai ``` All endpoints require an organization-scoped API key: ```bash theme={null} Authorization: Bearer plyne_... Content-Type: application/json ``` ## Quickstart Read the newest Leads by Date found, matching the Leads Directory default order: ```bash cURL theme={null} curl --request POST \ --url 'https://api.plyne.ai/v1/signals/leads' \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "cursor": { "limit": 10 } }' ``` Read the newest detected account signals from Monitored Accounts: ```bash cURL theme={null} curl --request POST \ --url 'https://api.plyne.ai/v1/monitor/signals' \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "cursor": { "limit": 10 } }' ``` ## Dashboard and API responsibilities | In the dashboard | In the API | | ------------------------------------------------ | ----------------------------- | | Create and edit Signal Agents | Read Signal Agents | | Configure ICP, signal types, sources, and sheets | Read qualified Leads | | Add and manage Monitored Accounts | Read Monitored Accounts | | Create and edit Custom Signals | Read detected account signals | | Manage API keys | Authenticate API requests | ## Sections Intent Signals and Signal Agents that continuously surface qualified Leads. Monitored Accounts and detected account signals from Custom Signals. Qualified leads with embedded company details and source context. Authentication, pagination, and shared filtering conventions. ## Endpoint surface ### Signals | Method | Endpoint | Use when | | ------ | ---------------------- | ------------------------------------------------------------------------------------ | | POST | `/v1/signals/agents` | You need the Signal Agents configured in the dashboard. | | POST | `/v1/signals/leads` | You want to sync qualified Leads into your CRM, outbound tool, product, or workflow. | | POST | `/v1/signals/accounts` | You want Accounts Directory rows with dashboard-equivalent filters and sorting. | ### Monitor | Method | Endpoint | Use when | | ------ | ---------------------------- | ---------------------------------------------------- | | POST | `/v1/monitor/accounts` | You need the list of Monitored Accounts. | | POST | `/v1/monitor/leads` | You need the list of Monitored Leads. | | POST | `/v1/monitor/signals` | You want account signal history from Custom Signals. | | POST | `/v1/monitor/custom-signals` | You need the Custom Signals available for filtering. | ## Common patterns \| Pattern | Behavior | \| --- | --- | --- | \| Authentication | Send `Authorization: Bearer plyne_...` with every request. | \| Pagination | List endpoints use request-body cursor pagination. | \| Filtering | Directory endpoints use `date_found` and `latest_signal`; monitored entity endpoints use `latest_activity`; signal-history rows use `observed_at`. Unknown fields return `400 InvalidArgument`. | \| Scope | Every response is scoped to the organization that owns the API key. | ## Dashboard label to API field | Dashboard label | API field | Meaning | | --------------- | ----------------- | ---------------------------------------------------------------------------- | | Date found | `date_found` | When the entity first entered the Directory. | | Latest signal | `latest_signal` | When the latest matching distinct material signal was created. | | Latest activity | `latest_activity` | The combined activity time used by Monitored Leads and Accounts. | | Observed at | `observed_at` | The timestamp of one concrete signal-history row. | | AI score | `ai_score` | Inclusive score range or `ai_score` sort field on Directory endpoints. | | Signal | `signals` | Source IDs on Directory endpoints and definition IDs on Monitored endpoints. | | Sheet | `sheet_ids` | Directory sheet/source-list IDs. | ## Current limitations * No API endpoint to create or edit Signal Agents. * No API endpoint to create or edit Custom Signals. * No API endpoint to add or edit Monitored Accounts. * No run-start endpoint in the first API version. * Use filters on list endpoints instead of deep nested result endpoints. # Pagination and Filters Source: https://docs.plyne.ai/api/pagination Shared list response and filtering conventions. List endpoints use request-body cursor pagination. Send `cursor.limit` on the first request, then pass the returned `cursor.next` as `cursor.after` to fetch the next page. ```http theme={null} POST /v1/signals/leads ``` ```json Request theme={null} { "cursor": { "limit": 100 } } ``` ```json theme={null} { "data": [], "cursor": { "next": "opaque_cursor_from_the_response", "has_more": true } } ``` Use the next cursor in a follow-up request: ```json Request theme={null} { "cursor": { "limit": 100, "after": "opaque_cursor_from_the_response" } } ``` ## Common body fields | Field | Description | | -------------- | ---------------------------------------------------------------------------- | | `cursor.limit` | Number of records to return. Maximum value is `100`. | | `cursor.after` | Opaque cursor returned by the previous response. Omit it for the first page. | Keep the same filters and sort on every page. Cursors are tied to the requested sort and are rejected if reused with another sort. ## Endpoint-specific time ranges | Endpoint | Start | End | | --------------------------- | ----------------------------------------------------- | -------------------------- | | `POST /v1/signals/leads` | `date_found.start_time` or `latest_signal.start_time` | Matching `end_time` field | | `POST /v1/signals/accounts` | `date_found.start_time` or `latest_signal.start_time` | Matching `end_time` field | | `POST /v1/monitor/leads` | `latest_activity.start_time` | `latest_activity.end_time` | | `POST /v1/monitor/accounts` | `latest_activity.start_time` | `latest_activity.end_time` | | `POST /v1/monitor/signals` | `observed_at.start_time` | `observed_at.end_time` | For Leads, the `latest_signal` range is applied to the same occurrence that matches `signals` and `sheet_ids`, so the returned `signal.observed_at` is always inside the requested window. Use filters on the Leads endpoint instead of nested result endpoints. ```http theme={null} POST /v1/signals/leads ``` ```json theme={null} { "signals": ["topic_engagement_signal"], "sheet_ids": ["sh_6P9vR3"], "company_ids": ["co_4F7xN2"], "cursor": { "limit": 100 } } ``` # Introduction Source: https://docs.plyne.ai/index Track buyer intent and reach the right accounts at the right moment. Plyne helps go-to-market teams stop guessing and start tracking intent. Configure your ICP, Signal Agents, Custom Signals, and Monitored Accounts in the dashboard. Use the API to read qualified Leads, detected account signals, and the context your team needs before outreach. Review authentication, pagination, filtering, and the core API shape. Read Intent Signals agents and the leads they surface from the open web. Track Monitored Accounts on a schedule and read detected account signals worth acting on. Pull qualified leads with company context, timing, and signal source. # Monitored Accounts Source: https://docs.plyne.ai/monitor/accounts Read monitored accounts with their latest account signal. Monitored Accounts are companies your team tracks over time. Use this endpoint to read the same account queue you see in the dashboard, including account-level score, summary, and latest signal. ```bash cURL theme={null} curl --request POST \ --url 'https://api.plyne.ai/v1/monitor/accounts' \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "signals": ["d8signaldefinitionid"], "statuses": ["detected"], "cursor": { "limit": 50 } }' ``` ```json 200 theme={null} { "data": [ { "id": "d8companyid", "name": "Current Electric", "domain": "currentelectric.com", "profile": { "platform": "linkedin", "url": "https://linkedin.com/company/current-electric" }, "country_code": "US", "monitoring": { "id": "d8trackedentityid", "created_at": "2026-06-10T12:00:00Z" }, "score": { "value": 84, "fit": "high", "reasoning": "Strong account movement based on recent detected signals." }, "latest_signal": { "id": "d8signalid", "definition_id": "d8signaldefinitionid", "name": "Tech stack migration", "status": "detected", "score": 88, "summary": "Moved to ServiceTitan.", "observed_at": "2026-06-15T08:00:00Z" } } ], "cursor": { "next": "", "has_more": false } } ``` ```http theme={null} POST /v1/monitor/accounts ```

Authorizations

Authorization string header required

Bearer authentication header of the form Bearer \, where \ is your API key.

Body

account\_ids string\[]

Return specific monitored accounts by company ID. Omit this field to return all monitored accounts.

signals string\[]

Filter accounts by Custom Signal definition IDs.

statuses string\[]

Filter by latest account signal status.

Example: \["detected"]

latest\_activity object

Restrict accounts by their latest monitored activity. Results use the dashboard's fixed Monitored priority order.

cursor.limit integer

Number of monitored accounts to return. Maximum value is 100.

cursor.after string

Opaque cursor returned as cursor.next from the previous response.

# Custom Signals Source: https://docs.plyne.ai/monitor/custom-signals Read Custom Signals configured for monitored accounts. Custom Signals are the plain-language questions Plyne checks against your monitored accounts. ```bash cURL theme={null} curl --request POST \ --url 'https://api.plyne.ai/v1/monitor/custom-signals' \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "statuses": ["active"], "cursor": { "limit": 50 } }' ``` ```json 200 theme={null} { "data": [ { "id": "d8signaldefinitionid", "name": "Tech stack migration", "question": "Did {company} recently adopt ServiceTitan?", "status": "active" } ], "cursor": { "next": "", "has_more": false } } ``` ```http theme={null} POST /v1/monitor/custom-signals ```

Body

statuses string\[]

Filter by Custom Signal status.

Example: \["active"]

cursor.limit integer

Number of Custom Signals to return. Maximum value is 100.

cursor.after string

Opaque cursor returned as cursor.next from the previous response.

# Monitored Leads Source: https://docs.plyne.ai/monitor/leads Read the Leads dashboard's Monitored result set. ```http theme={null} POST /v1/monitor/leads ``` ```json Request theme={null} { "lead_ids": ["lead_123"], "signals": ["signal_definition_123"], "statuses": ["detected"], "latest_activity": { "start_time": "2026-08-01T00:00:00Z" }, "cursor": { "limit": 100 } } ``` Monitored Leads has no caller-controlled sort. It uses the dashboard's fixed priority order: detected signal, latest activity, gate result, score, monitoring time, and a deterministic ID tie-breaker. # Monitor Source: https://docs.plyne.ai/monitor/overview Track monitored accounts with Custom Signals. Monitor is the account tracking side of Plyne. Your team adds monitored accounts and defines Custom Signals in plain language, such as whether a company is hiring for a role, expanding into a new location, filing a disclosure, or adopting a specific tool. Plyne checks those accounts on a schedule and surfaces account signals worth acting on. ## Endpoints ```http theme={null} POST /v1/monitor/accounts POST /v1/monitor/signals POST /v1/monitor/custom-signals ``` Use `accounts` for the current monitored account queue, `signals` for observation history, and `custom-signals` to list the definitions available for filtering. ## Filters Most Monitor reads use body filters: ```json theme={null} { "account_ids": ["d8companyid"], "signals": ["d8signaldefinitionid"], "statuses": ["detected"], "cursor": { "limit": 50 } } ``` Omit a filter to read across all monitored accounts or all Custom Signals in your organization. # Account Signals Source: https://docs.plyne.ai/monitor/signals Read signal observations from monitored accounts. Account Signals are observations generated when Plyne checks your monitored accounts against Custom Signals. ```bash cURL theme={null} curl --request POST \ --url 'https://api.plyne.ai/v1/monitor/signals' \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "account_ids": ["d8companyid"], "signals": ["d8signaldefinitionid"], "statuses": ["detected"], "cursor": { "limit": 50 } }' ``` ```json 200 theme={null} { "data": [ { "id": "d8signalid", "account": { "id": "d8companyid", "name": "Current Electric", "domain": "currentelectric.com", "profile": { "platform": "linkedin", "url": "https://linkedin.com/company/current-electric" }, "country_code": "US" }, "signal": { "id": "d8signaldefinitionid", "name": "Tech stack migration", "question": "Did {company} recently adopt ServiceTitan?" }, "status": "detected", "score": 88, "summary": "Moved to ServiceTitan, detected 2 days ago.", "reason": "Public implementation evidence points to a recent ServiceTitan migration.", "observed_at": "2026-06-15T08:00:00Z", "references": [] } ], "cursor": { "next": "", "has_more": false } } ``` ```http theme={null} POST /v1/monitor/signals ```

Body

signal\_ids string\[]

Return specific signal observations by ID.

account\_ids string\[]

Return signal observations for specific monitored accounts.

signals string\[]

Filter by Custom Signal definition IDs.

statuses string\[]

Filter by account signal status.

Example: \["detected"]

observed\_at object

Restrict signals by observed timestamp.

cursor.limit integer

Number of signal observations to return. Maximum value is 100.

cursor.after string

Opaque cursor returned as cursor.next from the previous response.

# Quickstart Source: https://docs.plyne.ai/quickstart Make your first Plyne API request and read intent data. Use the Plyne API to read the buyers and accounts your team is already tracking in Plyne. The dashboard is where your team configures ICPs, Signal Agents, Custom Signals, and Monitored Accounts. The API is the read layer for integrating those outputs into your product, workflow, or outbound system. ## 1. Create an API key Open the dashboard and go to **Developer โ†’ API Keys**. Create a key and copy it. API keys are scoped to your organization. ```bash theme={null} Authorization: Bearer plyne_... ``` ## 2. List Intent Signals agents Signal agents are always-on discovery setups. Each agent belongs to a sheet and runs on a recurring schedule to find buyers showing relevant intent. ```bash cURL theme={null} curl --request POST \ --url https://api.plyne.ai/v1/signals/agents \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "cursor": { "limit": 50 } }' ``` ```json 200 theme={null} { "data": [ { "id": "ag_2L8mD5", "type": "intent_signals", "name": "Intent Signals", "status": "active", "schedule": "4x daily", "sheet": { "id": "sh_6P9vR3", "name": "AI infrastructure buyers" } } ], "cursor": { "next": "", "has_more": false } } ``` ## 3. Read qualified leads Use `signals` to read Leads surfaced by a specific buying signal, and `sheet_ids` to limit results to a configured sheet. ```bash cURL theme={null} curl --request POST \ --url https://api.plyne.ai/v1/signals/leads \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "signals": ["topic_engagement_signal"], "sheet_ids": ["sh_6P9vR3"], "lead_country_codes": ["US"], "company_country_codes": ["US"], "cursor": { "limit": 100 } }' ``` ```json 200 theme={null} { "data": [ { "id": "ld_8K2mQ9", "full_name": "Sarah Carter", "title": "Head of Engineering", "country_code": "US", "profile": { "platform": "linkedin", "url": "https://linkedin.com/in/sarah-carter" }, "company": { "id": "co_4F7xN2", "name": "Acme", "domain": "acme.com", "linkedin_url": "https://linkedin.com/company/acme", "country_code": "US" }, "sheet": { "id": "sh_6P9vR3", "name": "AI infrastructure buyers" }, "signal": { "type": "topic_engagement_signal", "name": "Post Engagers", "summary": "Engaged with relevant topic content recently", "reason": "Sarah engaged with content related to cloud infrastructure modernization.", "observed_at": "2026-06-15T08:00:00Z" }, "qualification": { "status": "qualified", "reason": "Strong ICP fit based on seniority, role, company profile, and recent intent.", "reasoning": "The lead matches the target persona and ICP criteria. Head of Engineering matches the target buyer persona, Acme matches the company profile, and recent engagement supports current intent.", "references": [ { "type": "evidence", "label": "Topic engagement", "url": "https://linkedin.com/posts/example" } ] }, "score": { "value": 86, "fit": "high", "reasoning": "High lead priority because the person has strong title fit, resolved company context, and recent relevant signal evidence." } } ], "cursor": { "next": "", "has_more": false } } ``` ## 4. Paginate results List responses return pagination metadata under `cursor`. ```json theme={null} { "cursor": { "next": "eyJ2IjoxLCJvYnNlcnZlZF9hdCI6IjIwMjYtMDYtMTJUMTQ6MDk6MjNaIiwiaWQiOiJsZWFkXzEyMyJ9", "has_more": true } } ``` Pass `cursor.next` as `cursor.after` to fetch the next page. ```json theme={null} { "cursor": { "limit": 100, "after": "eyJ2IjoxLCJvYnNlcnZlZF9hdCI6IjIwMjYtMDYtMTJUMTQ6MDk6MjNaIiwiaWQiOiJsZWFkXzEyMyJ9" } } ``` ## 5. Check request logs Open **Developer โ†’ Request Logs** in the dashboard to inspect recent API requests, response codes, latency, IP, and user agent. # Accounts Source: https://docs.plyne.ai/signals/accounts Read Accounts Directory rows with dashboard-equivalent filters and sorting. ```http theme={null} POST /v1/signals/accounts ``` ```json Request theme={null} { "signals": ["technology_adoption_signal"], "sheet_ids": ["sheet_123"], "country_codes": ["US"], "date_found": { "start_time": "2026-08-01T00:00:00Z" }, "latest_signal": { "start_time": "2026-08-04T00:00:00Z" }, "ai_score": { "min": 70 }, "sort": { "field": "latest_signal", "direction": "SORT_DIRECTION_DESC" }, "cursor": { "limit": 100 } } ``` Supported sort fields are `date_found`, `latest_signal`, `ai_score`, and `signal_count`. The default is `date_found` descending, matching the Accounts dashboard. # Signal Agents Source: https://docs.plyne.ai/signals/agents Read dashboard-configured Signal Agents. Signal Agents are always-on discovery setups created in the dashboard. Each agent has a product type and belongs to a dashboard sheet. ```bash cURL theme={null} curl --request POST \ --url https://api.plyne.ai/v1/signals/agents \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "cursor": { "limit": 50 } }' ``` ```json 200 theme={null} { "data": [ { "id": "d8m13il8samas88tvoq0", "type": "intent_signals", "name": "Intent Signals", "status": "active", "schedule": "4x daily", "next_check_at": "2026-06-17T02:03:00Z", "sheet": { "id": "d8m13il8samas88tvop0", "name": "AI infrastructure buyers" } }, { "id": "d8cln7t8sam5q17hnr9g", "type": "intent_signals", "name": "Intent Signals", "status": "paused", "schedule": "4x daily", "sheet": { "id": "d8cln7t8sam5q17hnr8g", "name": "FinOps hiring signals" } } ], "cursor": { "next": "", "has_more": false } } ``` ```http theme={null} POST /v1/signals/agents ```

Authorizations

Authorization string header required

Bearer authentication header of the form Bearer \, where \ is your API key.

Body

cursor.limit integer

Number of Signal Agents to return. Maximum value is 100.

Example: 50

cursor.after string

Opaque cursor returned as cursor.next from the previous response.

statuses string\[]

Filter by agent status, such as active or paused.

agent\_ids string\[]

Return specific Signal Agents by ID.

Use `POST /v1/signals/leads` with `sheet_ids` and `signals` to read leads from a specific sheet or buying signal. # Leads Source: https://docs.plyne.ai/signals/leads Read qualified Leads surfaced by Signal Agents. The leads endpoint returns qualified Leads that matched your ICP and showed relevant intent. Each lead includes company details directly in the response so you can show who to contact and why the timing matters. ```bash cURL theme={null} curl --request POST \ --url 'https://api.plyne.ai/v1/signals/leads' \ --header 'Authorization: Bearer plyne_...' \ --header 'Content-Type: application/json' \ --data '{ "signals": ["topic_engagement_signal"], "sheet_ids": ["sh_6P9vR3"], "lead_country_codes": ["US"], "company_country_codes": ["US"], "latest_signal": { "start_time": "2026-06-01T00:00:00Z", "end_time": "2026-07-01T00:00:00Z" }, "sort": { "field": "date_found", "direction": "SORT_DIRECTION_DESC" }, "cursor": { "limit": 100 } }' ``` ```json 200 theme={null} { "data": [ { "id": "ld_8K2mQ9", "full_name": "Sarah Carter", "title": "Head of Engineering", "country_code": "US", "profile": { "platform": "linkedin", "url": "https://linkedin.com/in/sarah-carter" }, "company": { "id": "co_4F7xN2", "name": "Acme", "domain": "acme.com", "linkedin_url": "https://linkedin.com/company/acme", "country_code": "US" }, "sheet": { "id": "sh_6P9vR3", "name": "AI infrastructure buyers" }, "signal": { "type": "topic_engagement_signal", "name": "Post Engagers", "summary": "Engaged with relevant topic content recently", "reason": "Sarah engaged with content related to cloud infrastructure modernization.", "observed_at": "2026-06-15T08:00:00Z" }, "qualification": { "status": "qualified", "reason": "Strong ICP fit based on seniority, role, company profile, and recent intent.", "reasoning": "The lead matches the target persona and ICP criteria. Head of Engineering matches the target buyer persona, Acme matches the company profile, and recent engagement supports current intent.", "references": [ { "type": "evidence", "label": "Topic engagement", "url": "https://linkedin.com/posts/example" } ] }, "score": { "value": 86, "fit": "high", "reasoning": "High lead priority because the person has strong title fit, resolved company context, and recent relevant signal evidence." } } ], "cursor": { "next": "", "has_more": false } } ``` ```http theme={null} POST /v1/signals/leads ```

Authorizations

Authorization string header required

Bearer authentication header of the form Bearer \, where \ is your API key.

Body

signals string\[]

Filter by signal type, matching the signal.type values returned with each lead. See Accepted Filter Values.

Example: \["topic\_engagement\_signal"]

sheet\_ids string\[]

Filter leads to one or more sheets configured in the dashboard.

Example: \["sh\_6P9vR3"]

lead\_ids string\[]

Return specific leads by ID.

Example: \["ld\_8K2mQ9"]

company\_ids string\[]

Filter leads to one or more companies.

Example: \["co\_4F7xN2"]

lead\_country\_codes string\[]

Filter by lead country code using two-letter country codes. See Accepted Filter Values.

Example: \["US", "GB"]

company\_country\_codes string\[]

Filter by company country code using two-letter country codes. See Accepted Filter Values.

Example: \["US", "CA"]

date\_found object

Restrict results by when the lead first entered the Directory.

latest\_signal object

Restrict results to when the latest matching distinct signal was observed.

ai\_score object

Restrict results using inclusive min and max score values from 0 to 100.

sort object

Sort by date\_found, latest\_signal, ai\_score, or signal\_count. Direction is SORT\_DIRECTION\_DESC or SORT\_DIRECTION\_ASC. The default is date\_found descending, matching the Leads dashboard.

cursor.limit integer

Number of leads to return per page.

Example: 100

cursor.after string

Opaque cursor returned as cursor.next from the previous response.

# Signals Source: https://docs.plyne.ai/signals/overview Intent Signals and Signal Agents that find buying-intent leads. Signals are the lead discovery side of Plyne. Your team defines the ICP and signal logic in the dashboard. Plyne then runs those Signal Agents continuously across company activity, job boards, social activity, communities, and other sources needed to identify buying-intent leads. Use the API to read the configured Signal Agents and pull the qualified Leads they produce. ## Basic endpoints ```http theme={null} POST /v1/signals/agents POST /v1/signals/leads ``` Each Lead includes company context so your product can show who to contact, why now, and which signal surfaced the Lead. ## Later ```http theme={null} GET /v1/signals/agents/{id} ```