---
title: "Submit an internal developer source ingestion"
method: POST
path: "/internal/retrieval/ingestions"
tags: ["Internal retrieval"]
---

# Submit an internal developer source ingestion

`POST /internal/retrieval/ingestions`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/internal/retrieval/ingestions`
- Auth: API key in header `x-api-key`

Admin-plan only. Submits a durable refresh of operator-registered sources. The current supported corpus is developer and the current source is go:docs. `papers` is a known corpus value but is unsupported by this endpoint. Partial or failed refreshes are never promoted. No caller URL, repository, credential, or arbitrary source is accepted.

## Headers

- `x-api-key` string, required

## Request body

- DeveloperretrievalIngestionRequest
  - `corpus` 'papers' | 'developer', required
  - `idempotency_key` string, required
  - `max_items` integer
  - `refresh_mode` 'incremental' | 'full'
  - `sources` string[], required
  - `timeout_seconds` integer

## Response `202`

Accepted ingestion job

- DeveloperretrievalInternalIngestionSubmissionResponseDoc
  - `code` integer
  - `data` DeveloperretrievalInternalIngestionSubmissionDoc
    - `deadline_at` string
    - `job_id` string
    - `replayed` boolean
    - `state` 'queued' | 'running' | 'cancelling' | 'succeeded' | 'failed' | 'cancelled'
    - `status_url` string
  - `msg` string

## Other responses

- `400`: Invalid input or idempotency conflict
- `401`: Authentication required
- `402`: Trusted operator budget exhausted
- `403`: Admin access required
- `429`: Active-job or admission limit reached
- `500`: Internal persistence error
- `503`: Ingestion runtime unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/0497899e2016?raw)
