Prerequisites
QUIVR_API_URL,QUIVR_API_KEYwithconnectors:readandconnectors:writeon the target Corpus, and a Corpus inCORPUS_ID(Add content).- The plugin that provides the kind, pinned. The local stack pins
rss,m365_mailandx_list. - For kinds that need a secret, a
credential_keyin Quivr’s configuration. Without it, Quivr refuses any credential with503 credentials_unavailable; kinds without a secret, such as public feeds, still work.
See what you can create
credential says whether the kind takes one: none, optional or required.
Create an instance
interval_seconds, which must be at least the deployment’s floor (30 seconds by default) and at most 24 hours.
The Source Namespace partitions Record Keys: one enabled instance owns a Corpus and Source Namespace pair. To replace an instance, disable it and create the new one on the same namespace, so existing Records keep their identity. A configuration the kind’s schema refuses is 422 invalid_config, with a JSON Pointer to the field at fault in field, such as /config/url.
Watch its health
Timeouts and server errors do not change the state: they show in
last_error and are retried at the next run. Kinds that pay per item read also report health.usage, and a kind’s own details appear in health.diagnostics. Rather than polling instances, follow connector.health_changed and the other connector.* events on the change feed (GET /v0/changes).
Change the schedule or check now
Retry-After from the source.
Pause and resume collection
Before using pause, upgrade the workers before the API and confirm every previous worker has drained and stopped. Previous workers do not understand the paused state. SendPOST /v0/connectors/{connector_id}/pause with an idempotency_key in the JSON body, using the instance’s CONNECTOR_ID and a key with connectors:write on its Corpus. The response is the Connector resource with paused_at set. Pause stops scheduled collection, including a long import that keeps continuing; the last saved position is kept across worker restarts. A source request already in progress may finish, but cannot save a later position after pause.
Send POST /v0/connectors/{connector_id}/resume with the same body shape to continue from that position. The response omits paused_at; collection becomes due immediately unless the source asked Quivr to wait with Retry-After. Repeating either call while already in that state changes nothing. Read or list connectors to check paused_at; enabled stays true and health reflects its last evaluation. Pause stops polling the source.
A manual run request while paused returns 409 connector_paused. You can change the schedule or rotate credentials while paused. Incoming push deliveries remain available; use permanent disable to stop the instance entirely. Disabled instances refuse pause and resume with 409 connector_disabled.
Deposit or replace a credential
Send the secret when you create the instance, incredential, or replace it later:
expires_at whenever the provider’s secret expires, so health warns you in time.
Give a third party a push token
Receive and secure pushes shows how to issue a token, send data and read its Receipts. Use its token lifecycle guide for rotation and revocation; the operator key needsconnectors:admin.
Disable an instance
What to expect
- An item fetched again, for example after a restart, returns its original Receipt; it never creates a duplicate. A changed item becomes a new Version of its Record.
- An item that disappears from the source is not withdrawn, unless the kind’s page says otherwise.
- Idempotency keys that start with
connector:are reserved for connectors; your own submissions may not use them.