Getting Started with the ComboCurve API
This guide will help you get started with the ComboCurve API, from obtaining your credentials to making your first API call.
Before You Begin
To use the ComboCurve API, you will need an API Key and a Service Account Key. These can be obtained from:
- The API & Sync tab on the company page in your ComboCurve account
- Or by going directly to
https://yourcompany.combocurve.com/company/api-sync
(replace "yourcompany" with your company's subdomain)
You can create and download your API Key and Service Account Key by clicking the "CREATE & DOWNLOAD" button on that page.
API Specification
You can download the full API specification including all routes and models:
Download OpenAPI 2.0 Spec (YAML)
Client Libraries
The following official client libraries are available to simplify your integration:
ComboCurve Client - C#
For .NET applications and services
ComboCurve Client - Python
For Python applications and data science workflows
Authentication
The ComboCurve API requires two forms of authentication for all requests:
Required Headers
Header | Description |
---|---|
Authorization | Signed bearer token generated using the Service Account Key |
x-api-key | Your API Key |
Requests that don't have valid values for these headers will fail with status code 401.
Example Authentication
// Example of setting up authentication headers
const headers = {
'Authorization': 'Bearer YOUR_BEARER_TOKEN',
'x-api-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
};
// Use these headers in your API requests
fetch('https://api.combocurve.com/v1/wells', {
method: 'GET',
headers: headers
})
.then(response => response.json())
.then(data => console.log(data));
Content Type
All POST, PUT, and PATCH methods expect a JSON body, which means the Content-Type: application/json
header must be set, otherwise the request will fail with status code 415
.
API Limits
Request Rate
The API enforces the following request rate limits per client:
Type | Max requests / min |
---|---|
Read | 800 |
Write | 200 |
When a rate limit is exceeded, subsequent requests will fail with status code 429
until the rate comes back down to an allowed value.
Request Size
The API enforces a maximum size of 24 MB for each request body. Requests with a larger body will fail with status code 413
.
String Size
Values for string fields are encoded in UTF-8 and their size limit is 16 KB.
Making Your First API Call
Let's make a simple API call to retrieve a list of wells:
curl -X GET "https://api.combocurve.com/v1/wells" \
-H "x-api-key: YOUR_API_KEY" \
-H "Authorization: Bearer YOUR_BEARER_TOKEN" \
-H "Content-Type: application/json"
Example Response
[
{
"id": "67a5148e6fc1d22236af43ca",
"name": "Example Well",
"dataSource": "ihs",
"chosenId": "WELL-001",
"latitude": 29.7604,
"longitude": -95.3698,
"createdDate": "2023-06-15T10:30:45Z",
"lastModifiedDate": "2023-06-15T10:30:45Z"
},
// More wells...
],
Pagination
Many API endpoints return collections of resources. To manage large datasets, the API implements pagination with the following parameters:
skip
: The number of records to skip (starting from 0)take
: The number of items to take
Example request with pagination:
GET /v1/wells?skip=0&take=50
Query Parameters
The API supports flexible query parameters for filtering, sorting, and searching:
Filtering
Filter resources using field-specific parameters:
GET /v1/wells?name=Well-01
Sorting
Sort results ascending using the sort
parameter:
GET /v1/wells?sort=name
Sort results descending using the sort
parameter:
GET /v1/wells?sort=-name
Complex Queries
Combine multiple parameters for complex queries:
GET /v1/wells?dataSource=ENVERUS&sort=name&skip=0&take=50
Error Handling
The API uses conventional HTTP response codes to indicate the success or failure of requests:
2xx
- Success4xx
- Client error (invalid request)5xx
- Server error
Error responses include a JSON object with details about the error:
{
"timestamp": "2023-06-15T10:30:45Z",
"status": 400,
"error": "Bad Request",
"message": "Invalid parameter: name cannot be empty",
"path": "/v1/wells"
}
Endpoints that allow the user to PUT/PATCH/POST multiple records in one request may return an HTTP 207 Multi-Status response code. These responses will include success/failure information for each record submitted in the request.
Example HTTP 207 Multi-Status response:
{
"results": [
{
"status": "OK",
"code": 200,
"well": "673d0efb5bbb37673a853775",
"date": "2020-03-01T00:00:00.000Z"
},
{
"status": "Error",
"code": 400,
"errors": [
{
"name": "WellNotFoundError",
"message": "No well was found with id `673d0efb5bbb37673a853771` in company scope",
"location": "[1]"
}
]
}
],
"successCount": 2,
"failedCount": 0
}
Next Steps
Now that you're familiar with the basics of the ComboCurve API, you can:
- Explore the API Reference for detailed information about all available endpoints
- Check out the client libraries to simplify your integration
- Join our API Forum for support and to connect with other developers
Support
Got feedback or questions? Please join our API Forum where you can ask questions and get help from the ComboCurve community and support team. For all other inquiries, please contact your ComboCurve Account Manager.