# Push documents from your own systems
Source: https://nordvec.com/sk/docs/guides/how-to/push-documents#push-one-document

## Push one document [#push-one-document]

`/documents/push` creates the document, or updates it when a document with the
same `id` already exists in the datasource.

```bash
curl https://nordvec.com/api/v1/documents/push \
  -H "Authorization: Bearer $NORDVEC_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: page-4711-2026-09-28" \
  -d '{
    "tenantId": "YOUR_WORKSPACE_ID",
    "document": {
      "id": "page-4711",
      "title": "Travel expense policy",
      "datasource": "confluence-export",
      "body": { "mimeType": "text/markdown", "content": "# Travel expenses\n..." },
      "permissions": {},
      "sourceUrl": "https://wiki.example.com/pages/4711",
      "type": "policy"
    }
  }'
```

```json
{ "documentId": "page-4711", "status": "queued", "updated": false }
```

* `id` is your stable id for the document within the datasource. Pushing the
  same `id` again updates it; unchanged content is recognised by its hash and
  not indexed twice.
* `body.mimeType` is one of `text/plain`, `text/markdown`, `text/html`,
  `application/pdf`, or the Word, Excel and PowerPoint (`.docx`, `.xlsx`,
  `.pptx`) types. Binary content is sent base64-encoded.
* `sourceUrl` becomes the "jump to source" link on every citation of the
  document. Omit it on a re-push to keep the stored one, or send `null` to
  clear it.
* `type` sets the document's `content_type`, which search and list filter on.

The whole request body is capped at 1 MB, so a large file or a big batch
answers `413`; split it.