This API lets your company's systems and AI (such as chatbots you built yourself, internal portals, or business systems) search for and read Dive's published SOPs. It is called with a key (API key) issued by the Owner. Each answer includes a link that opens that SOP in Dive.
If a person wants to search and read SOPs with their own Dive account from an AI they use (such as Claude or ChatGPT), use AI connections (MCP). The API is a feature that reads from your company's systems with a company key. People who use your system do not need a Dive account (they need to log in to Dive to open videos).
Available on the Enterprise plan. The Owner issues and sets up keys from a PC browser. This feature is provided as a beta version.
Note: Before you use this feature, be sure to read "Compliance Requirements and Disclaimer" at the bottom of this article. If you use this feature, you are considered to have agreed to its contents.
What the API can do
With the API, you can only search for and read SOPs. You cannot create, edit, or delete SOPs.
- Search: Send a search term, and the API returns matching published SOPs, ordered by relevance. It searches SOP titles, step names, work content, tips, quality, safety, items used, document numbers, tags, the text of file-based SOPs, and video captions. For each match, it includes an excerpt of the part that matched and a link that opens the SOP in Dive
- Read: Returns the SOP title, document number, overview, items used, and the titles of related files, along with the work content, tips, quality, safety, and standard time for each step. For file-based SOPs (existing manuals such as PDFs), it returns the text of each page. Each step includes a link that opens that step in Dive
The API only returns published SOPs within the key's scope (see "Scope of SOPs a key returns" below). Drafts are not returned. Videos, images, and the contents of related files are not returned. Questions in SOPs and the names of people, such as authors, are not returned either.
Before you start (the Owner issues a key)
The Owner issues keys from a PC browser.
- Open [Owner Functions] from the side menu
- Select the [Integrations] tab at the top, then open [API (search and read SOPs)] (it is below [AI connections (MCP)])
- Click [Issue key]
- Decide the name, Groups to show, Source IP, and expiration, then click [Issue] (for what each one means, see "What to decide for each key" below)
- The issued key is displayed. Copy the key and the [API URL] into your company system's settings, then click [I've copied it, close]
The key is shown only once, right after it is issued. Once you close the screen, it cannot be displayed again. If you forget to copy it, revoke that key and issue a new one. Do not include the key in screenshots.
When a key is issued, an email notifying all Owners of the team that the key was issued is sent. If you receive a notice about a key issued that you do not recognize, revoke it by following the steps in "Change or revoke keys" below.
The card is also shown on plans other than Enterprise. If you click [Issue key], a notice about plans is displayed.
What to decide for each key
- Name: A name that shows which system uses the key (up to 60 characters). Example: "Internal chatbot (production)"
- Groups to show: Decides the scope of SOPs the key returns. See "Scope of SOPs a key returns" below
-
Source IP: The outgoing internet address of the server that calls the API (the place where your company system runs). Once registered, only calls from that address are accepted. You can register up to 20 entries, one per line, as an IPv4 address or as a range from /16 to /32 (for example,
203.0.113.0/24). Required for teams that use IP address restriction - Expiration: Choose 30 days, 90 days, or 1 year (the default is 1 year). The key expires on the expiration date, at the same time of day it was issued. The expiration cannot be extended
A team can have up to 5 active keys. If a team already has 5, revoke a key that is no longer used to issue a new one.
Scope of SOPs a key returns (Groups to show)
A key returns only the published SOPs that a View-only user belonging to every group selected in [Groups to show] could see when searching in Dive. SOPs in folders not restricted by group are always returned.
- If no group is selected, only SOPs in folders not restricted by group are returned
- If you select multiple groups, the scope is decided as "one person who belongs to all of the selected groups." This can be wider than the combined ranges that each group can see on its own
- The scope is not the same as what Owners and Team Administrators can see (all SOPs). SOPs in folders that none of the groups can view are not returned
- The team's [Folder view scope] setting applies to the key in the same way as it does to View-only users (Allowing access to folders of subgroups (Folder view scope))
- If a selected group is deleted, that group is treated as if it does not exist
You can check the scope with the magnifying glass icon [Test with this key] on the key's row. Enter a search term and click [Search], and the results for that key's scope (SOP titles and folders) are displayed. [Test with this key] does not count as an API call.
Calling the API
Call the API over HTTPS from your company's server. It cannot be called directly from a browser screen (JavaScript), because the key would end up on the page.
- API URL:
https://api.divedx.com/v1 - Specification (OpenAPI 3.0):
https://api.divedx.com/v1/openapi.json(can be read without a key) - How to pass the key: add
Authorization: Bearer your-keyto the header
Responses may include new fields in the future. Build your system so that it skips fields it does not recognize. While the API is in beta, the response format may change.
Search for SOPs
Send the search term (query, up to 200 characters) and the number of results to return (limit, 1 to 20, default 5) as JSON to POST /procedures/search.
curl -X POST https://api.divedx.com/v1/procedures/search \
-H "Authorization: Bearer dapi_..." \
-H "Content-Type: application/json" \
-d '{"query":"fryer cleaning","limit":5}'
A list of SOPs is returned in order of relevance. If nothing matches, an empty list ("results": []) is returned.
{
"results": [
{
"id": "-NaBcD1",
"versionId": "-NxYzW9",
"version": 3,
"title": "Fryer cleaning",
"documentNumber": "QC-012",
"folder": "Cleaning",
"kind": "steps",
"language": "en",
"updatedAt": "2026-10-01T09:30:00+09:00",
"matches": [{ "field": "safety", "step": 3, "text": "…after the oil has cooled…" }],
"url": "https://app.divedx.com/view/-NxYzW9?step=3"
}
],
"requestId": "req_…"
}
| Item | Description |
|---|---|
id |
The SOP ID. It does not change when the SOP is revised. Use it when reading the SOP |
versionId and version
|
The ID and number of the version that is currently published |
title, documentNumber, and folder
|
The SOP title, document number, and the name of the folder that contains the SOP |
kind |
steps (an SOP divided into steps) or file (a file-based SOP) |
language |
The original language of the SOP (for example, ja, en, or zh-CN) |
matches |
Where the match was found (the field, the step number or page, and the excerpt). Up to 3 per result |
url |
A link that opens the SOP in Dive (you need to log in to Dive). If a step matched, it opens from that step |
Read an SOP
Use GET /procedures/{id} with the id (or versionId) from the search results to read an SOP. It always returns the version that is currently published.
curl https://api.divedx.com/v1/procedures/-NaBcD1 \ -H "Authorization: Bearer dapi_..."
The main fields returned are as follows.
- Title, document number, overview (
description), items used (usedItems: name, part number, quantity, unit), and related files (relatedFiles: only the title and type of files set to be shown to viewers) - Steps (
steps): step number and name, work content (work), tips (tips), quality (quality), safety (safety), standard time (standardTimeSec, in seconds), and a link that opens that step in Dive (url) - For file-based SOPs (
kindisfile), the text of each page (pages). For files whose text cannot be read, such as scanned PDFs, anotetells you so
Long SOPs are cut off partway through. If truncated is true, call the API again with the fromStep in next (for file-based SOPs, fromPage) to get the rest. You can also specify the range to read with fromStep, toStep, fromPage, and toPage. If a single field is long, it is cut at 4,000 characters (one page of a file-based SOP at 8,000 characters) and "…" is added at the end.
If the SOP does not exist, is outside the key's scope, or exists only as a draft, the API returns 404.
Call limits
- Each key is limited to 120 calls per minute and about 20,000 calls per day (Japan time). Each team is limited to 600 calls per minute
- If a limit is exceeded, the API returns 429. Wait for the number of seconds in the
Retry-Afterheader, then call again - If calls are made repeatedly from the same source with keys that are not registered, the API also returns 429 for a while
When an error occurs
Errors can be identified by the HTTP status code and the code in the response body (in the RFC 9457 format). When you contact us, please tell us the X-Request-Id header from the response (the same as requestId in the body).
| Status | code | Main cause and what to do |
|---|---|---|
| 400 | invalid_request |
The body cannot be read, contains a field that is not recognized, or has a value outside the allowed range. Check what you are sending |
| 401 | invalid_key |
The key is missing or wrong. Check the header format (Authorization: Bearer your-key) |
| 401 | key_expired |
The key has expired. Issue a new key and replace the old one |
| 401 | key_revoked |
The key has been revoked. Issue a new key and replace the old one |
| 403 | plan |
The team's plan does not allow the API (available on the Enterprise plan) |
| 403 | ip_not_allowed |
The call comes from outside the source IP address registered for the key |
| 403 | ip_required |
The team uses IP address restriction, but no source IP address is registered for the key |
| 403 | forbidden |
The call comes from a browser. Call the API from your company's server |
| 404 | not_found |
The SOP does not exist, is outside the key's scope, exists only as a draft, or the URL is wrong |
| 405 | method_not_allowed |
The HTTP method is wrong (POST for search, GET for read) |
| 413 | payload_too_large |
The body is too large (up to 16 KB) |
| 429 | rate_limited |
The call limit has been exceeded. Wait for the number of seconds in Retry-After
|
| 503 | unavailable |
The request cannot be processed for the time being. Wait a while and call again |
Checking usage (Owners)
Open [Usage] on the [API (search and read SOPs)] card to check, for each key, the number of Searches, Reads, and Errors made through the API over the last 7 days, 30 days, and 90 days. You can also check the Times read for each SOP. Details that include the searched words can be exported from [Export details as CSV].
Calls rejected because of the key's expiration, the plan, the source IP address, or the call limit are also counted as "Errors," up to one per minute for the same key and the same reason. If calls from your company's system stop, you can check here.
Call records are kept for 400 days. Key issuance, changes, and revocation, and exports of details as CSV, are also recorded in the audit log (Exporting the audit log as CSV). Owners can check the words searched through the API. Please notify the people who use your system on your side.
Change or revoke keys
- You can change the name, Groups to show, and Source IP from the pencil icon (edit) on the key's row. The key value and the expiration cannot be changed
- To revoke a key, click the trash can icon (Revoke key) on the key's row, then click [Revoke key] in the confirmation message. A revoked key cannot be restored
- Changes and revocations take effect on API calls in about 30 seconds
- Revoked keys and expired keys are shown in the list for 30 days
Expiration and replacement
Owners are notified by email 30 days and 7 days before expiration (for keys with a 30-day term, only 7 days before). Because the expiration cannot be extended, issue a new key, replace the key in your company system's settings, and then revoke the old key. During the replacement period, both the new key and the old key can be used.
When you change plans or start using IP address restriction
- If you change from Enterprise to another plan, API calls are rejected (
plan). The keys remain and can be used again as they are once you return to Enterprise. Viewing the key list and revoking keys remain available after you change plans - If you start using IP address restriction later, keys without a registered source IP address can no longer be used (
ip_required). Register the IP address from the pencil icon on the key's row to make the key usable again - The IP addresses registered to a key apply only to that key. They are not added to the team's IP address restriction allowlist, and they do not affect normal logins
Frequently asked questions
Q. What is the difference between AI connections (MCP) and the API?
A. AI connections let AI tools on the list, such as Claude or ChatGPT, read SOPs with the permissions of the account you connected (Lite, Core, Pro, and Enterprise plans). The API lets a system built in-house read SOPs within the scope of a key issued by the Owner (Enterprise plan).
Q. Are SOPs read through the API recorded in viewing history?
A. No. Reads through the API are not counted in viewing history, Solo completion, or automatic skill evaluations. You can check how the API is used under [Usage].
Q. The content of a revision I just published is not returned.
A. For a few minutes right after publishing, the API may return the text of the previous version. Wait a while and call again.
Q. Can I receive translated text?
A. No. The API returns SOPs in their original language. You can tell the original language from language.
Q. Can I get the full list of SOPs at once?
A. No. The API is designed to search and read SOPs when they are needed. The aim is to avoid keeping copies of SOPs inside your company, so that outdated SOPs do not remain there: each time, the API reads the latest published version in Dive.
Q. Can I use it from an AI platform inside my company?
A. If the platform can read an OpenAPI (3.0) specification and call the API with the key in the Authorization header, you can register the API as a tool. For how to register it, please check the help for the platform you use.
Compliance Requirements and Disclaimer
This feature connects your system with Dive. The Dive Terms of Use apply to its use, and the Compliance Requirements and Disclaimer in this section apply in addition to those Terms. Please be sure to read the following items and use this feature only after you have agreed to them. If you use this feature, you are considered to have agreed to the following items.
Matters concerning your system and third-party services, such as the AI platforms you use (design, development, configuration, operation, behavior, malfunctions, and the content of answers), are outside the scope we can handle, so they are not covered by support. In addition, because this feature is in beta, inquiries about Dive's behavior will be handled only to the extent we can, at our discretion.
1. Key management
(1) A key is a company key that can read the text of the team's SOPs. Please manage the key value strictly at your own responsibility. Do not place the key on screens that run in a browser, in publicly available source code, in chats, in emails, or anywhere else of that kind.
(2) If a key is leaked or there is a risk that it has been leaked, revoke it promptly and issue a new key. We recommend registering a source IP address.
(3) Revoke keys that are no longer used promptly.
(4) We accept no liability whatsoever for damages caused by deficiencies in key management or similar causes.
2. Scope of SOPs provided, and people who use your system
(1) The scope of SOPs a key returns is determined by the groups the Owner selects for each key and by the team's folder viewing settings. Please check the scope with [Test with this key] and set it at your own responsibility.
(2) The SOP text returned by the API reaches people who use your system, including people who do not have a Dive account. Please manage the display, storage, and range of users in your system at your own responsibility.
(3) The words searched through the API and the SOPs read are recorded, and Owners can check them. Please notify the people who use your system at your own responsibility.
(4) We accept no liability whatsoever for information leaks or other damages caused by the scope settings or deficiencies in the management of your system.
3. Accuracy of answers from your system and AI
(1) Answers that your system or an AI creates from the text returned by the API may include summaries, paraphrases, omissions, or errors. An AI may also add content that is not written in the SOP when it answers.
(2) Before doing any work or making any decision, always check the original SOP using the Dive link attached to the answer. In particular, do not make decisions about safety or quality matters based only on answers from your system or AI.
(3) We accept no liability whatsoever for the results of work or decisions made based on answers from your system or AI, or for any accidents or damages arising from them.
4. Disclaimer regarding the use of third-party services
Third-party services that you use to connect to the API (such as AI platforms and cloud services) are provided under the terms set by each provider. How the text of SOPs sent to those services is stored, used, and reused for training AI models is governed by the terms and settings of each provider. Please be sure to check, at your own responsibility, that settings such as disabling training (opt-out) have been applied. We do not guarantee the security of communication paths, the confidentiality of information, availability, or legality of those services. We accept no liability whatsoever for malfunctions, outages, or specification changes of those services, or for security issues or damages arising from their use.
5. No warranty, changes, and suspension
(1) This feature is provided as a beta version, and we make no warranty of any kind regarding its completeness, accuracy, availability, usefulness, security, non-infringement of third-party rights, or fitness for a particular purpose.
(2) We may change the content and specifications of this feature (including the response format and call limits) and the plans in which it can be used without notice, or temporarily suspend or end the provision of this feature. We accept no liability whatsoever for damages caused to you by these actions. Please use this feature at your own judgment and responsibility after checking the latest information.
6. Compliance with laws and terms
When using this feature, you must comply with applicable laws, the Dive Terms of Use, the terms of the third-party services you use, and your company's internal rules.
Related articles
Search and read Dive SOPs from AI chats you already use, such as Claude and ChatGPT (MCP)
Allowing access to folders of subgroups (Folder view scope)