--- title: Create a Push source slug: '94' canonical_url: https://docs.coveo.com/en/94/ collection: index-content source_format: adoc --- # Create a Push source :figure-caption!: A Push [source](https://docs.coveo.com/en/246/) requires you to use the Push API to manage its content, whereas a non-Push source manages its content with Coveo [crawlers](https://docs.coveo.com/en/2121/). Creating a Push source allows you to index content from enterprise systems for which no specific or generic [source](https://docs.coveo.com/en/1702#connector-types) is appropriate. This page explains how to create a Push source using Coveo's Source API. Alternatively, you can [create a Push source through the Coveo Administration Console](https://docs.coveo.com/en/1546#add-a-push-source). > **Note** > > Prerequisites: > > * The license of the target [Coveo organization](https://docs.coveo.com/en/185/) must allow you to create `PUSH` type sources (see [Get the organization license information](https://docs.coveo.com/en/77/)). > * The following [limits](https://docs.coveo.com/en/262/) must not have been reached in the target Coveo organization (see [Get the organization limit status](https://docs.coveo.com/en/165/)): > ** `numberOfSourcesLimit`. > ** `numberOfSecurityProvidersLimit` (to create a secured Push source). Use the [Create a source from simple configuration](https://platform.cloud.coveo.com/docs?urls.primaryName=Source#/Sources/rest_organizations_paramId_sources_post) operation to create a Push source in a [Coveo organization](https://docs.coveo.com/en/185/). ```http POST https://platform.cloud.coveo.com/rest/organizations//sources HTTP/1.1 ​ Content-Type: application/json Accept: application/json Authorization: Bearer ``` Request body: ```json { "sourceType": "PUSH", "name": , "sourceVisibility": <"PRIVATE"|"SECURED"|"SHARED">, "pushEnabled": true } ``` In the request path: * Replace `` with your [organization ID](https://docs.coveo.com/en/148/). In the `Authorization` HTTP header: * Replace `` with an access token that grants the privilege to edit sources (that is, the **Edit** access level on the **Sources** domain) in the target organization (see [Create an API key](https://docs.coveo.com/en/1718#create-an-api-key), [Get the privileges of an access token](https://docs.coveo.com/en/109/), [Manage privileges](https://docs.coveo.com/en/3151/), and [Get your Coveo access token](https://docs.coveo.com/en/123/)). In the request body: * Replace `` with a meaningful `name` string. > **Important** > > You can't change the name of a source once it has been created, so make sure you choose one that fits the intended content of that source. * Replace `<"PRIVATE"|"SECURED"|"SHARED">` with one of the valid `sourceVisibility` strings. > **Notes** > > * The `sourceVisibility` parameter determines who can access your Push source's content in their Coveo search results. > The supported values are the following: > |=== > | `sourceVisibility` | Items can be accessed by | Permission level | Administration console [content security](https://docs.coveo.com/en/1779/) equivalent > > | `PRIVATE` > | Specified identities only > | Source > | Specific users and groups > > | `SECURED` > | Users and groups following the repository's permission system > | Item > | Same users and groups as in your content system > > | `SHARED` > | All users (public) > | Source > | Everyone > |=== > > * You can [set source-level permissions](https://docs.coveo.com/en/3246/) for `PRIVATE` and `SHARED` sources by modifying their JSON configuration. The body of a successful response contains information about the source you just created. The `id` property value is important, as it's a required parameter in many Coveo REST API operations. You can always [retrieve this ID](https://docs.coveo.com/en/3390#copy-a-source-name-or-id) later. > **Leading practice: Create a security identity provider** > > Immediately after you create a secured Push source, you should [create a security identity provider](https://docs.coveo.com/en/85/) for it. > A security identity provider allows you to push expandable identity definitions in order to faithfully replicate the security model of the system you're planning to index with your source. ## Sample request The following example shows how to create a secured Push source. ```http POST https://platform.cloud.coveo.com/rest/organizations/mycoveocloudv2organizationg8tp8wu3/sources HTTP/1.1 ​ Content-Type: application/json Accept: application/json Authorization: Bearer **********-****-****-****-************ ``` Request body: ```json { "sourceType": "PUSH", "name": "My Secured Push Source", "sourceVisibility": "SECURED", "pushEnabled": true } ``` Successful response: `201 Created` The body of a successful response contains information about the source you just created. ```json { "sourceType": "PUSH", "id": "mycoveocloudv2organizationg8tp8wu3-rp5rxzbdz753uhndklv2ztkfgy", "name": "My Secured Push Source", "owner": "asmith@example.com", "sourceVisibility": "SECURED", "information": { // ...Additional source information... }, "pushEnabled": true, // ...Additional information... } ```