Jump to: navigation, search

The WHMCS API provides an interface to allow you to access and perform actions in WHMCS both from external applications and scripts as well as internal modules and addons.

Internal API

The internal API can be used from any file within WHMCS - be it a template, action hook, addon module, anything. It allows you to call any of the API functions via a local function call to avoid needing to use CURL. For more information on this, please refer to the Internal API Page

External API

The External API supports 3 response types: Name/Value Pairs (NVP), XML & JSON (V4.5 or later)

Most calls support all response types, but certain data retrieval calls will only work under either XML or JSON due to the multi-level depth nature of their responses.

API User Setup

When creating an admin user for API use, only the API permission is required to be able to access & use all the API functions.

You must also setup the IP(s) you will be connecting from in General Settings > Security. Failure to do this will result in an "Invalid IP xx.xxx.xxx.xx" response from the API.

If IP Restricted access isn't suitable for what you're using the API for, then an alternative solution using an access key is available. For details about how to use this alternative option instead, see the API Access Keys Page.

With regards to the passwords and hashes, these are case sensitive, and should be passed accordingly.

Example Code

We have fully working PHP code samples demonstrating how you can connect to and interpret each of the supported response types of the WHMCS API in the pages below:


An alphabetical list of API Functions is available at API:Functions(A-Z).

The API currently supports the following functions.

Client Management

Add Cancel Request Add Client Add Client Note
Add Contact Close Client Delete Client
Delete Contact Get Affiliates Get Clients
Get Clients Addons Get Clients Details Get Clients Domains
Get Clients Password Get Clients Products Get Contacts
Get Credits Get Emails Get Transactions
Get Quotes Send Email Upgrade Product
Update Client Update Client Addon Update Client Domain
Update Client Product Update Contact Validate Login

Domain Commands

Domain Get Locking Status Domain Get Nameservers Domain Get WHOIS Info
Domain Register Domain Release Domain Renew
Domain Request EPP Domain Transfer Domain Toggle ID Protect
Domain Update Locking Status Domain Update Nameservers Domain Update WHOIS
Domain WHOIS Lookup

Module Commands

Module Change Package Module Change Password Module Create
Module Suspend Module Terminate Module Unsuspend


Add Announcement Add Ticket Note Add Ticket Reply
Delete Announcement Delete Ticket Delete Ticket Note
Get Announcements Get Support Departments Get Support Statuses
Get Ticket Get Ticket Notes Get Ticket Predefined Categories
Get Ticket Predefined Replies Get Tickets Open Ticket
Update Announcement Update Ticket

Order Handling

Accept Order Add Order Cancel Order
Delete Order Fraud Order Get Orders
Get Order Statuses Get Products Get Promotions
Order Fraud Check Pending Order


Add Billable Item Add Credit Add Invoice Payment
Add Transaction Apply Credit Capture Payment
Create Invoice Generate Invoice(s) Get Invoices
Get Invoice Get Payment Methods Get Transactions
Update Invoice Update Transaction


Accept Quote Create Quote Delete Quote
Get Quotes Send Quote Update Quote


Create OAuth Credential Delete OAuth Credential List OAuth Credentials
Update OAuth Credential

Project Management

Add Project Message Add Project Task Create Project
Delete Project Task End Task Timer Get Project
Get Projects Start Task Timer Update Project
Update Project Task


Add Banned IP Add Product Decrypt Password
Encrypt Password Get Activity Log Get Admin Details
Get Currencies Get Client Groups Get Email Templates
Get Promotions Get Staff Online Get Stats
Get To-Do Items Get To-Do Item Statuses Log Activity
Send Admin Email Update Admin Notes Update To-Do Item

Need something else?

The API is being continually developed and added to as features are requested. If you have a need for a feature that is not currently available, feel free to create a feature request and we'll see what we can do.