ComboCurve REST API

REST API for oil & gas well forecasting, type curves, production data, reserves and economics. 380 operations across wells, productions, directional surveys, forecasts, econ-models, projects, econ-runs, and export jobs. Dual-header auth (signed JWT bearer + x-api-key); v1 CRUD and v2 async exports; 800 read / 200 write per minute; skip/take + cursor pagination.

OpenAPI Specification

combocurve-openapi.yml Raw ↑
# generated: 2026-07-18
# method: derived
# source: https://docs.api.combocurve.com/downloads/combocurve-api.postman_collection.json (official ComboCurve REST API Postman collection)
openapi: 3.1.0
info:
  title: ComboCurve REST API
  version: v1
  description: 'ComboCurve REST API for oil & gas well forecasting, type curves, production data, reserves and economics.
    Base URL https://api.combocurve.com. Authentication requires two headers: a signed bearer token (Authorization) generated
    from a Service Account Key, and an x-api-key. Derived by API Evangelist from the official public ComboCurve Postman collection.'
  contact:
    name: ComboCurve API Support
    url: https://forum.api.combocurve.com/
servers:
- url: https://api.combocurve.com
  description: Production
security:
- apiKeyAuth: []
  bearerAuth: []
tags:
- name: v1 custom-columns
  description: custom-columns operations
- name: v1 daily-productions
  description: daily-productions operations
- name: v1 directional-surveys
  description: directional-surveys operations
- name: v1 econ-models
  description: econ-models operations
- name: v1 econ-runs
  description: econ-runs operations
- name: v1 exports
  description: exports operations
- name: v1 forecast-configurations
  description: forecast-configurations operations
- name: v1 forecast-daily-volumes
  description: forecast-daily-volumes operations
- name: v1 forecast-monthly-volumes
  description: forecast-monthly-volumes operations
- name: v1 monthly-productions
  description: monthly-productions operations
- name: v1 ownership-qualifiers
  description: ownership-qualifiers operations
- name: v1 projects
  description: projects operations
- name: v1 tags
  description: tags operations
- name: v1 users
  description: users operations
- name: v1 well-comments
  description: well-comments operations
- name: v1 wells
  description: wells operations
- name: v1 wells-identifiers
  description: wells-identifiers operations
- name: v2 exports
  description: exports operations
