Public Api
Introduction
This API allows resellers to manage their resources in a simple, programmatic way using HTTP requests.
Conventions
Requests
The API supports different methods depending on the required action.
HTTP status codes
The API will reply with different HTTP statuscodes:
In the event of a problem, the body of the response will usually contain an errorcode and errormessage. In rare cases additional details about the error are reported.
Errorcodes 400-499 are considered to be client errors and indicate that there was an issue with the request. We will not take any action besides monitoring.
Errorcodes 500-599 are considered to be server errors. The errors are monitored AND action will be taken to resolve the error.
Formatting
Snake casing is applied on resources and query parameters. The API is strictly returning JSON. No other formats are supported.
Datetimes are returned in ISO-8601 format.
Pagination
Pagination is on by default on collections and is controlled by specifying skip and take parameters.
Skip indicates the number of results to skip and where to start the new take.
Take indicates the number of records to return. The returned number of items can be smaller than the requested take.
Paged results will have headers with useful information regarding the paging.
Rate limiting
The number of requests per interval is limited. Detailed information on the rate limiting can be found in specific headers which will be sent on each request.
When the ratelimit has been reached, all requests will return with a HTTP statuscode 429 and ReasonPhrase 'Too many requests, retry later.'.
Authentication
The Api uses HMAC authentication.
Hash-based message authentication code (HMAC) is a mechanism for calculating a message authentication code involving a hash function in combination with a secret key.
Both the integrity and the authenticity of the message are verified this way.
Steps to generate the HMAC
- Get your api key and secret from your controlpanel.
It is absolutely vital that the secret is never exposed. Once the secret is out, anyone would be able to generate hmacs to impersonate you.
In case your secret is compromised, you can generate a new api key and secret on your controlpanel. - Construct the input value for generating the hmac.
Concatenate:apikey, request method, path and querystring information, unix timestamp, nonce and content.
- Hash the concatenated string using your api secret and the SHA-256 algorithm.
- Base64 encode the result of the hash function. This is the hmac signature you will need to send an authorized request.
Sending an authorized request
An authorized request can be made by sending the generated HMAC in the authorization header.
A correct authorizationheader uses the hmac authorization scheme and a correctly formatted authorization parameter.
Create the authorization parameter by concatenating:
- apikey
- colon ':'
- generated HMAC signature (see above)
- colon ':'
- nonce (the one used to generate the signature)
- colon ':'
- unix timestamp (the one used to generate the signature)
A sample (illustrated):
- The first line is the string you create to feed to the hashing algorithm.
- The second line is the authorization header that should be sent in the request.

