---
title: Strapi API Integration on Truto
slug: strapi
category: Knowledge Management
canonical: "https://truto.one/integrations/detail/strapi/"
---

# Strapi API Integration on Truto



**Category:** Knowledge Management  
**Status:** Beta

## Unified APIs

### Unified User Directory API

- **Me** — 
- **Roles** — The Role object represents a role of a User.
- **Users** — The User object represents a User.

## MCP-ready AI tools

Truto exposes 31 tools for Strapi that AI agents can call directly.

- **create_a_strapi_upload** — Upload one or more files to Strapi's Media Library, optionally linking them to a specific content-type entry. Returns the uploaded file object(s). Required: files. To link files to an entry, also supply ref, refId, and field.
- **list_all_strapi_documents** — List all documents from a Strapi content type. Returns an array of document records for the specified collection. Required: plural_api_id (the plural API ID of the target content type, e.g., 'articles').
- **get_single_strapi_document_by_id** — Get a single document from a Strapi content type by id. Returns the full document record. Required: plural_api_id and id.
- **create_a_strapi_document** — Create a new document in a Strapi content type. Returns the created document record including its id. Required: plural_api_id and a data body containing the document fields.
- **update_a_strapi_document_by_id** — Update an existing document in a Strapi content type by id. Returns the updated document record. Required: plural_api_id, id, and a data body with the fields to update.
- **delete_a_strapi_document_by_id** — Delete a document from a Strapi content type by id. Returns an empty response on success. Required: plural_api_id and id.
- **list_all_strapi_upload_files** — List all uploaded files in Strapi. Returns an array of file objects.
- **get_single_strapi_upload_file_by_id** — Get a single uploaded file in Strapi by id. Returns the file object details. Required: id.
- **delete_a_strapi_upload_file_by_id** — Delete an uploaded file in Strapi by id. Returns an empty response on success. Required: id.
- **create_a_strapi_auth_register** — Register a new local user in Strapi. Returns a JWT token and the created user object including id, username, and email. Required: username, email, password.
- **create_a_strapi_auth_forgot_password** — Trigger a forgot-password email flow in Strapi for a registered user. Sends a password-reset email to the provided address. Required: email.
- **create_a_strapi_auth_reset_password** — Reset a Strapi user's password using a password reset code. Returns the authenticated user's jwt token and user object on success. Required: code, password, passwordConfirmation.
- **create_a_strapi_auth_change_password** — Change the authenticated Strapi user's password. Returns the updated user object along with a new JWT token. Required: currentPassword, password, passwordConfirmation.
- **list_all_strapi_auth_email_confirmation** — Confirm a Strapi user's email address using the confirmation token sent via email. Typically redirects or returns a confirmation response on success. Required: confirmation.
- **create_a_strapi_auth_send_email_confirmation** — Send an email confirmation message to a Strapi user. Triggers a confirmation email to the provided address so the user can verify their account. Required: email.
- **create_a_strapi_auth_refresh** — Refresh a Strapi authentication session by exchanging a refresh token for a new JWT access token. Returns a new JWT. Required: refreshToken.
- **create_a_strapi_auth_logout** — Log out the currently authenticated Strapi user by invalidating their active session token. Returns a confirmation response on success. No additional parameters are required.
- **list_all_strapi_users** — List all users registered in strapi. Returns an array of user objects including id, username, email, confirmed, and blocked fields.
- **get_single_strapi_user_by_id** — Get a single strapi user by id. Returns the full user object including id, username, email, confirmed, blocked, and role. Required: id.
- **create_a_strapi_user** — Create a new user in strapi. Returns the created user object including id, username, and email. Required: username, email, password.
- **update_a_strapi_user_by_id** — Update an existing strapi user by id. Returns the updated user object including id, username, and email. Required: id.
- **delete_a_strapi_user_by_id** — Delete a strapi user by id. Returns the deleted user object on success. Required: id.
- **list_all_strapi_users_count** — Get the total count of registered users in Strapi. Returns a single numeric value representing the total number of users.
- **list_all_strapi_roles** — List all roles in Strapi. Returns an array of role objects from the users-permissions plugin.
- **get_single_strapi_role_by_id** — Get a single Strapi role by id. Returns the role object from the users-permissions plugin. Required: id.
- **create_a_strapi_role** — Create a new role in Strapi via the users-permissions plugin. Returns the created role object.
- **update_a_strapi_role_by_id** — Update an existing Strapi role by id via the users-permissions plugin. Returns the updated role object. Required: id.
- **delete_a_strapi_role_by_id** — Delete a Strapi role by id via the users-permissions plugin. Required: id.
- **list_all_strapi_permissions** — List all available permissions in Strapi. Returns the permissions object containing the full set of registered permissions across all plugins and controllers.
- **list_all_strapi_me** — Get the profile of the currently authenticated user in Strapi. Returns the user object for the authenticated user.
- **create_a_strapi_auth_session** — Authenticate a Strapi user using local credentials. Returns a jwt token and the authenticated user object.

