---
title: "Create Data Source"
method: POST
path: "/data-source"
tags: ["Data Source"]
---

# Create Data Source

`POST /data-source`

## Request

- Base URL: `https://oneuptime.com/api`
- URL: `https://oneuptime.com/api/data-source`
- Auth: API key in header `APIKey`
- TypeScript: <https://skmtc.dev/oneuptime/apis/oneuptime-openapi-specification/docs/data-source/post.ts> (a function with typed inputs; its response is checked against the schema)

Endpoint to create a new Data Source

## Request body

- object
  - `data` DataSourceCreateSchema, required: Create schema for DataSource model. Create
    - `projectId` string, uuid: ID of your OneUptime Project in which this object belongs. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [No access - you don't have permission for this operation]
    - `name` string, required: Any friendly name of this object. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `description` string: Friendly description that will help you remember. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `dataSourceType` 'Prometheus' | 'PostgreSQL' | 'MySQL' | 'Microsoft SQL Server' | 'ClickHouse' | 'Loki' | 'Elasticsearch' | 'REST API', required: The kind of external system this data source connects to (Prometheus, PostgreSQL, MySQL, Microsoft SQL Server, ClickHouse, Loki, Elasticsearch, or REST API). Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `url` string: Base URL for HTTP-based sources (Prometheus, Loki, Elasticsearch, REST API) — e.g. https://prometheus.example.com. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `databaseHost` string: Hostname or IP address for database sources (PostgreSQL, MySQL, SQL Server, ClickHouse). Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `databasePort` number: Port for database sources. Defaults per engine: PostgreSQL 5432, MySQL 3306, SQL Server 1433, ClickHouse 8123. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `databaseName` string: Database (or ClickHouse database) to connect to. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `username` string: Username for database sources, or HTTP basic-auth username for HTTP sources. Use a READ-ONLY account — dashboards only ever read. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `password` string, password: Password for database sources, or HTTP basic-auth password. Encrypted at rest and never returned by the API. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [No access - you don't have permission for this operation], Update: [Project Owner, Project Admin, Edit Data Source]
    - `apiToken` string, password: Bearer token for HTTP sources (Prometheus behind an auth proxy, Elasticsearch API key, REST APIs). Encrypted at rest and never returned by the API. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [No access - you don't have permission for this operation], Update: [Project Owner, Project Admin, Edit Data Source]
    - `customHeaders` object: Extra HTTP headers sent to HTTP-based sources (e.g. auth headers for a proxy). Values are encrypted at rest and never returned by the API. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [No access - you don't have permission for this operation], Update: [Project Owner, Project Admin, Edit Data Source]
    - `additionalOptions` object: Per-type options that are not secrets — e.g. { "sslEnabled": true, "elasticsearchIndex": "logs-*" }. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]

## Response `201`

Created successfully

- object
  - `data` DataSourceReadSchema: Read schema for DataSource model. Read
    - `_id` string, uuid: ID of this object. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `createdAt` object: Date and Time when the object was created. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `updatedAt` object: Date and Time when the object was updated. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `deletedAt` object: Date and Time when the object was deleted. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `projectId` string, uuid: ID of your OneUptime Project in which this object belongs. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [No access - you don't have permission for this operation]
    - `name` string, required: Any friendly name of this object. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `slug` string: Friendly globally unique name for your object. Permissions - Create: [No access - you don't have permission for this operation], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [No access - you don't have permission for this operation]
    - `description` string: Friendly description that will help you remember. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `dataSourceType` 'Prometheus' | 'PostgreSQL' | 'MySQL' | 'Microsoft SQL Server' | 'ClickHouse' | 'Loki' | 'Elasticsearch' | 'REST API', required: The kind of external system this data source connects to (Prometheus, PostgreSQL, MySQL, Microsoft SQL Server, ClickHouse, Loki, Elasticsearch, or REST API). Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `url` string: Base URL for HTTP-based sources (Prometheus, Loki, Elasticsearch, REST API) — e.g. https://prometheus.example.com. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `databaseHost` string: Hostname or IP address for database sources (PostgreSQL, MySQL, SQL Server, ClickHouse). Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `databasePort` number: Port for database sources. Defaults per engine: PostgreSQL 5432, MySQL 3306, SQL Server 1433, ClickHouse 8123. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `databaseName` string: Database (or ClickHouse database) to connect to. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `username` string: Username for database sources, or HTTP basic-auth username for HTTP sources. Use a READ-ONLY account — dashboards only ever read. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `additionalOptions` object: Per-type options that are not secrets — e.g. { "sslEnabled": true, "elasticsearchIndex": "logs-*" }. Permissions - Create: [Project Owner, Project Admin, Create Data Source], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [Project Owner, Project Admin, Edit Data Source]
    - `createdByUserId` string, uuid: User ID who created this object (if this object was created by a User). Permissions - Create: [No access - you don't have permission for this operation], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [No access - you don't have permission for this operation]
    - `deletedByUserId` string, uuid: User ID who deleted this object (if this object was deleted by a User). Permissions - Create: [No access - you don't have permission for this operation], Read: [Project Owner, Project Admin, Project Member, Viewer, Settings Admin, Settings Member, Settings Viewer, Read Data Source], Update: [No access - you don't have permission for this operation]

## Other responses

- `400`: Bad request. This response indicates that the request was malformed or contained invalid data.
- `401`: Unauthorized. This response indicates that the request requires user authentication.
- `402`: Payment Required. This response indicates that the request requires payment or a valid subscription.
- `403`: Forbidden. This response indicates that the server understood the request, but refuses to authorize it.
- `405`: Project not found. This response indicates that the requested project does not exist or is not accessible.
- `408`: Request Timeout. This response indicates that the server timed out waiting for the request.
- `415`: Unable to reach server. This response indicates that the server is currently unreachable or down.
- `422`: Not authorized. This response indicates that the user does not have permission to access the requested resource.
- `500`: Internal Server Error. This response indicates that the server encountered an unexpected condition that prevented it from fulfilling the request.

---

[API](https://skmtc.dev/oneuptime/apis/oneuptime-openapi-specification.md) - [All operations](https://skmtc.dev/oneuptime/apis/oneuptime-openapi-specification/llms.txt) - [OpenAPI document](https://skmtc.dev/oneuptime/apis/oneuptime-openapi-specification/revisions/ba3307d00304?raw)
