JIRA provides both Java APIs and REST APIs that you can use to interact with JIRA programmatically. You can find links to the API documentation for the latest version of JIRA below, as well as links to the API documentation for earlier versions.
JIRA Agile also provides both Java APIs and REST APIs, which are separate from JIRA APIs. You can find links to these below, as well.
JIRA provides SOAP and XML-RPC remote APIs. However, these APIs have been deprecated since JIRA 6.0 and will be removed in JIRA 7.0. See this announcement for further details.
JIRA Java APIs
The JIRA Java APIs are typically used when building Plugins2 plugins (for JIRA Server).
If you haven't used the JIRA Java APIs before, make sure you read the Java API Policy for JIRA.
JIRA REST APIs
The JIRA REST APIs are typically used when building Connect add-ons (for JIRA Cloud) or configuring webhooks.
If you haven't used the JIRA REST APIs before, read this overview: JIRA REST APIs.