Welcome to the GimCore REST API. This API provides a robust, enterprise-grade gateway for external integrations, mobile applications, and AI agents to interact with GimCore applications and data.
All API requests must be prefixed with the following base URL:
https://{your-gimcore-domain}/api/v1
GimCore uses a stateless API Key authentication mechanism. You must include your API Key in the HTTP headers of every request.
Header Format:
X-API-KEY: your_api_key_here
[!WARNING] Do not expose your API Key in client-side code (e.g., frontend JavaScript). Always route requests through a secure backend server.
These endpoints allow you to dynamically discover the Apps (Projects), Screens, and Field Schemas available to your API Key.
Retrieves a list of all Apps (Projects) accessible to the authenticated user.
GET /apps{
"status": "success",
"data": [
{
"appId": 10,
"name": "HR Management",
"description": "Human resources and leave requests"
}
]
}
Retrieves all configured Screens (Forms) belonging to a specific App.
GET /apps/{appId}/screens{
"status": "success",
"data": [
{
"id": 55,
"name": "Leave Request",
"description": ""
}
]
}
Retrieves the exact physical schema and field definitions for a specific Screen. This is extremely useful for rendering dynamic forms or mapping data.
GET /apps/{appId}/screens/{screenId}/schema{
"status": "success",
"data": {
"appId": 10,
"screenId": 55,
"fields": [
{
"id": 120,
"internalName": "cf123",
"displayName": "Reason for Leave",
"type": "textarea",
"isRequired": true,
"isReadOnly": false
}
]
}
}
These endpoints allow you to manipulate actual data records (Issues/Tasks) within a specific App and Screen.
Creates a single record. The payload should be a flat JSON object where keys correspond to the internalName (e.g., cf123, title, status) from the Schema API.
POST /apps/{appId}/screens/{screenId}/records{
"title": "Annual Leave - John Doe",
"status": "1",
"cf123": "Taking a family vacation."
}
{
"status": "success",
"message": "Created successfully",
"recordId": 9876
}
High-performance endpoint to insert multiple records at once. GimCore uses a "Best Effort" processing model: valid records will be inserted even if some fail.
POST /apps/{appId}/screens/{screenId}/records/bulk[
{ "title": "Task 1", "status": "2" },
{ "title": "Task 2", "status": "1" }
]
{
"status": "success",
"total": 2,
"success": 2,
"failed": 0,
"errors": []
}
[!TIP] The Bulk Create API skips individual email notifications and heavy post-actions to ensure maximum throughput. Use this for importing CSV/Excel data.
Fetches the full data payload for a specific record. The response automatically joins custom fields.
GET /records/{recordId}{
"status": "success",
"data": {
"id": 9876,
"title": "Annual Leave - John Doe",
"status": "1",
"cf123": "Taking a family vacation."
}
}
Replaces the data of an existing record. Fields not provided in the payload may be reset or evaluated against default workflow rules.
PUT /records/{recordId}{
"title": "Annual Leave - John Doe (Updated)",
"status": "2"
}
Updates specific fields without affecting the rest of the record.
PATCH /records/{recordId}{
"status": "3"
}
[!IMPORTANT] Performance Optimization: If your payload contains exactly one field (ignoring identifiers like
id,issueId, etc.), GimCore will intelligently bypass the heavy workflow engine and execute a micro-query to update that single column directly in the database. This is the recommended approach for quick state changes (e.g., drag-and-drop Kanban operations).
Performs a safe "Soft Delete" on the record, removing it from active views while preserving historical audit trails.
DELETE /records/{recordId}{
"status": "success",
"message": "Record deleted successfully",
"recordId": 9876
}
429 Too Many Requests response.appId or screenId they are not assigned to, a 403 Forbidden response is returned.