Skip to content
Developer docs Autopilot

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

Request
curl https://commentgate.com/api/v1/autopilot \
  -H "Authorization: Bearer $COMMENTGATE_API_KEY"

200 OK. The status.

200 OK response
{
  "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

HTTPCodeWhen
401unauthorizedMissing, 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_cursor from the previous page. Leave it out for the first page.

Example

Request
curl "https://commentgate.com/api/v1/autopilot/needs-you?limit=20" \
  -H "Authorization: Bearer $COMMENTGATE_API_KEY"

200 OK. A page of waiting comments.

200 OK response
{
  "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

HTTPCodeWhen
400invalid_requestA parameter or the cursor is not valid
401unauthorizedMissing, 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 (id in the Needs you list).

Body

answer enum· required
hide hides it on the platform, keep leaves it up (and unhides it if it was hidden), reply keeps it and posts a public reply.

One of: hide, keep, reply

text string · up to 2,000 characters
The public reply. Required when answer is reply.

Example

Request
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.

202 Accepted response
{
  "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).

200 OK response
{
  "data": {
    "comment_id": "c11c7e0a-2ff9-4472-870c-0a8d6b1ccf5a",
    "answer": "keep",
    "queued": false
  }
}

Errors

HTTPCodeWhen
400invalid_requestA bad body
401unauthorizedMissing, unknown or revoked key
403forbiddenThe key's creator can no longer moderate
404not_foundNo comment with that id in this workspace
409conflictThe comment was removed
422unprocessableThe 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

Request
curl https://commentgate.com/api/v1/autopilot/guidance \
  -H "Authorization: Bearer $COMMENTGATE_API_KEY"

200 OK. The guidance.

200 OK response
{
  "data": {
    "guidance": "We make hiking boots. Keep questions about sizing and resoling up.",
    "policy_version": 3
  }
}

Errors

HTTPCodeWhen
401unauthorizedMissing, 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

Request
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.

200 OK response
{
  "data": {
    "guidance": "We make hiking boots. Keep questions about sizing and resoling up.",
    "policy_version": 4
  }
}

Errors

HTTPCodeWhen
400invalid_requestNot JSON, or longer than 2,000 characters
401unauthorizedMissing, unknown or revoked key
403forbiddenThe 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

Request
curl https://commentgate.com/api/v1/autopilot/protections \
  -H "Authorization: Bearer $COMMENTGATE_API_KEY"

200 OK. The switches.

200 OK response
{
  "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

HTTPCodeWhen
401unauthorizedMissing, 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) or send (on its own).

One of: off, draft, send

Example

Request
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.

200 OK response
{
  "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

HTTPCodeWhen
400invalid_requestAn unknown key, or nothing to change
401unauthorizedMissing, unknown or revoked key
403forbiddenThe 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