Edited By
Henry Morgan
In today’s fast-moving finance world, APIs have become the bread and butter for traders, investors, and fintech professionals who want instant access to market data and trading functionalities. The Deriv API, in particular, has carved out a solid niche by offering a robust yet accessible way to plug into trading platforms effortlessly.
This article aims to shed light on what makes the Deriv API stand out: its main features, practical steps to integrate it into your apps, and real-world use cases. Whether you’re an analyst looking to automate data streams or a developer building a custom trading bot, this guide will walk you through the essentials.

We won’t just stick to the technical mumbo jumbo; instead, you’ll get an idea of how to keep your integrations secure and the kind of things you can realistically do with the API right now.
Understanding these components can save plenty of time and headaches while helping you unlock smarter ways to work with financial data.
Ready to get onboard? Let’s break down the core aspects and see how it all fits together.
Understanding the Deriv API is the first step for any trader, developer, or fintech enthusiast looking to integrate automated trading or data analysis into their workflow. This section lays the groundwork by explaining what the API is and why it matters. Without a solid introduction, diving into advanced uses or integration could feel like navigating a maze blindfolded.
The Deriv API offers a powerful toolset to access real-time market data, place and manage trades, and monitor account details programmatically. Imagine a stockbroker who spends hours manually tracking price changes—using the Deriv API automates this, freeing time for analysis or higher-level strategy development. This automation helps prevent missed opportunities that might slip by during busy market sessions.
In addition, understanding the API's fundamentals prepares users for smoother integration with their existing systems. For example, a fintech developer based in Nairobi wanting to build a mobile app for local investors can use the API to pull live market info into the app, enhancing user experience without relying on third-party aggregators. Clarity here reduces frustration later when dealing with authentication, data formats, or error handling.
Finally, by recognizing who benefits from the API, readers can self-assess their needs, decide whether the API suits their purpose, and discover practical ways to apply it. This introduction isn't just a definition; it's a stepping stone that highlights the API's place in the broader trading and financial ecosystem.
The Deriv API is a set of programming interfaces that allows you to interact directly with the Deriv trading platform via code rather than the usual website or app interface. It's like opening a back door through which software can talk to the platform — fetching data, executing trades, and managing accounts with instructions sent in a language the platform understands.
Specifically, it supports WebSocket communication for real-time updates and REST calls for certain operations. This means your application can listen continuously for market changes or send commands like placing an order immediately. For example, an investor might write a Python script that reacts to sudden price jumps in the Forex market by instantly placing buy or sell orders.
One distinctive feature is how the API caters to various asset types — from Forex pairs to synthetic indices and cryptocurrencies — broadening its applicability for diverse investment strategies. Users are given granular control, not just basic buy/sell commands but also options to customize trade parameters, set limits, and monitor open positions.
This makes the Deriv API especially useful when compared to platforms relying solely on manual interactions, since it offers both flexibility and speed.
The Deriv API serves a broad audience, primarily traders, investors, brokers, and fintech developers, each with their unique use cases but all benefiting from automation and direct platform access.
Traders and Investors: Automated trading strategies can be implemented to respond quickly to market changes, reducing emotional bias and missed opportunities. For instance, a day trader in Mombasa could set alerts for specific currency pairs and execute trades automatically when conditions meet predefined thresholds.
Financial Analysts: Access to raw data streams means analysts can perform deeper market research or backtest trading algorithms with up-to-date information. Say an analyst wants to test how a specific technical indicator would have performed last week — the API facilitates accurate data retrieval.
Brokers: Companies can integrate their client accounts to streamline trade executions and reporting, improving customer service. Brokers can automate risk assessments by monitoring positions in real time.
Fintech Developers: Those creating trading tools, mobile apps, or dashboards can embed Deriv market data and trading capabilities without building a platform from scratch. This shortcut accelerates product launches while maintaining reliability.
The bottom line? If your work involves frequent interaction with financial markets or client portfolios, using the Deriv API can save time, reduce errors, and open creative possibilities that manual trading simply can't match.
Overall, this introduction demystifies the Deriv API and sets readers on the right path to exploring its deeper features and applications throughout the article.
Understanding the core features of the Deriv API is key for anyone looking to integrate efficient trading solutions or build automated financial tools. These features define the API's capability to provide real-time market information, execute trades swiftly, and manage account details, all of which are essential for a seamless trading experience.
Real-time data streaming is a fundamental feature that lets developers access live market data without delays. This capability enables applications to react immediately to market changes, which is critical for traders relying on quick decision-making. For example, a trading bot using Deriv API can monitor price movements of forex pairs or commodities, adjusting orders on the fly to optimize profit or reduce loss. Without real-time streaming, traders might miss crucial market shifts, making decisions based on outdated information.

