Autopilot
The autopilot hides what it is sure about and asks your team ("Needs you") when it is not. Every answer teaches it. These endpoints are the same functions Home and Setup call in the app, so an answer through the API counts exactly like one in the app.
Updated September 26, 2026
Autopilot status
GET/api/v1/autopilot
The last 7 days (this_week) and the 7 before (previous_week): how many comments it decided, how many it handled alone and asked you about, and how often it agreed with your team. agreement is 0 to 1, or null without any corrections.
handles_on_its_own lists areas it has earned trust in (95% or more agreement over the last 100 answers). asks_more_about lists areas where recent corrections made it more careful. waiting counts comments waiting for a person, including ones whose platform action failed.
Who can call it: Any API key.
Example
curl https://commentgate.com/api/v1/autopilot \
-H "Authorization: Bearer $COMMENTGATE_API_KEY" 200 OK. The status.
{
"data": {
"set_up": true,
"this_week": {
"decided": 175,
"handled_alone": 149,
"asked_you": 26,
"handled_alone_rate": 0.851,
"asked_you_rate": 0.149,
"agreement": 0.964,
"corrections": 28,
"answered_by_campaigns": 0
},
"previous_week": {
"decided": 94,
"handled_alone": 87,
"asked_you": 7,
"handled_alone_rate": 0.926,
"asked_you_rate": 0.074,
"agreement": 0.9,
"corrections": 10,
"answered_by_campaigns": 0
},
"handles_on_its_own": [
"scams"
],
"asks_more_about": [],
"waiting": 16,
"summary": "This week it decided 175 comments and handled 85% on its own, asking you about 15%. It agreed with 96% of your 28 corrections and answers. It now handles scams on its own. 16 comments are waiting for you."
}
} Errors
| HTTP | Code | When |
|---|---|---|
| 401 | unauthorized | Missing, unknown or revoked key |
Also as get_autopilot_status (MCP), commentgate status.
List Needs you
GET/api/v1/autopilot/needs-you
The comments the autopilot is unsure about, newest first. reason is why it is asking, in words, and reason_score the confidence behind it (0 to 1, or null). leaning is which way it would go (hide, keep or null) and leaning_why says why.
Who can call it: Any API key.
Query parameters
- limit integer · 1 to 100 · default 50
- How many to return per page.
- cursor string · up to 200 characters
next_cursorfrom the previous page. Leave it out for the first page.
Example
curl "https://commentgate.com/api/v1/autopilot/needs-you?limit=20" \
-H "Authorization: Bearer $COMMENTGATE_API_KEY" 200 OK. A page of waiting comments.
{
"data": [
{
"id": "c11c7e0a-2ff9-4472-870c-0a8d6b1ccf5a",
"text": "Is this the same sole as the old Alder? Mine wore out in a year",
"has_media": false,
"author": {
"name": "Jess Park",
"handle": "jesspark"
},
"platform": "instagram",
"surface": "organic",
"post_caption": "Meet the Alder Trail Boot.",
"created_at": "2026-09-23T18:50:02Z",
"reason": "Might be negative about you",
"reason_score": 0.58,
"leaning": "keep",
"leaning_why": "A customer asking about the sole.",
"url": "https://commentgate.com/app/inbox?c=c11c7e0a-2ff9-4472-870c-0a8d6b1ccf5a"
}
],
"next_cursor": null
} Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_request | A parameter or the cursor is not valid |
| 401 | unauthorized | Missing, unknown or revoked key |
Also as list_needs_you (MCP), commentgate needs-you.
Answer a Needs you comment
POST/api/v1/autopilot/needs-you/:id/answer
Recorded exactly like answering on Home: the autopilot learns from it, and it shows in the comment's history under the key's creator. Platform limits are the same as for actions.
Who can call it: A key whose creator can moderate (owner, admin, manager or moderator). Runs as that person.
Path parameters
- id string· required
- The comment id (
idin the Needs you list).
Body
- answer enum· required
hidehides it on the platform,keepleaves it up (and unhides it if it was hidden),replykeeps it and posts a public reply.One of:
hide,keep,reply- text string · up to 2,000 characters
- The public reply. Required when
answerisreply.
Example
curl -X POST https://commentgate.com/api/v1/autopilot/needs-you/c11c7e0a-2ff9-4472-870c-0a8d6b1ccf5a/answer \
-H "Authorization: Bearer $COMMENTGATE_API_KEY" \
-H "content-type: application/json" \
-d '{"answer":"reply","text":"Same sole, and we resole it for life."}' 202 Accepted. Platform work was queued.
{
"data": {
"comment_id": "c11c7e0a-2ff9-4472-870c-0a8d6b1ccf5a",
"answer": "reply",
"queued": true
}
} 200 OK. The answer was local only (keep on a comment that was not hidden).
{
"data": {
"comment_id": "c11c7e0a-2ff9-4472-870c-0a8d6b1ccf5a",
"answer": "keep",
"queued": false
}
} Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_request | A bad body |
| 401 | unauthorized | Missing, unknown or revoked key |
| 403 | forbidden | The key's creator can no longer moderate |
| 404 | not_found | No comment with that id in this workspace |
| 409 | conflict | The comment was removed |
| 422 | unprocessable | The platform does not allow it. The message says why |
Also as answer_needs_you (MCP), commentgate needs-you.
Get guidance
GET/api/v1/autopilot/guidance
The brand's plain-language guidance from Setup. policy_version counts how many times the brand policy has been compiled, or is null before the first time.
Who can call it: Any API key.
Example
curl https://commentgate.com/api/v1/autopilot/guidance \
-H "Authorization: Bearer $COMMENTGATE_API_KEY" 200 OK. The guidance.
{
"data": {
"guidance": "We make hiking boots. Keep questions about sizing and resoling up.",
"policy_version": 3
}
} Errors
| HTTP | Code | When |
|---|---|---|
| 401 | unauthorized | Missing, unknown or revoked key |
Also as get_guidance (MCP), commentgate guidance.
Replace guidance
PUT/api/v1/autopilot/guidance
Replaces the whole text, compiles the brand's policy again (as saving Setup does) and applies to new comments right away. Recorded in the audit log.
Who can call it: A key whose creator can change autopilot settings for every account (an owner, an admin, or a manager who is not limited to some accounts).
Body
- guidance string · up to 2,000 characters· required
- The full new guidance. An empty string clears it.
Example
curl -X PUT https://commentgate.com/api/v1/autopilot/guidance \
-H "Authorization: Bearer $COMMENTGATE_API_KEY" \
-H "content-type: application/json" \
-d '{"guidance":"We make hiking boots. Keep questions about sizing and resoling up."}' 200 OK. The saved guidance.
{
"data": {
"guidance": "We make hiking boots. Keep questions about sizing and resoling up.",
"policy_version": 4
}
} Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_request | Not JSON, or longer than 2,000 characters |
| 401 | unauthorized | Missing, unknown or revoked key |
| 403 | forbidden | The key's creator is not an owner, admin or manager, or is limited to some accounts |
Also as update_guidance (MCP), commentgate guidance.
List protections
GET/api/v1/autopilot/protections
The Setup switches. Keys: scams, spam, hate, competitors, profanity, links, contact (phone numbers and emails), media (images and GIFs), negative. answer_questions is off, draft or send.
customized_accounts have their own settings (Setup, Customize for one account), which these switches do not change.
Who can call it: Any API key.
Example
curl https://commentgate.com/api/v1/autopilot/protections \
-H "Authorization: Bearer $COMMENTGATE_API_KEY" 200 OK. The switches.
{
"data": {
"protections": [
{
"key": "scams",
"label": "Hide scams and fake giveaways",
"description": "Fake prize winners, \"DM me to claim\", fake support accounts and phishing.",
"on": true
},
{
"key": "spam",
"label": "Hide spam",
"description": "Unrelated promotion, follow-for-follow, adult spam and people plugging their own pages.",
"on": true
},
{
"key": "hate",
"label": "Hide hate and harassment",
"description": "Slurs, personal attacks on your customers or staff, and threats.",
"on": true
},
{
"key": "competitors",
"label": "Hide competitor mentions",
"description": "People steering your customers to another brand.",
"on": true
},
{
"key": "profanity",
"label": "Hide profanity",
"description": "Swearing and crude language.",
"on": false
},
{
"key": "links",
"label": "Hide links",
"description": "Any comment with a link to another site. Links to your own site stay up.",
"on": false
},
{
"key": "contact",
"label": "Hide phone numbers and emails",
"description": "Keeps your customers from being contacted by strangers in your comments.",
"on": false
},
{
"key": "media",
"label": "Hide images and GIFs",
"description": "Comments that are a picture, GIF or sticker.",
"on": false
},
{
"key": "negative",
"label": "Hide negative comments",
"description": "Criticism of your brand or products. Most brands leave these up and answer them.",
"on": false
}
],
"answer_questions": "draft",
"customized_accounts": [
{
"id": "07f900ae-5b1c-4d7e-9a02-6c3f8e1d2b44",
"name": "Wildermere UK"
}
]
}
} Errors
| HTTP | Code | When |
|---|---|---|
| 401 | unauthorized | Missing, unknown or revoked key |
Also as list_protections (MCP), commentgate protections.
Change protections
PATCH/api/v1/autopilot/protections
Send only what changes. Returns the full list. Recorded in the audit log.
Who can call it: A key whose creator can change autopilot settings for every account (an owner, an admin, or a manager who is not limited to some accounts).
Body
- scams boolean
- Hide scams and fake giveaways. Fake prize winners, "DM me to claim", fake support accounts and phishing.
- spam boolean
- Hide spam. Unrelated promotion, follow-for-follow, adult spam and people plugging their own pages.
- hate boolean
- Hide hate and harassment. Slurs, personal attacks on your customers or staff, and threats.
- competitors boolean
- Hide competitor mentions. People steering your customers to another brand.
- profanity boolean
- Hide profanity. Swearing and crude language.
- links boolean
- Hide links. Any comment with a link to another site. Links to your own site stay up.
- contact boolean
- Hide phone numbers and emails. Keeps your customers from being contacted by strangers in your comments.
- media boolean
- Hide images and GIFs. Comments that are a picture, GIF or sticker.
- negative boolean
- Hide negative comments. Criticism of your brand or products. Most brands leave these up and answer them.
- answer_questions enum
off,draft(for approval) orsend(on its own).One of:
off,draft,send
Example
curl -X PATCH https://commentgate.com/api/v1/autopilot/protections \
-H "Authorization: Bearer $COMMENTGATE_API_KEY" \
-H "content-type: application/json" \
-d '{"links":true,"answer_questions":"send"}' 200 OK. The full list after the change.
{
"data": {
"protections": [
{
"key": "scams",
"label": "Hide scams and fake giveaways",
"description": "Fake prize winners, \"DM me to claim\", fake support accounts and phishing.",
"on": true
},
{
"key": "spam",
"label": "Hide spam",
"description": "Unrelated promotion, follow-for-follow, adult spam and people plugging their own pages.",
"on": true
},
{
"key": "hate",
"label": "Hide hate and harassment",
"description": "Slurs, personal attacks on your customers or staff, and threats.",
"on": true
},
{
"key": "competitors",
"label": "Hide competitor mentions",
"description": "People steering your customers to another brand.",
"on": true
},
{
"key": "profanity",
"label": "Hide profanity",
"description": "Swearing and crude language.",
"on": false
},
{
"key": "links",
"label": "Hide links",
"description": "Any comment with a link to another site. Links to your own site stay up.",
"on": false
},
{
"key": "contact",
"label": "Hide phone numbers and emails",
"description": "Keeps your customers from being contacted by strangers in your comments.",
"on": false
},
{
"key": "media",
"label": "Hide images and GIFs",
"description": "Comments that are a picture, GIF or sticker.",
"on": false
},
{
"key": "negative",
"label": "Hide negative comments",
"description": "Criticism of your brand or products. Most brands leave these up and answer them.",
"on": false
}
],
"answer_questions": "draft",
"customized_accounts": [
{
"id": "07f900ae-5b1c-4d7e-9a02-6c3f8e1d2b44",
"name": "Wildermere UK"
}
]
}
} Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_request | An unknown key, or nothing to change |
| 401 | unauthorized | Missing, unknown or revoked key |
| 403 | forbidden | The key's creator is not an owner, admin or manager, or is limited to some accounts |
Also as set_protection (MCP), commentgate protections.
In the help center
- What CommentGate does, in 2 minutes
CommentGate reads every comment on your posts and ads, hides the harmful ones, drafts answers and asks you only about the hard calls.
- Your first 15 minutes
Connect your accounts, check the switches on Setup, and clear Needs you once, so CommentGate knows how you like things done.
- How the autopilot learns, and when it acts alone
Every hide, keep, unhide and reply edit is a lesson. When CommentGate agrees with you often enough in an area, it stops asking about it.