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

# agentlinkops index submissions-import

> Retain reported IndexNow responses as immutable local receipts.

```bash theme={null}
agentlinkops index submissions-import FILE
```

## Behavior and output

Imports an array of up to 100 caller-supplied submission receipts into `.agentlinkops/index-submissions.jsonl`. The `paths.indexSubmissions` configuration field can change this location. Input and stored files are capped at 32 MiB. A writer lock protects an atomic merge. The pair `project_id` and `id` identifies one immutable attempt: identical replays keep one record; changed content conflicts. Use a new ID for each actual attempt. The command makes no network requests and sends no URL submissions.

## Receipt schema

Every row must contain exactly these nine fields. Extra fields, including credentials, are rejected.

| Field             | Required value                                                                           |
| ----------------- | ---------------------------------------------------------------------------------------- |
| `v`               | Integer `1`                                                                              |
| `id`              | One to 128 ASCII letters, digits, underscores or hyphens                                 |
| `project_id`      | Same character and length rules as `id`; the project whose observations will be compared |
| `url`             | Exact HTTP(S) URL in JavaScript `new URL(value).href` form; no credentials or fragment   |
| `channel`         | `indexnow`                                                                               |
| `endpoint`        | `https://api.indexnow.org/indexnow`; other endpoints are outside this import contract    |
| `submitted_at`    | Valid UTC ISO timestamp with milliseconds, such as `2026-09-20T12:00:00.000Z`            |
| `http_status`     | Integer from 100 through 599, or `null` for an unknown transport outcome                 |
| `evidence_sha256` | Lowercase SHA256 hex digest of the canonical receipt fields described below              |

For hashing, construct an object in this exact insertion order: `v`, `id`, `project_id`, `url`, `channel`, `endpoint`, `submitted_at`, `http_status`. Hash the UTF-8 bytes of `JSON.stringify(body)` with no pretty printing or trailing newline. Exclude `evidence_sha256` from the hash. JSON field order in the imported file may differ; validation reconstructs the stated order.

The digest checks local integrity. It does not authenticate the provider or prove the request happened. Retain actual response evidence in your own records; do not invent timestamps or responses. Never put an IndexNow key, authorization header or request body in this file.

## Build an illustrative import file

Save this as `make-submission.mjs` and run `node make-submission.mjs`. This example sends nothing and records no actual provider result. Replace its example values with a response you retained before using it as evidence.

```js theme={null}
import { createHash } from 'node:crypto';
import { writeFileSync } from 'node:fs';

// Illustrative receipt only. Replace with your actual recorded response.
const body = {
  v: 1,
  id: 'submission-example-001',
  project_id: 'pr_example',
  url: 'https://example.com/article/',
  channel: 'indexnow',
  endpoint: 'https://api.indexnow.org/indexnow',
  submitted_at: '2026-09-20T12:00:00.000Z',
  http_status: 202,
};
const evidence_sha256 = createHash('sha256')
  .update(JSON.stringify(body), 'utf8').digest('hex');
writeFileSync('submissions.json', JSON.stringify([{ ...body, evidence_sha256 }], null, 2));
```

```bash theme={null}
agentlinkops index submissions-import submissions.json
agentlinkops index submissions-export --project-id pr_example
agentlinkops index reconcile-submissions --project-id pr_example
```

A successful import prints `imported` (input row count, including replays) and `total` (all stored projects). Read [submission exports](/reference/local/index-submissions-export) for a project-filtered archive and [chronological reconciliation](/reference/local/index-reconcile-submissions) for later observations. Existing [index receipt import](/reference/local/index-import) supplies the separate observation archive.

## Arguments

FILE: JSON array of up to 100 receipts. No command-specific options.

## Exit status

0 on success; 2 on invalid input, receipt conflict, configuration or file failure.

Read [configuration and file ownership](/reference/local/configuration) before automating this command. Read [local file contracts](/reference/local/artifacts) for artifact fields. Browse the [local command index](/reference/local/index) for related commands.

<Note>Check the selected environment and workspace access before calling hosted operations. See [capability status](/capability-status).</Note>