paths:
  /v1/daily-productions:
    delete:
      operationId: delete-daily-productions
      summary: delete-daily-productions
      tags:
      - v1 daily-productions
      description: Delete the daily productions documents that match the given filters.
      parameters:
      - name: well
        in: query
        required: false
        schema:
          type: string
        description: (Required) filter by well ID
      - name: startDate
        in: query
        required: false
        schema:
          type: string
        description: filter by startDate
      - name: endDate
        in: query
        required: false
        schema:
          type: string
        description: filter by endDate
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    head:
      operationId: head-daily-productions
      summary: head-daily-productions
      tags:
      - v1 daily-productions
      description: Returns metadata about the existing daily production documents in the company scope.
      parameters:
      - name: skip
        in: query
        required: false
        schema:
          type: integer
        description: number of items to skip
      - name: take
        in: query
        required: false
        schema:
          type: integer
        description: max records to return
      - name: createdAt
        in: query
        required: false
        schema:
          type: string
        description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: filter by date
      - name: well
        in: query
        required: false
        schema:
          type: string
        description: filter by well
      - name: updatedAt
        in: query
        required: false
        schema:
          type: string
        description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    get:
      operationId: get-daily-productions
      summary: get-daily-productions
      tags:
      - v1 daily-productions
      description: Returns a list of daily production documents in the company scope.
      parameters:
      - name: skip
        in: query
        required: false
        schema:
          type: integer
        description: number of items to skip
      - name: sort
        in: query
        required: false
        schema:
          type: string
        description: field to sort by, including + or - at the beginning for ascending or descending order, respectively
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        description: used in pagination to get the next page
      - name: take
        in: query
        required: false
        schema:
          type: integer
        description: max records to return
      - name: createdAt
        in: query
        required: false
        schema:
          type: string
        description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: filter by date
      - name: well
        in: query
        required: false
        schema:
          type: string
        description: filter by well
      - name: updatedAt
        in: query
        required: false
        schema:
          type: string
        description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    post:
      operationId: post-daily-productions
      summary: post-daily-productions
      tags:
      - v1 daily-productions
      description: Upserts a list of daily production documents.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  date:
                    type: string
                    format: date
                  bottomHolePressure:
                    type: number
                  casingHeadPressure:
                    type: number
                  choke:
                    type: number
                  chosenID:
                    type: string
                  co2Injection:
                    type: number
                  customNumber0:
                    type: number
                  customNumber1:
                    type: number
                  customNumber2:
                    type: number
                  customNumber3:
                    type: number
                  customNumber4:
                    type: number
                  customNumber5:
                    type: number
                  customNumber6:
                    type: number
                  customNumber7:
                    type: number
                  customNumber8:
                    type: number
                  customNumber9:
                    type: number
                  customNumber10:
                    type: number
                  customNumber11:
                    type: number
                  customNumber12:
                    type: number
                  customNumber13:
                    type: number
                  customNumber14:
                    type: number
                  customNumber15:
                    type: number
                  customNumber16:
                    type: number
                  customNumber17:
                    type: number
                  customNumber18:
                    type: number
                  customNumber19:
                    type: number
                  dataSource:
                    type: string
                  flowlinePressure:
                    type: number
                  gas:
                    type: number
                  gasInjection:
                    type: number
                  gasLiftInjectionPressure:
                    type: number
                  hoursOn:
                    type: number
                  ngl:
                    type: number
                  oil:
                    type: number
                  operationalTag:
                    type: string
                  steamInjection:
                    type: number
                  tubingHeadPressure:
                    type: number
                  vesselSeparatorPressure:
                    type: number
                  water:
                    type: number
                  waterInjection:
                    type: number
                  well:
                    type: string
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    put:
      operationId: put-daily-productions
      summary: put-daily-productions
      tags:
      - v1 daily-productions
      description: Upserts a list of daily production documents.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  date:
                    type: string
                    format: date
                  bottomHolePressure:
                    type: number
                  casingHeadPressure:
                    type: number
                  choke:
                    type: number
                  chosenID:
                    type: string
                  co2Injection:
                    type: number
                  customNumber0:
                    type: number
                  customNumber1:
                    type: number
                  customNumber2:
                    type: number
                  customNumber3:
                    type: number
                  customNumber4:
                    type: number
                  customNumber5:
                    type: number
                  customNumber6:
                    type: number
                  customNumber7:
                    type: number
                  customNumber8:
                    type: number
                  customNumber9:
                    type: number
                  customNumber10:
                    type: number
                  customNumber11:
                    type: number
                  customNumber12:
                    type: number
                  customNumber13:
                    type: number
                  customNumber14:
                    type: number
                  customNumber15:
                    type: number
                  customNumber16:
                    type: number
                  customNumber17:
                    type: number
                  customNumber18:
                    type: number
                  customNumber19:
                    type: number
                  dataSource:
                    type: string
                  flowlinePressure:
                    type: number
                  gas:
                    type: number
                  gasInjection:
                    type: number
                  gasLiftInjectionPressure:
                    type: number
                  hoursOn:
                    type: number
                  ngl:
                    type: number
                  oil:
                    type: number
                  operationalTag:
                    type: string
                  steamInjection:
                    type: number
                  tubingHeadPressure:
                    type: number
                  vesselSeparatorPressure:
                    type: number
                  water:
                    type: number
                  waterInjection:
                    type: number
                  well:
                    type: string
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    patch:
      operationId: patch-daily-productions
      summary: patch-daily-productions
      tags:
      - v1 daily-productions
      description: Patch a list of daily production documents.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  date:
                    type: string
                    format: date
                  bottomHolePressure:
                    type: number
                  casingHeadPressure:
                    type: number
                  choke:
                    type: number
                  chosenID:
                    type: string
                  co2Injection:
                    type: number
                  customNumber0:
                    type: number
                  customNumber1:
                    type: number
                  customNumber2:
                    type: number
                  customNumber3:
                    type: number
                  customNumber4:
                    type: number
                  customNumber5:
                    type: number
                  customNumber6:
                    type: number
                  customNumber7:
                    type: number
                  customNumber8:
                    type: number
                  customNumber9:
                    type: number
                  customNumber10:
                    type: number
                  customNumber11:
                    type: number
                  customNumber12:
                    type: number
                  customNumber13:
                    type: number
                  customNumber14:
                    type: number
                  customNumber15:
                    type: number
                  customNumber16:
                    type: number
                  customNumber17:
                    type: number
                  customNumber18:
                    type: number
                  customNumber19:
                    type: number
                  dataSource:
                    type: string
                  flowlinePressure:
                    type: number
                  gas:
                    type: number
                  gasInjection:
                    type: number
                  gasLiftInjectionPressure:
                    type: number
                  hoursOn:
                    type: number
                  ngl:
                    type: number
                  oil:
                    type: number
                  operationalTag:
                    type: string
                  steamInjection:
                    type: number
                  tubingHeadPressure:
                    type: number
                  vesselSeparatorPressure:
                    type: number
                  water:
                    type: number
                  waterInjection:
                    type: number
                  well:
                    type: string
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
  /v1/monthly-productions:
    delete:
      operationId: delete-monthly-productions
      summary: delete-monthly-productions
      tags:
      - v1 monthly-productions
      description: Delete the monthly productions documents that match the given filters.
      parameters:
      - name: well
        in: query
        required: false
        schema:
          type: string
        description: (Required) filter by well ID
      - name: startDate
        in: query
        required: false
        schema:
          type: string
        description: filter by startDate
      - name: endDate
        in: query
        required: false
        schema:
          type: string
        description: filter by endDate
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    head:
      operationId: head-monthly-productions
      summary: head-monthly-productions
      tags:
      - v1 monthly-productions
      description: Returns metadata about the existing monthly production documents in the company scope.
      parameters:
      - name: skip
        in: query
        required: false
        schema:
          type: integer
        description: number of items to skip
      - name: take
        in: query
        required: false
        schema:
          type: integer
        description: max records to return
      - name: createdAt
        in: query
        required: false
        schema:
          type: string
        description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: filter by date
      - name: well
        in: query
        required: false
        schema:
          type: string
        description: filter by well
      - name: updatedAt
        in: query
        required: false
        schema:
          type: string
        description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    get:
      operationId: get-monthly-productions
      summary: get-monthly-productions
      tags:
      - v1 monthly-productions
      description: Returns a list of monthly production documents in the company scope.
      parameters:
      - name: skip
        in: query
        required: false
        schema:
          type: integer
        description: number of items to skip
      - name: sort
        in: query
        required: false
        schema:
          type: string
        description: field to sort by, including + or - at the beginning for ascending or descending order, respectively
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        description: used in pagination to get the next page
      - name: take
        in: query
        required: false
        schema:
          type: integer
        description: max records to return
      - name: createdAt
        in: query
        required: false
        schema:
          type: string
        description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: filter by date
      - name: well
        in: query
        required: false
        schema:
          type: string
        description: filter by well
      - name: updatedAt
        in: query
        required: false
        schema:
          type: string
        description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    post:
      operationId: post-monthly-productions
      summary: post-monthly-productions
      tags:
      - v1 monthly-productions
      description: Upserts a list of monthly production documents.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  date:
                    type: string
                    format: date
                  choke:
                    type: number
                  chosenID:
                    type: string
                  co2Injection:
                    type: number
                  customNumber0:
                    type: number
                  customNumber1:
                    type: number
                  customNumber2:
                    type: number
                  customNumber3:
                    type: number
                  customNumber4:
                    type: number
                  customNumber5:
                    type: number
                  customNumber6:
                    type: number
                  customNumber7:
                    type: number
                  customNumber8:
                    type: number
                  customNumber9:
                    type: number
                  customNumber10:
                    type: number
                  customNumber11:
                    type: number
                  customNumber12:
                    type: number
                  customNumber13:
                    type: number
                  customNumber14:
                    type: number
                  customNumber15:
                    type: number
                  customNumber16:
                    type: number
                  customNumber17:
                    type: number
                  customNumber18:
                    type: number
                  customNumber19:
                    type: number
                  dataSource:
                    type: string
                  daysOn:
                    type: number
                  gas:
                    type: number
                  gasInjection:
                    type: number
                  ngl:
                    type: number
                  oil:
                    type: number
                  operationalTag:
                    type: string
                  steamInjection:
                    type: number
                  water:
                    type: number
                  waterInjection:
                    type: number
                  well:
                    type: string
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    put:
      operationId: put-monthly-productions
      summary: put-monthly-productions
      tags:
      - v1 monthly-productions
      description: Upserts a list of monthly production documents.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  date:
                    type: string
                    format: date
                  choke:
                    type: number
                  chosenID:
                    type: string
                  co2Injection:
                    type: number
                  customNumber0:
                    type: number
                  customNumber1:
                    type: number
                  customNumber2:
                    type: number
                  customNumber3:
                    type: number
                  customNumber4:
                    type: number
                  customNumber5:
                    type: number
                  customNumber6:
                    type: number
                  customNumber7:
                    type: number
                  customNumber8:
                    type: number
                  customNumber9:
                    type: number
                  customNumber10:
                    type: number
                  customNumber11:
                    type: number
                  customNumber12:
                    type: number
                  customNumber13:
                    type: number
                  customNumber14:
                    type: number
                  customNumber15:
                    type: number
                  customNumber16:
                    type: number
                  customNumber17:
                    type: number
                  customNumber18:
                    type: number
                  customNumber19:
                    type: number
                  dataSource:
                    type: string
                  daysOn:
                    type: number
                  gas:
                    type: number
                  gasInjection:
                    type: number
                  ngl:
                    type: number
                  oil:
                    type: number
                  operationalTag:
                    type: string
                  steamInjection:
                    type: number
                  water:
                    type: number
                  waterInjection:
                    type: number
                  well:
                    type: string
      responses:
        '201':
          description: Created
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
    patch:
      operationId: patch-monthly-productions
      summary: patch-monthly-productions
      tags:
      - v1 monthly-productions
      description: Patch a list of monthly production documents.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  date:
                    type: string
                    format: date
                  choke:
                    type: number
                  chosenID:
                    type: string
                  co2Injection:
                    type: number
                  customNumber0:
                    type: number
                  customNumber1:
                    type: number
                  customNumber2:
                    type: number
                  customNumber3:
                    type: number
                  customNumber4:
                    type: number
                  customNumber5:
                    type: number
                  customNumber6:
                    type: number
                  customNumber7:
                    type: number
                  customNumber8:
                    type: number
                  customNumber9:
                    type: number
                  customNumber10:
                    type: number
                  customNumber11:
                    type: number
                  customNumber12:
                    type: number
                  customNumber13:
                    type: number
                  customNumber14:
                    type: number
                  customNumber15:
                    type: number
                  customNumber16:
                    type: number
                  customNumber17:
                    type: number
                  customNumber18:
                    type: number
                  customNumber19:
                    type: number
                  dataSource:
                    type: string
                  daysOn:
                    type: number
                  gas:
                    type: number
                  gasInjection:
                    type: number
                  ngl:
                    type: number
                  oil:
                    type: number
                  operationalTag:
                    type: string
                  steamInjection:
                    type: number
                  water:
                    type: number
                  waterInjection:
                    type: number
                  well:
                    type: string
      responses:
        '200':
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
        '429':
          description: Too many requests - rate limit exceeded
  /v1/ownership-qualifiers:
    head:
      operationId: head-ownership-qualifiers
      summary: head-ownership-qualifiers
      tags:
      - v1 ownership-qualifiers
      description: Returns metadata about the existing ownership qualifiers documents.
      parameters:
      - name: skip
        in: query
        required: false
        schema:
          type: integer
        description: number of items to skip
      - name: take
        in: query
        required: false
        schema:
          type: integer
        description: max records to return
      - name: createdAt
        in: query
        required: false
        schema:
          type: string
        description: filter by createdAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example createdAt[gt]=2018-01-01T00:00:00Z
      - name: chosenID
        in: query
        required: false
        schema:
          type: string
        description: filter by chosenID
      - name: qualifierKey
        in: query
        required: false
        schema:
          type: string
        description: filter by qualifierKey
      - name: updatedAt
        in: query
        required: false
        schema:
          type: string
        description: filter by updatedAt - Operator values are [lt] = less than, [le] = less than or equal, [gt] = greater
          than, [ge] = greater than or equal, no operator = equal. Example updatedAt[gt]=2018-01-01T00:00:00Z
      - name: well
        in: query
        required: false
        schema:
 

# --- truncated at 32 KB (1885 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/combocurve/refs/heads/main/openapi/combocurve-openapi.yml