## How it works

1. **Link your customer's Strapi account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Strapi.** The Proxy API is a 1-to-1 mapping of the Strapi API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed Strapi as a content source for localization platforms** — Translation and localization SaaS companies can let users connect their Strapi instance, pull source documents by content type, and push translated versions back — eliminating manual import/export workflows.
- **Power SEO and content optimization workflows** — SEO platforms can read live content from a customer's Strapi CMS, analyze it, and write optimized titles, metadata, and body copy back directly — turning recommendations into one-click publishes.
- **Push generated assets into customers' media libraries** — DAM tools, AI image generators, and design platforms can offer an 'Export to Strapi' action that uploads files into the customer's Strapi Media Library and attaches them to the right content entry.
- **Surface help center content in support widgets** — Customer support and in-app widget platforms can pull FAQs and support articles from a customer's Strapi instance and display them natively, without forcing teams to duplicate knowledge bases.
- **Automate user and role provisioning into Strapi** — Identity, SSO, and HR platforms can use the Unified User Directory API to create, update, and revoke Strapi users and roles whenever employees are onboarded or offboarded — keeping knowledge base access in sync.

## What you can build

- **Dynamic content type sync** — Fetch, create, and update entries across any custom Strapi content type using the document endpoints, with the plural_api_id resolved per-customer at runtime.
- **Contextual media uploads** — Upload files to a customer's Strapi Media Library and attach them to a specific entry and field using ref, refId, and field parameters in a single call.
- **Two-way content publishing** — Pull documents into your product for editing, translation, or enrichment, then write changes back to Strapi using update_a_strapi_document_by_id without leaving your UI.
- **Unified user and role provisioning** — Use the Unified User Directory API to list, create, update, and delete Strapi users and roles alongside other CMS and knowledge tools through one consistent schema.
- **Auth and session lifecycle management** — Trigger Strapi auth flows — register, login session, refresh, logout, password reset, and email confirmation — directly from your app to manage end-user access programmatically.
- **Media library browser** — List, retrieve, and delete files in a customer's Strapi Media Library to power an embedded asset picker or cleanup tooling inside your product.

## FAQs

### How does authentication to a customer's Strapi instance work?

Truto handles credential collection and storage for each end user's Strapi instance, so you don't need to build or maintain the connection flow. Your app calls Truto's tools with a connection identifier and Truto attaches the right credentials to each request.

### Can we work with custom content types that vary per customer?

Yes. Strapi exposes every content type dynamically via its plural_api_id, and the document tools (list, get, create, update, delete) operate against whatever content types a customer has defined — so you can support fully custom schemas at runtime.

### Can we upload files and link them to a specific content entry?

Yes. create_a_strapi_upload supports ref (content type), refId (entry ID), and field parameters, which lets you upload a file and attach it to a specific field on a specific entry in one request.

### Does the integration support user and role management?

Yes. You can list, create, update, and delete users and roles through Strapi-specific tools, and also access them through Truto's Unified User Directory API for a normalized schema across multiple integrations.

### How fresh is the data — is there webhook support?

The current tool set is request-based (REST), so freshness depends on how often your app polls list endpoints like list_all_strapi_documents. If you need event-driven sync, reach out to Truto to discuss adding webhook support.

### Does this work with both Strapi Cloud and self-hosted Strapi?

Yes. Strapi exposes the same REST API regardless of hosting, so the integration works against Strapi Cloud and self-hosted instances as long as the API is reachable and the connected user has the right permissions.

## Related reading

- [Connect Strapi to Claude: Automate CMS Documents and Access Control](https://truto.one/blog/connect-strapi-to-claude-automate-cms-documents-and-access-control/) — Learn how to build a managed MCP server to connect Strapi to Claude. Automate CMS document creation, media uploads, and user access control workflows.
- [Connect Strapi to ChatGPT: Manage Media, Content, and User Accounts](https://truto.one/blog/connect-strapi-to-chatgpt-manage-media-content-and-user-accounts/) — Learn how to build and configure a managed MCP server to connect Strapi to ChatGPT. Automate content generation, media uploads, and user administration.
- [Connect Strapi to AI Agents: Sync Content, Files, and Permissions](https://truto.one/blog/connect-strapi-to-ai-agents-sync-content-files-and-permissions/) — Learn how to connect Strapi to AI agents using Truto's tools endpoint. Build autonomous workflows to sync CMS content, manage files, and control user access.
