Skip to main content
POST
Creating a source validates and stores its configuration. It does not read anything. To ingest the source, call Sync a source. configuration is a flat object. Every value is a string, and lists are comma-separated inside one string, for example "docs/,README.md". Numbers are accepted and converted to strings. Booleans, arrays and nested objects are refused. The configuration is checked for its source_type when you create the source, so a malformed URL or repository name returns 400 here, not later during ingestion. The response returns the stored form: keys the source type does not read are dropped, and optional keys you left out are filled in with their defaults. No credential can be passed in configuration. Everything in it is readable by every member of your organization. A source that signs in names a saved connection with connection_id instead, and the token stays in the connection. Creating a source requires a role that can manage knowledge. A read-only member receives 403. A collection_id that is not in your organization returns 404. See Knowledge sources for guidance on choosing a source type.
string
required
ID (a UUID) of the collection to ingest into. A malformed ID returns 400. Syncing a source whose collection is archived is accepted, and the job then ends failed.
string
required
One of the source_type values listed on Connectors, such as website, github or upload. Any other value returns 400.
string
required
Display name, 1 to 255 characters after trimming.
object
Settings for the source type. At most 50 keys, and each value at most 8,192 characters, except an upload source’s files, which may hold up to 102,400 (its 200 entries at their longest). The keys each type reads are listed below. The field itself may be omitted, but every source type has a required setting, so in practice a source created without configuration is refused with 400.
string
ID (a UUID) of a saved connection to read the source with. Required for confluence, jira and jira_service_management (an atlassian connection), notion (a notion connection) and zendesk_tickets (a zendesk connection); optional for the four GitHub types, where a github connection reads a private repository. Any other type refuses one with 400, as does a connection of the wrong service. A connection in another organization returns 404. You need the owner or admin role to name one. It cannot be changed later, and it is not returned in the response.
boolean
Answer each person only from the documents the source system lets them read. See Source permissions. Offered only where the response’s source_permissions_available is true; true anywhere else returns 400. Left out, a new source takes the default: on wherever it is available.
Sources describes what each type reads and its limits. To change a source after it is created, see Update a source. In include_paths and exclude_paths, * matches within one path segment, ** matches across segments, ? matches one character, and a trailing / matches everything below a directory.

Response

Returns 201 with the new source.
string
required
Source ID (a UUID).
string
required
Collection the source ingests into.
string
required
The source_type the source was created with.
string
required
The trimmed name.
object
required
The stored configuration. Every key the source type reads is present, with defaults filled in, and every value is a string.
string
required
active for a new source.
string | null
required
null until the source has been ingested.
string | null
required
null until the source has been ingested.
string
required
When the source was created, ISO 8601 in UTC.
string
required
When the source was last changed, ISO 8601 in UTC.
Last modified on November 7, 2026