The Deriv API provides robust functionality for placing, modifying, and canceling trade orders. This feature ensures traders can interact with the market efficiently through automated scripts or custom-built interfaces. Imagine a scenario where a trader sets up a stop-loss order to protect investments from unexpected downturns—this is handled seamlessly through the API’s order management system. Furthermore, the ability to manage multiple orders simultaneously is a big plus for active traders juggling diverse portfolios.
Keeping track of account status and balance information directly through the API is a significant convenience. Traders can retrieve details such as available cash, margin requirements, and transaction history. This transparency aids effective account monitoring and financial planning. For instance, a trader developing a dashboard can use this feature to display up-to-date account information, helping to prevent accidental overtrading or margin calls.
Access to these core features offers a powerful toolkit for developers and traders alike, allowing them to build reliable, responsive, and user-friendly trading applications tailored to specific needs.
Together, these features are the backbone of Deriv API’s functionality, providing the tools needed to optimize trading strategies and account management. Their practical advantages can’t be overstated, especially in fast-moving markets where every second counts.
Getting started with the Deriv API is a foundational step for anyone looking to automate their trading or integrate financial data seamlessly. Setting up the API properly ensures that your connection is secure and stable, enabling your applications to interact with Deriv’s platform effectively. This section highlights how to set up the API, emphasizing the importance of a smooth setup process that can save headaches down the line.
Proper setup means you can confidently pull real-time market data, place orders, and manage account information without interruptions. Think of it as laying the groundwork before building a house—if the foundation isn't solid, nothing else will stand firm. With that in mind, we’ll walk through three main steps: creating an API token, connecting to the API endpoint, and meeting environment requirements.
An API token is like the key to your trading account’s gateway. Without it, your application can't authenticate with Deriv’s system. Creating one is straightforward but crucial.
You start by logging into your Deriv account and navigating to the API token section. Here, you'll generate a token that carries specific permissions—don’t just grab the token blindly! For example, if your trading bot only needs to read market data but not place trades, restrict its access accordingly. This principle of least privilege protects your account if the token ever falls into the wrong hands.
Keep your API token secure like you would protect your banking PIN. Avoid sharing it in plain text or embedding it in public repositories. Many developers use environment variables or encrypted vaults to keep tokens hidden from prying eyes.
"Remember, your API token is the first line of defense. Treat it with as much care as your financial password."
Once you've got your token, the next step is to connect your application to Deriv’s API endpoint. This is the path through which all data flows between your app and the trading platform.
Deriv typically offers WebSocket endpoints for real-time communication and REST endpoints for specific requests. For instance, when you want to stream live price feeds, WebSocket keeps the connection open and continuously updates you without the need to ping the server every time. On the other hand, REST calls work well for one-off data requests like fetching historical prices.
Here’s a quick example snippet to illustrate establishing a WebSocket connection (in JavaScript):
javascript const WebSocket = require('ws'); const ws = new WebSocket('wss://ws.binaryws.com/websockets/v3?app_id=1089');
ws.on('open', function open() ws.send(JSON.stringify( authorize: 'YOUR_API_TOKEN_HERE'
ws.on('message', function incoming(data) console.log('Message from server:', data);
Remember to replace `'YOUR_API_TOKEN_HERE'` with your actual API token. Handling connection errors and timeouts gracefully is also a good practice to avoid service interruptions.
### Environment Requirements and Setup
Before jumping into coding, your development environment needs a few basics covered. Deriv API works well with popular languages like Python, JavaScript, and PHP. Make sure your environment supports HTTP requests and WebSockets.
A common hiccup is missing dependencies or outdated libraries, which can cause connection failures or data parsing errors. For example, if you're using Node.js, ensure your version supports ES6 features and that the `ws` package for WebSocket communication is installed and updated.
Additionally, a stable internet connection and firewall settings that allow WebSocket traffic are musts. Some corporate networks block WebSocket connections by default, which means your app won’t reach Deriv’s servers.
> **Quick checklist for environment setup:**
> - Supported programming language installed
> - Relevant HTTP and WebSocket libraries included
> - Environment variables setup for API tokens
> - Network permissions that allow WebSocket connections
> - Error logging configured to catch and debug issues easily
Taking a moment to verify these points will help your integration run without unexpected snags.
Setting up Deriv API correctly isn’t just a technical step; it’s the gateway to unlocking the full potential of automated trading and data access. Once these basics are in place, you’ll be ready to explore more complex interactions like placing trades programmatically and mining historical data effectively.
## Basic Operations with Deriv API
Basic operations form the foundation for using the Deriv API effectively. They cover everyday tasks traders and developers need to execute trades, track progress, and gather data. Mastering these basics ensures you can build more sophisticated tools and strategies later without stumbling over common pitfalls.
Using the Deriv API for basic operations helps reduce manual tasks and speeds up decision-making. For instance, issuing a trade involves sending an order to the platform, then continuously checking its status until it's complete or cancelled. Furthermore, accessing historical data through the API aids in backtesting strategies by providing the info you need without switching between different platforms.
Understanding these core functions is especially useful if you're developing automated trading bots or integrating market data into analytic dashboards. Let’s break down the essential operations.
### Placing a Trade Order
Placing a trade order via the Deriv API is where your interaction with the trading system gets real. Essentially, this means instructing the platform to buy or sell a financial instrument on your behalf with specific parameters.
When placing an order, you define critical details such as the asset symbol (like "frxUSDJPY" for the US dollar and Japanese yen pair), the amount you're willing to invest, and the contract type (such as "CALL" or "PUT"). There are other options too, like selecting durations, barriers, or prediction features depending on strategy.
For example, if you want to bet on the price of oil going up in the next 5 minutes, your API call will specify this timeframe and contract direction. The API then responds with a trade identifier or confirmation.
> It's important to validate user inputs before sending trade orders to avoid errors or placing unintended trades, which can lead to unnecessary losses.
### Monitoring Trade Status
Once a trade is placed, keeping tabs on its status is vital. Monitoring helps you understand whether your order is active, expired, won, lost, or still pending. The Deriv API lets you query specific trade IDs to get updated status messages and results.
Polling the API at regular intervals (every few seconds or as required) is a straightforward way to monitor trades programmatically. But be mindful of rate limits to avoid being temporarily blocked.
Imagine you’ve placed a binary options contract that lasts for 10 minutes. You might write an automated script that checks trade status every 30 seconds, notifying you when the trade concludes or if any issue arises.
### Retrieving Historical Data
Historical data is the backbone for analysis and testing. With the Deriv API, you get access to past price ticks, candle data, and other statistics.
This data is essential if you want to test trading strategies against real market movements or conduct statistical examinations. For example, a trader might pull 1-minute candle data over the past 30 days for EUR/USD to identify patterns or volatility shifts.
When retrieving historical data, pay attention to the API's data limits and formatting. Since large datasets can be heavy, it's often best to request data in smaller chunks and cache results to improve efficiency.
Basic operations with Deriv API unlock straightforward tasks that every trader or developer needs. Whether you’re placing orders, keeping an eye on your trades, or digging into past data, these actions form the bedrock of more advanced applications.
Understanding and mastering these steps is where most users start — the gateway to automating their trading processes or enhancing decision-making with real-time and historical info.
## Advanced Usage and Customization
Diving into advanced usage and customization is where the Deriv API really shows its muscle. Beyond basic trades and data pulls, these options empower traders and developers to shape the API’s capabilities to fit specific strategies and workflows. Especially for pros dealing with fast-moving markets, the ability to automate actions and customize responses can save time and cut risks.
### Automating Trading Strategies
Automating trading strategies via Deriv API is a game-changer for anyone who wants to remove emotion from decision-making or simply execute trades faster than any human could. Suppose you track a currency pair like USD/KES and want to buy automatically whenever the price dips a certain amount within an hour. Setting up this logic in your code means trades happen immediately without your intervention, avoiding delays or missed opportunities.
These automated tactics rely on defining clear entry and exit rules in your software, which the API executes by placing orders directly. It’s vital to backtest your strategy on historical data first to catch logic errors or unexpected market behavior. With Deriv API, you can integrate stop-loss or take-profit triggers for added security, making it easier to control potential losses during volatile swings.
### Integrating External Data Sources
While Deriv provides robust price data and platform stats, combining this with external information can enrich your trading signals. For example, incorporating economic calendar events from trusted financial news outlets or sentiment analysis from social media feeds can help refine when or how you trade.
Using Deriv API together with APIs from sites like Bloomberg or Alpha Vantage allows your app to consume multiple data streams. Say you build a dashboard that updates USD/KES rates alongside recent Central Bank announcements. By syncing these data sets, your system can alert you to potential impacts on currency moves far quicker than manual research.
### Custom Alerts and Notifications
Setting up bespoke alerts is another useful angle. Traders don’t want to be glued to screens 24/7 but need to act promptly. Deriv API supports sending notifications based on conditions you set—such as hitting a certain profit threshold or when a trade moves against you beyond a stop point.
These alerts can be routed via email, SMS, or integrated messaging apps tailored to your routine. Imagine getting a text when your automated trade hits take profit or an immediate warning if volatility spikes unexpectedly during a crucial session. Custom alerts help balance staying informed without being overwhelmed.
> Clever use of these advanced features means your app can handle routine tasks while you focus on evaluating strategy or market trends. You make the rules, and the Deriv API follows them without needing a nudge.
To wrap it up, playing with the customization options provided by Deriv API not only enhances efficiency but can also give traders an edge, letting them engage markets more confidently and smartly. Just remember to keep testing and adjusting your setups, as flexibility in these systems is key to solid long-term results.
## Security Considerations for API Users
When working with the Deriv API, keeping your data and access secure isn't just good practice—it's absolutely essential. If security slips, you risk unauthorized trades, data leaks, and potential financial losses. This section zooms in on how to protect your API credentials and navigate data privacy requirements so you don't end up with more trouble than profit.
### Protecting Your API Credentials
API credentials are like the keys to your trading kingdom. If someone else gets hold of them, they can execute trades, check your balance, or even drain your account. So, the first rule? Treat these credentials like confidential info.
Here’s what you need to keep in mind:
- **Store securely:** Avoid storing API tokens or passwords directly in your code. Instead, use environment variables or secure vaults like AWS Secrets Manager or HashiCorp Vault.
- **Limit permissions:** When generating your API token on Deriv, assign only the necessary scopes needed for your application. For example, if you only need to pull market data, don’t give trading permissions.
- **Rotate credentials regularly:** Just like you wouldn’t use the same password forever, update your API tokens periodically to reduce risk.
- **Avoid sharing:** Never share your credentials in emails, forums, or public repositories like GitHub.
Imagine a trader who hardcoded their API token in a public GitHub repo. Someone spots it and executes unauthorized trades, leading to considerable losses before the mistake is caught. That’s the kind of situation proper credential management prevents.
### Handling Data Privacy and Compliance
Dealing with financial data means you have to be mindful of privacy laws and compliance standards. This is particularly important depending on your location, like Kenya with its Data Protection Act, or international regulations if operating cross-border.
To keep on the right side of the law and protect your users, consider these points:
- **Data minimization:** Only collect and store data that's absolutely necessary for your application.
- **Secure transmission:** Always use HTTPS/TLS encryption when sending or receiving data from the Deriv API to prevent man-in-the-middle attacks.
- **User consent:** If your app handles end-users' personal information, ensure you have clear consent and provide options for them to control their data.
- **Data storage:** Secure stored data with encryption at rest, and restrict access to authorized personnel only.
For instance, if your trading app captures user profiles or contact details, ensure you comply with Kenya’s data laws by giving users clear information on how their data is used and stored.
> Remember, getting security wrong isn’t just about immediate financial loss. It can damage your reputation and lead to hefty penalties.
Taking deliberate steps to protect your API credentials and handle personal data carefully will keep your trading operations smooth and your users' trust intact.
## Troubleshooting Common Issues
When working with the Deriv API, encountering hiccups is part of the experience. Troubleshooting common issues isn't just about fixing errors—it's about understanding the system’s behavior and ensuring your applications run smoothly. Addressing these issues quickly minimizes downtime and keeps your trading strategies effective and reliable. From connection problems to managing usage limits, knowing how to diagnose and resolve frequent setbacks saves time and frustration.
### Connection Errors and Failures
Connection errors are among the most common troubles when using the Deriv API. They often stem from network instability, incorrect endpoint configurations, or expired API tokens. For instance, if your app suddenly stops receiving real-time data, it might be because of a dropped WebSocket connection or incorrect URL paths.
To tackle connection failures:
- Double-check your API endpoint URL matches the one provided in Deriv's documentation.
- Ensure your internet connection is stable, especially if you're running high-frequency requests.
- Validate that the API token hasn’t expired or been revoked—tokens usually have a lifespan or can be reset by the user.
- Monitor error codes returned by the API. For example, a 401 typically indicates authentication problems, while 503 often signals server unavailability.
Sometimes your firewall or security settings might block WebSocket connections necessary for streaming data. Testing the connection in a different network environment or temporarily disabling restrictive settings can pinpoint the source of failure.
> Persistent connection issues might hint at intermittent networking problems. Logging connection attempts with timestamps helps identify patterns and troubleshoot effectively.
### API Rate Limits and Usage Policies
The Deriv API enforces rate limits to maintain service quality and prevent abuse. When you hit these limits, you may notice delays or temporary blocks on sending requests. Understanding these thresholds helps you design your queries and trade executions more wisely.
Key points to consider:
- Rate limits are generally defined as the maximum number of requests allowed per minute or hour.
- Excessive calls beyond the allowed number lead to HTTP 429 errors, indicating "Too Many Requests." Ignoring these can cause your API access to get restricted.
- If your strategy involves frequent or batch requests, implement exponential backoff techniques, where the wait time between retries increases progressively rather than hammering the server.
For example, if your bot makes 100 requests per minute, but the API limit is 60, consider batching calls or requesting only essential data to stay within limits. Using caching for static or infrequently changing information also reduces unnecessary queries.
Staying aware of the Deriv API’s specific rate policies and using adaptive request patterns makes your application more robust and avoids service interruptions.
In summary, effective troubleshooting of connection errors and rate limits involves proactive monitoring, understanding API feedback, and adapting your implementation. This approach not only keeps your integration stable but also supports smooth trading operations without unexpected setbacks.
## Examples of Deriv API in Action
Seeing the Deriv API in action can really clear the fog around its capabilities and practical uses. When you work with real examples, it’s easier to grasp how the offerings keyboard into your workflow, especially if you're juggling market data and trades. This section breaks down some hands-on uses — like creating a basic trade bot or pulling meaningful insights for market analysis — that help bridge basic theory and real-world application.
### Building a Simple Trade Bot
A simple trade bot using the Deriv API can be a game-changer, especially for traders who want to automate repetitive actions like entering and exiting positions based on set rules. Let’s say you want a bot that places a buy order when a certain asset dips below a predefined price, and sells when it hits your target profit.
The API supports this by letting you fetch live prices and place orders through secure endpoints. For instance, you’d use calls to retrieve the market price, compare it internally in your code, then trigger an order placement operation when conditions are met. This reduces the lag you’d get from manual trades, helping you catch opportunities faster.
Here’s a barebones snippet that outlines how such a bot might check price and place an order:
const derivAPI = require('deriv-api');
const targetPrice = 100.50;
async function tradeBot()
const price = await api.getPrice('frxEURUSD');
if(price targetPrice)
await api.placeOrder(
symbol: 'frxEURUSD',
amount: 10,
type: 'buy',
console.log('Order placed at:', price);
setInterval(tradeBot, 5000); // check every 5 secondsOf course, this is just a starting point. More experienced developers and traders can layer in stop losses, trailing stops, or even sentiment indicators.
The Deriv API is not only about placing trades. It’s a powerful source of real-time and historical data crucial for market analysis. Suppose you’re an analyst tracking volatility or price trends across multiple instruments — fetching updated data programmatically makes your life much easier.
With the API, you can retrieve historical price data for assets like commodities, forex pairs, or synthetic indices. You can apply your own calculations — maybe rolling averages, RSI, or other indicators — to spot trends or potential reversals. Imagine automating this stuff: every time a particular signal triggers, you get an alert or prepare to act.
To put that in perspective, say you’re scanning for sharp price changes. A script can fetch the last hour’s tick data and calculate the standard deviation of prices to spot abnormal volatility spikes. Those are often a sign to hold off or shift strategy.
Using the API for market analysis bridges the gap between raw data and informed decisions, letting you act with more confidence and speed.
In summary, getting a hands-on feel with the API through examples like trading bots or market analysis scripts is invaluable. It turns what sounds like abstract technical jargon into a practical toolkit for real trading and investment scenarios.
Working efficiently with the Deriv API means not only understanding its ins and outs but also following best practices that make your development reliable and scalable. These guidelines help avoid common pitfalls such as data mishandling or outdated application logic. In practice, following best practices can save you headaches down the line, especially when managing multiple requests or dealing with volatile trading environments.
By focusing on efficient data handling and keeping your application up-to-date, you improve speed, reduce errors, and maintain compliance with platform changes. Let's break down these two essentials.
Managing data smartly is a lifeline when working with any trading API, including Deriv’s. Efficient data management means storing, retrieving, and updating data with minimal delays and errors. For example, instead of repeatedly querying the API for the same account balance or trade status, cache that information temporarily to reduce unnecessary requests and stay within API rate limits.
Using a combination of local storage and memory caching can make your application snappy yet cautious. Imagine streaming real-time price ticks—if you log every single update without filtering, you’ll drown in data and slow your app. Instead, save only significant price changes or aggregated data over intervals.
Remember: Overloading your system with raw data is like trying to drink from a firehose. Be selective and purposeful about what you keep.
Also, always validate and sanitize incoming data to avoid corrupt entries, especially when aggregating external sources. For instance, verify timestamps and price feeds before using them in decision-making or display.
The API landscape isn't static; Deriv regularly updates features, fixes bugs, and patches vulnerabilities. Staying current prevents your integration from breaking unexpectedly and helps leverage new functionalities.
Set a routine to check official Deriv developer announcements and changelogs. Automate update notifications if possible. For example, remember when Deriv transitioned to support newer authentication methods? Apps that ignored the update faced downtime or sudden failures until they adapted.
Additionally, maintain version control of your API client and dependencies. When upgrading, test changes thoroughly in a sandbox environment to avoid disruptions in live trading.
Regular code reviews and refactoring can catch deprecated calls or inefficient code. For example, swapping synchronous requests with asynchronous ones could improve responsiveness without extra server strain.
Updating isn’t just about code. Make sure your security practices, like key rotation and encryption, keep pace with evolving threats.
By applying these best practices, you ensure your Deriv API application stays solid, fast, and secure amid the unpredictable world of trading.
Navigating the Deriv API can be straightforward when you know where to turn for help and information. Accessing the right resources not only speeds up learning but also helps troubleshoot unexpected issues, keeps you updated on API changes, and connects you with a community of like-minded developers and traders. Without this support, even seasoned professionals might find themselves stuck or working inefficiently. Let's break down the key resources that will keep you ahead in your Deriv API experience.
The official Deriv API documentation is your first port of call. It offers detailed specifications, example code snippets, and practical guides to every aspect of the API. Whether you're setting up your API token or exploring advanced features like trade automation, this documentation is continually updated to reflect the latest changes and best practices.
Beyond the docs, the developer community is a goldmine for support and collaboration. Forums, such as the Deriv developer community boards or platforms like GitHub and Stack Overflow, allow you to discuss issues, share code, and find solutions to common (and uncommon) problems. For example, a trader struggling with implementing custom alerts might find a ready-made script shared by another user, saving hours of work.
If you learn best by example, tutorials will be invaluable. Comprehensive tutorials often walk you through practical projects, such as building a trade bot or setting up market analysis dashboards using the Deriv API. Websites and video platforms offer step-by-step instructions that cater to various skill levels, ensuring you grasp both basics and nuances.
On top of tutorials, third-party tools can enhance your productivity. Tools like Postman simplify API testing without needing to code, while libraries such as Python's Requests or JavaScript’s Axios streamline integration in your projects. Additionally, there are dedicated IDE plugins and debugging tools tailored for financial APIs that can smooth out your workflow.
Always test third-party tools in sandbox environments before using them with your live account to avoid unwanted trades or data issues.
Together, official resources, community insights, tutorials, and smart tools form the backbone of a solid support system when working with the Deriv API. Keep these resources handy and revisit them regularly, especially as API updates roll out or when you plan to scale your applications.