---
title: "Submits OKF bundles from a domain you control, using the IndexNow protocol."
method: POST
path: "/api/ping"
---

# Submits OKF bundles from a domain you control, using the IndexNow protocol.

`POST /api/ping`

## Request

- Base URL: `https://okfindex.com`
- URL: `https://okfindex.com/api/ping`
- Auth: none declared

No account, no payment: ownership is proved by a key file on the host, exactly as IndexNow does it. Host `https://<host>/<key>.txt` containing the key (or point `keyLocation` at another path on the SAME host), then send the bundle URLs. We answer **202**: the key has not been checked yet. Verification and reading happen on our collector, never at the edge — so nothing is published, and no URL of yours is fetched, before the key matches. Re-sending a URL is how you say the bundle changed; it goes back in line to be re-read. At most 100 URLs per request and 200 per host per UTC day. Bundles in public GitHub repositories need no ping: the sweep finds them.
Returns: { ok, estado, host, recebidos, chave_em, mensagem, api_index }

## Request body

- object
  - `urlList` string[], required: The bundle roots (`index.md` files): https, on `host`, ending in .md — any path, since the spec fixes none.
  - `host` string, required: The domain that serves the bundles and the key file.
  - `key` string, required: The IndexNow key: 8 to 128 characters of [a-zA-Z0-9-].
  - `keyLocation` string: Alternative location of the key file, on the SAME host. Default: `https://<host>/<key>.txt`.

## Response `202`

{ ok, estado, host, recebidos, chave_em, mensagem, api_index }

- object
  - `ok` boolean, required: The submission was queued.
  - `estado` string, required: Always `pendente`: the key has not been checked yet.
  - `host` string, required: The host as normalized (lowercase).
  - `recebidos` integer, required: How many distinct URLs entered the queue.
  - `chave_em` string, required: Where we will look for the key file. Check it if you are unsure.
  - `mensagem` string, required: What happens next, in one sentence.
  - `api_index` string, required: Absolute URL of this API's index.

## Other responses

- `400`: Body is not JSON, `host` is not a domain, `key` is out of shape, or `urlList` is missing/empty/over 100.
- `422`: Some URL is not https, does not end in .md or lives on another host; `keyLocation` off-host too.
- `429`: The host already submitted 200 bundles this UTC day.

---

[API](https://skmtc.dev/okfindex/apis/okf-index.md) · [All operations](https://skmtc.dev/okfindex/apis/okf-index/llms.txt) · [OpenAPI document](https://skmtc.dev/okfindex/apis/okf-index/revisions/4b13ca3c739f?raw)
