---
title: "Create a source"
method: POST
path: "/v1/projects/{projectID}/sources"
tags: ["Sources"]
---

# Create a source

`POST /v1/projects/{projectID}/sources`

This endpoint creates a source

## Path parameters

- `projectID` string, required

## Request body

- ModelsCreateSource
  - `custom_response` ModelsCustomResponse
    - `body` string
    - `content_type` string
  - `idempotency_keys` string[] — IdempotencyKeys are used to specify parts of a webhook request to uniquely identify the event in an incoming webhooks project.
  - `is_disabled` boolean — This is used to manually enable/disable the source.
  - `name` string — Source name.
  - `provider` 'github' | 'twitter' | 'shopify'
  - `pub_sub` ModelsPubSubConfig
    - `amqp` ModelsAmqpPubSubconfig
      - `auth` ModelsAmqpAuth
        - `password` string
        - `user` string
      - `bindExchange` ModelsAmqpExchange
        - `exchange` string
        - `routingKey` string
      - `deadLetterExchange` string
      - `host` string
      - `port` string
      - `queue` string
      - `schema` string
    - `google` ModelsGooglePubSubConfig
      - `project_id` string
      - `service_account` integer[]
      - `subscription_id` string
    - `kafka` ModelsKafkaPubSubConfig
      - `auth` ModelsKafkaAuth
        - `hash` string
        - `password` string
        - `tls` boolean
        - `type` string
        - `username` string
      - `brokers` string[]
      - `consumer_group_id` string
      - `topic_name` string
    - `sqs` ModelsSQSPubSubConfig
      - `access_key_id` string
      - `default_region` string
      - `queue_name` string
      - `secret_key` string
    - `type` 'sqs' | 'google' | 'kafka' | 'amqp'
    - `workers` integer
  - `type` 'http' | 'rest_api' | 'pub_sub' | 'db_change_stream'
  - `verifier` ModelsVerifierConfig
    - `api_key` ModelsApiKey
      - `header_name` string
      - `header_value` string
    - `basic_auth` ModelsBasicAuth
      - `password` string
      - `username` string
    - `hmac` ModelsHMac
      - `encoding` 'base64' | 'hex'
      - `hash` string
      - `header` string
      - `secret` string
    - `type` 'noop' | 'hmac' | 'basic_auth' | 'api_key'

## Changes

- **2024-02-08** (v3) `8aa5161aec4c` — 1 warning, 3 info
  - added the new `amqp` enum value to the `allOf[subschema #2]/data/pub_sub/type` response property for the response status `200`
  - added the new optional request property `pub_sub/allOf[#/components/schemas/models.PubSubConfig]/amqp`
  - added the new `amqp` enum value to the request property `pub_sub/allOf[#/components/schemas/models.PubSubConfig]/type`
  - added the optional property `allOf[subschema #2]/data/pub_sub/amqp` to the response with the `200` status
- **2023-11-27** (v3) `47c7286b8cee` — 12 breaking, 12 warning
  - added `#/components/schemas/datastore.SourceType` to the `type` request property `allOf` list
  - added `#/components/schemas/models.CustomResponse` to the `custom_response` request property `allOf` list
  - added `#/components/schemas/models.PubSubConfig` to the `pub_sub` request property `allOf` list
  - added `#/components/schemas/models.VerifierConfig` to the `verifier` request property `allOf` list
  - …20 more
- **2023-11-17** (v3) `41d4fca4cab8` — 1 warning, 3 info
  - added the new `kafka` enum value to the `allOf[subschema #2]/data/pub_sub/type` response property for the response status `200`
  - added the new optional request property `pub_sub/kafka`
  - added the new `kafka` enum value to the request property `pub_sub/type`
  - added the optional property `allOf[subschema #2]/data/pub_sub/kafka` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/getconvoy/apis/convoy-api-reference/changes/v1/projects/:projectID/sources/post.md)

---

[API](https://skmtc.dev/getconvoy/apis/convoy-api-reference.md) · [All operations](https://skmtc.dev/getconvoy/apis/convoy-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getconvoy/convoy-api-reference/revisions/182c7b00a49a/schema)