IP whitelisting
Access is by default restricted for all IP addresses. You need to explicitly whitelist an IP or an IP range in your controlpanel.
Versioning
Because of breaking contract changes compared to v1, we released v2 of the API.
V1 will still be available, but you are strongly encouraged to migrate to the latest version.
New features will only be available on v2.
Policy
Fair use policy
Please respect the rate limits and do not use the api for any purposes of abuse.
All requests are being monitored and logged.
Intentional abuse might result in api key revocation.
Errors
The API attempts to return appropriate HTTP status codes for every request.
When the status code indicates failure, the API will also provide an error message in most cases.
An error message contains a machine-parseable error code accompanied by a descriptive error text.
The text for an error message might change over time, but codes will stay the same.
.
Change log
.
Provisioning information
Terminology
Common provisioning scenario
Provisioning of an account with Linux hosting with one MySql database
Without a pre-existing account:
- Create a new account.
Perform a POST on the accounts route and provide the desired servicepack id and identifier (domain name). - Read the Location header from the response and perform a GET of the provided resource (a provisioning job).
- When the response returns 200(OK), you should repeat the GET operation after a certain interval (Repeat this step).
When the response returns 201(Created), you should read the response body. This will contain links to the created resources.
This will usually hold only one link, but to be futureproof, this has been designed to return a collection. - The created resource will point to an account. You now know the account's Id and can continue with the provisioning of a MySql database on this account.
- Perform a POST on the mysqldatabases route and provide the account id along with other requested information.
- Read the Location header from the response and perform a GET of the provided resource (a provisioning job).
- When the response returns 200(OK), you should repeat the GET operation after a certain interval (Repeat this step).
When the response returns 201(Created), you should read the response body. This will contain links to the created resources.
This will usually hold only one link, but to be futureproof, this has been designed to return a collection. - The created resource will point to a MySql database resource.
SSL certificate requests
Requesting an SSL certificate causes the purchase of a paying product.
- A certificate is created by adding an ssl certificate request.
- Upon statuscode 201 you should query for certificate completion on the resource provided in the location response header.
- The resource request can respond with different statuscodes:
- 200: the certificate request is ongoing.
Check the validations collection for validation values that are not auto_validated. Those should be set by you system.
Call verify domain validations once all validation values are in place. It might take some time for verification to take place. It is not necessary to call this method more than once. - 303: the certificate request is complete; there is no more certificate request resource available. Check the location header value to retrieve the representation of the resulting ssl certificate.
- 410: the certificate request does not exist anymore, there is no certificate created as a result of the request.
- Homepage
- https://api.apis.guru/v2/specs/combell.com/v2.json
- Provider
- combell.com
- OpenAPI version
- 3.0.1
- Spec (JSON)
- https://api.apis.guru/v2/specs/combell.com/v2/openapi.json
- Spec (YAML)
- https://api.apis.guru/v2/specs/combell.com/v2/openapi.yaml
Tools (77)
Extracted live via the executor SDK.
-
accounts.createAccountThe creation of an account requires some background processing. There is no instant feedback of the creation status.
-
accounts.getAccount -
accounts.getAccountsOverview of accounts
-
dnsRecords.deleteDnsDomainNameRecordsRecordIdDelete a record
-
dnsRecords.getDnsDomainNameRecordsGet records
-
dnsRecords.getDnsDomainNameRecordsRecordIdGet specific record
-
dnsRecords.postDnsDomainNameRecordsCreate a record
-
dnsRecords.putDnsDomainNameRecordsRecordIdEdit a record
-
domains.configureDomainAllowed if can_toggle_renew is true on the domain detail:
- If there are no unpaid invoices for the domain name anymore.
- If the renewal won't start within 1 month.
-
domains.editNameServers -
domains.getDomainDetails of a domain
-
domains.getDomainsOverviews of domains
-
domains.registerRegisters an available domain.
Domain names with extension '.ca' are only available for registrants with country code 'CA'. -
domains.transferTransfers a domain with a transfer authorization code.
Domain names with extension '.ca' are only available for registrants with country code 'CA'. -
linuxHostings.addScheduledTasksAdd a scheduled task
-
linuxHostings.addSshKeyAdd a SSH key
-
linuxHostings.changeApcuConfigure PHP APCu setting
-
linuxHostings.changeAutoRedirectConfigure auto redirect
-
linuxHostings.changeGzipCompressionEnable/disable GZIP compression
-
linuxHostings.changeLetsEncryptConfigure let's encrypt
-
linuxHostings.changePhpMemoryLimitConfigure PHP memory limit
-
linuxHostings.changePhpVersionChange the Linux hosting PHP version.
-
linuxHostings.configureFtpConfigure FTP
-
linuxHostings.configureHttp2Configure HTTP/2
-
linuxHostings.configureScheduledTaskConfigure a scheduled task
-
linuxHostings.configureSshConfigure SSH
-
linuxHostings.createHostHeaderCreate a host header
-
linuxHostings.createSubsiteCreate a subsite
-
linuxHostings.deleteScheduledTaskDelete a scheduled task
-
linuxHostings.deleteSshKeyDelete a SSH key
-
linuxHostings.deleteSubsiteDelete a subsite
-
linuxHostings.getAvailablePhpVersionsGet the available PHP versions.
-
linuxHostings.getLinuxHostingLinux hosting detail
-
linuxHostings.getLinuxHostingsOverview of linux hostings
-
linuxHostings.getScheduledTaskGet scheduled task detail
-
linuxHostings.getScheduledTasksManage scheduled tasks which are also manageable via the control panel.
-
linuxHostings.getSshKeysOverview of SSH keys
-
mailboxes.changeMailboxPasswordChange password for mailbox
-
mailboxes.configureMailboxAutoForwardConfigure auto-forward for mailbox
-
mailboxes.configureMailboxAutoReplyConfigure auto-reply for mailbox
-
mailboxes.createMailboxCreate a new mailbox.
-
mailboxes.deleteMailboxDelete a mailbox
-
mailboxes.getMailboxGet a specific mailbox
-
mailboxes.getMailboxesCurrently only supports getting the mailboxes filtered by domain name.
-
mailZones.configureAliasConfigure a alias
-
mailZones.configureAntiSpamConfigure anti-spam for mail zone
-
mailZones.configureSmtpDomainConfigure an extra smtp domain
-
mailZones.createAliasCreate a new alias
-
mailZones.createCatchAllCreate a catch-all on the mail zone
-
mailZones.createSmtpDomainCreate an extra smtp domain
-
mailZones.deleteAliasDelete a alias
-
mailZones.deleteCatchAllDelete a catch-all on the mail zone
-
mailZones.deleteSmtpDomainDelete an extra smtp domain
-
mailZones.getMailZoneGet the mail zone.
-
mySqlDatabases.changeDatabaseUserPasswordChange password for mysql user
-
mySqlDatabases.changeDatabaseUserStatusEnable/disable mysql user
-
mySqlDatabases.createMySqlDatabaseCreate a new mysql database
-
mySqlDatabases.createMySqlUserThe creation of a new mysql user will result in a user with read_only rights.
-
mySqlDatabases.deleteDatabaseDelete a mysql database
-
mySqlDatabases.deleteDatabaseUserThe deletion of a mysql user is allowed for users with read_only rights.
-
mySqlDatabases.getDatabaseUsersOverview of mysql users
-
mySqlDatabases.getMySqlDatabaseGet a specific database
-
mySqlDatabases.getMySqlDatabasesOverview of mysql databases
-
provisioningJobs.getProvisioningjobsJobIdProvisioning failures may occur. Contact support in the event of a failure or wait for error resolution.
Do NOT retry provisioning until the job reports finished or cancelled. -
servicepacks.getOperationOverview of service packs
-
ssh.getAllSshKeysOverview of SSH keys
-
sslCertificateRequests.addSslCertificateRequestExecuting this method causes the purchase of a paying product.
Log on to our website to see your current (renewal) prices or contact our Sales department.
Please note that promotional pricing does not apply for purchases made through our API. -
sslCertificateRequests.getSslCertificateRequestDetail of a SSL certificate request
-
sslCertificateRequests.getSslCertificateRequestsOverview of SSL certificate requests
-
sslCertificateRequests.verifySslCertificateRequestDomainValidationsVerify the SSL certificate request domain validations
-
sslCertificates.downloadCertificateReturns the certifcate as binary data with the content-type and the filename information in the response headers.
-
sslCertificates.getSslCertificateDetail of a SSL certificate
-
sslCertificates.getSslCertificatesOverview of SSL certificates
-
windowsHostings.getWindowsHostingWindows hosting detail
-
windowsHostings.getWindowsHostingsOverview of windows hostings
-
openapi.previewSpecPreview an OpenAPI document before adding it as a source
-
openapi.addSourceAdd an OpenAPI source and register its operations as tools