# Start an Ask AI check

- **OpenAPI Version:** `3.2.0`
- **API Version:** `3.1.0`
- **Contact:** Syndai <https://syndai.ai>

## Contents

**Operations**

- [POST /api/v1/external/coding/customers/{customer\_id}/sites/{site\_id}/answers](#scalar-operation-post-apiv1externalcodingcustomerscustomer-idsitessite-idanswers)

**Schemas**

- [AnswerCheckRequest](#scalar-schema-answercheckrequest)
- [AnswerCheckResponse](#scalar-schema-answercheckresponse)
- [AnswerCheckRead](#scalar-schema-answercheckread)
- [ProblemDetail](#scalar-schema-problemdetail)
- [ExternalErrorCode](#scalar-schema-externalerrorcode)

<a id="scalar-context-global-servers"></a>

## Servers

- **URL:** `https://api.syndai.ai`

<a id="scalar-context-global-authentication"></a>

## Authentication

- **CustomerApiKey**: HTTP bearer (`API Key`)

  Customer API key sent as a bearer token

## Tags

### Sites

Beta: may change without notice. Websites connected for search and AI visibility: connect a site, link it to Google Search Console, read its SEO tab, show or hide it on Google, and run a priced Ask AI check of how assistants answer about it.

## Operations

<a id="scalar-operation-post-apiv1externalcodingcustomerscustomer-idsitessite-idanswers"></a>

### Start an Ask AI check

- **Method:** `POST`
- **Path:** `/api/v1/external/coding/customers/{customer_id}/sites/{site_id}/answers`
- **Operation ID:** `startAnswerCheck`
- **Tags:** Sites

Starts paid work: asks 1-5 questions on ChatGPT (with web search), Gemini, Google AI Mode and the Google AI Overview in the background, and judges whether each answer names the business, cites its site and gets its phone, address or claims wrong; poll `GET .../answers/latest` for the result. Charged from credits after it runs: vendor cost x 1.20, never above the estimate's `max_usd`. A check already in flight is returned as-is (nothing new is charged); no question is 400, a 4th check of the site today is 429 `check_limit`, too few credits for the worst case is 402 before any vendor call. Needs `coding:apps:publish`; a portal member who is not an owner or admin is 403.

**Servers:** [Inherited servers](#scalar-context-global-servers)

**Authentication:** [Global authentication](#scalar-context-global-authentication)

#### Path parameters

- **`customer_id` (required)**: `string`, format: `uuid`
- **`site_id` (required)**: `string`, format: `uuid`

#### Request body

**Required:** `true`

**Content type:** `application/json`

[AnswerCheckRequest](#scalar-schema-answercheckrequest)

<a id="scalar-example-1"></a>

**Generated example:**

```json
{
  "questions": [
    ""
  ]
}
```

#### Responses

##### 200 Request fulfilled, document follows

**Content type:** `application/json`

[AnswerCheckResponse](#scalar-schema-answercheckresponse)

<a id="scalar-example-2"></a>

**Generated example:**

```json
{
  "check": {
    "charged_usd": 1,
    "created_at": "",
    "error": "",
    "finished_at": "",
    "id": "",
    "questions": [
      ""
    ],
    "results": {
      "additionalProperty": "anything"
    },
    "state": ""
  }
}
```

##### 400, 401, 403, 404

- `400` Bad request syntax or unsupported method
- `401` Invalid or missing customer API key
- `403` Insufficient scope or forbidden customer access
- `404` Resource not found

**Content type:** `application/problem+json`

[ProblemDetail](#scalar-schema-problemdetail)

RFC 7807 problem detail returned for public CaaS errors.

<a id="scalar-example-3"></a>

**Generated example:**

```json
{
  "code": "BUDGET_EXHAUSTED",
  "detail": null,
  "existing_run_id": null,
  "instance": null,
  "status": 1,
  "title": "",
  "type": "about:blank",
  "additionalProperty": "anything"
}
```

##### 429 Rate limit exceeded

**Headers:**

- **`Retry-After`**

  Seconds to wait before retrying the request

  `integer`

**Content type:** `application/problem+json`

[ProblemDetail](#scalar-schema-problemdetail)

RFC 7807 problem detail returned for public CaaS errors.

[Generated example](#scalar-example-3)

##### default Unexpected error

**Content type:** `application/problem+json`

[ProblemDetail](#scalar-schema-problemdetail)

<a id="scalar-example-4"></a>

**Generated example:**

```json
null
```

## Schemas

<a id="scalar-schema-answercheckrequest"></a>

### AnswerCheckRequest

**Type:** `object`

- **`questions` (required)**: `array of string`, minItems: `1`, maxItems: `5`

<a id="scalar-example-5"></a>

**Generated example:**

```json
{
  "questions": [
    ""
  ]
}
```

<a id="scalar-schema-answercheckresponse"></a>

### AnswerCheckResponse

**Type:** `object`

- **`check`**: [AnswerCheckRead](#scalar-schema-answercheckread) | `null`

<a id="scalar-example-6"></a>

**Generated example:**

```json
{
  "check": {
    "charged_usd": 1,
    "created_at": "",
    "error": "",
    "finished_at": "",
    "id": "",
    "questions": [
      ""
    ],
    "results": {
      "additionalProperty": "anything"
    },
    "state": ""
  }
}
```

<a id="scalar-schema-answercheckread"></a>

### AnswerCheckRead

**Type:** `object`

- **`charged_usd` (required)**: `number`
- **`created_at` (required)**: `string`
- **`id` (required)**: `string`
- **`questions` (required)**: `array of string`
- **`state` (required)**: `string`
- **`error`**: `string | null`
- **`finished_at`**: `string | null`
- **`results`**: `object | null`

<a id="scalar-example-7"></a>

**Generated example:**

```json
{
  "charged_usd": 1,
  "created_at": "",
  "error": "",
  "finished_at": "",
  "id": "",
  "questions": [
    ""
  ],
  "results": {
    "additionalProperty": "anything"
  },
  "state": ""
}
```

<a id="scalar-schema-problemdetail"></a>

### ProblemDetail

**Type:** `object`

RFC 7807 problem detail returned for public CaaS errors.

- **`code` (required)**: `string`, possible values: `"BUDGET_EXHAUSTED", "QUOTA_EXCEEDED", "RUN_CONCURRENCY_LIMIT", "CUSTOMER_DISABLED", "REPO_NOT_BOUND", "IDEMPOTENCY_REPLAY", "CONFLICT", "MISSION_BUSY_RETRY", "HITL_REQUEST_CONFLICT", "HITL_REQUEST_SETTLED", "RUN_TERMINATED_BEFORE_RESPONSE", "INVALID_POLICY", "INVALID_SCOPE", "RATE_LIMITED", "INSTALLATION_INCOMPLETE", "SUBSCRIPTION_USAGE_UNAVAILABLE", "INVALID_TOKEN", "ROLE_REQUIRED", "PLAN_UPGRADE_REQUIRED", "EMAIL_MISMATCH", "EXPIRED_TOKEN", "NOT_FOUND", "OVERSCOPE_ACK_REQUIRED", "VERIFY_FAILED", "PUBLISH_IN_FLIGHT", "PUBLISH_UNSUPPORTED_REPO", "PUBLICATION_NOT_LIVE", "NO_APP_DATA", "FEATURE_REQUESTS_NEEDS_MEMBERS", "EMPTY_UPDATE", "BAD_CURSOR", "HUMAN_APPROVAL_REQUIRED", "PROTECTED_PATHS_MANAGED_ONLY", "RUN_IN_FLIGHT", "TEXT_EDIT_REFUSED", "CLI_UPGRADE_REQUIRED", "PRODUCTION_STEP_UP_REQUIRED", "PRICES_UPDATING", "GITHUB_UNAVAILABLE", "PUBLISH_NOT_SET_UP", "VERSION_NOT_DEPLOYED", "INTERNAL_ERROR"`

  Stable error codes surfaced to public CaaS clients.
- **`status` (required)**: `integer`
- **`title` (required)**: `string`
- **`detail`**: `string | null`, default: `null`
- **`existing_run_id`**: `string | null`, default: `null`
- **`instance`**: `string | null`, default: `null`
- **`type`**: `string`, default: `"about:blank"`

<a id="scalar-example-8"></a>

**Generated example:**

```json
{
  "code": "BUDGET_EXHAUSTED",
  "detail": null,
  "existing_run_id": null,
  "instance": null,
  "status": 1,
  "title": "",
  "type": "about:blank",
  "additionalProperty": "anything"
}
```

<a id="scalar-schema-externalerrorcode"></a>

### ExternalErrorCode

**Type:** `string`, possible values: `"BUDGET_EXHAUSTED", "QUOTA_EXCEEDED", "RUN_CONCURRENCY_LIMIT", "CUSTOMER_DISABLED", "REPO_NOT_BOUND", "IDEMPOTENCY_REPLAY", "CONFLICT", "MISSION_BUSY_RETRY", "HITL_REQUEST_CONFLICT", "HITL_REQUEST_SETTLED", "RUN_TERMINATED_BEFORE_RESPONSE", "INVALID_POLICY", "INVALID_SCOPE", "RATE_LIMITED", "INSTALLATION_INCOMPLETE", "SUBSCRIPTION_USAGE_UNAVAILABLE", "INVALID_TOKEN", "ROLE_REQUIRED", "PLAN_UPGRADE_REQUIRED", "EMAIL_MISMATCH", "EXPIRED_TOKEN", "NOT_FOUND", "OVERSCOPE_ACK_REQUIRED", "VERIFY_FAILED", "PUBLISH_IN_FLIGHT", "PUBLISH_UNSUPPORTED_REPO", "PUBLICATION_NOT_LIVE", "NO_APP_DATA", "FEATURE_REQUESTS_NEEDS_MEMBERS", "EMPTY_UPDATE", "BAD_CURSOR", "HUMAN_APPROVAL_REQUIRED", "PROTECTED_PATHS_MANAGED_ONLY", "RUN_IN_FLIGHT", "TEXT_EDIT_REFUSED", "CLI_UPGRADE_REQUIRED", "PRODUCTION_STEP_UP_REQUIRED", "PRICES_UPDATING", "GITHUB_UNAVAILABLE", "PUBLISH_NOT_SET_UP", "VERSION_NOT_DEPLOYED", "INTERNAL_ERROR"`

Stable error codes surfaced to public CaaS clients.
