> ## Documentation Index
> Fetch the complete documentation index at: https://docs.searchcompany.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit IndexNow

> Submit URLs to IndexNow for instant search engine indexing

Internal endpoint for the Cron service to notify search engines about new URLs.

<Note>
  IndexNow submissions are automatically shared across all participating search
  engines: **Bing, Yandex, Naver, Seznam.cz, Yep, and Amazon**.
</Note>

## Why IndexNow?

Without IndexNow, search engines may take days to weeks to discover new content.
With IndexNow, search engines are notified immediately when content is added,
updated, or deleted.

## Request Body

<ParamField body="source_url" type="string" required>
  The customer's real domain (e.g. "[https://nike.com](https://nike.com)"). IndexNow submissions must match this host.
</ParamField>

<ParamField body="urls" type="array" required>
  Array of full URLs to submit (up to 10,000 per request)
</ParamField>

## Response

<ResponseField name="status" type="string">
  "success" or "error"
</ResponseField>

<ResponseField name="submitted" type="integer">
  Number of URLs submitted
</ResponseField>

<ResponseField name="http_status" type="integer">
  HTTP status code from IndexNow API
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://searchcompany-main.up.railway.app/api/cron/submit-indexnow \
    -H "Content-Type: application/json" \
    -d '{
      "source_url": "https://nike.com",
      "urls": [
        "https://nike.com/expert-review/",
        "https://nike.com/comparison/"
      ]
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "status": "success",
    "submitted": 2,
    "http_status": 200
  }
  ```
</ResponseExample>

## IndexNow Response Codes

| Code | Meaning                                           |
| ---- | ------------------------------------------------- |
| 200  | OK - URLs submitted successfully                  |
| 202  | Accepted - URLs received, key validation pending  |
| 400  | Bad request - Invalid format                      |
| 403  | Forbidden - Key not valid (check key file exists) |
| 422  | Unprocessable - URLs don't belong to host         |
| 429  | Too Many Requests - Rate limited                  |

## Key Verification

IndexNow requires a key file at the site root to verify ownership.
This is automatically added during site creation:

```
https://example.searchcompany.dev/{INDEXNOW_KEY}.txt
```

The key file contains the key itself (from `INDEXNOW_KEY` env var).

## Workflow

This is Phase 3 of the AI articles workflow:

```
Phase 1: Generate content (parallel)
├── create-ai-article (×N) → Returns files

Phase 2: Deploy to Vercel (single deployment)
└── deploy-to-vercel → Deploys all files

Phase 3: Submit to IndexNow (this endpoint)
└── submit-indexnow → Notifies search engines
```

## Documentation

* [IndexNow Documentation](https://www.indexnow.org/documentation)
* [IndexNow FAQ](https://www.indexnow.org/faq)
