External REST API

Read and write the same insights, signals, opportunities, and ideas you manage in the app over HTTPS with workspace API keys. Vendor connections (Zoom, Jira, Google Drive, and others) are covered in the integration guides; this reference is for HTTP paths, methods, and payloads.

Secure

Keys and scopes are managed in workspace Settings; revoke anytime.

Fast

JSON over HTTPS for automation and dashboards.

RESTful

Conventional resources and verbs so clients stay predictable.

Authentication

All API requests must include an Authorization header with your API key as a bearer token. You can manage your API keys in the Settings > API Keys section of your Zentrik workspace.

Zentrik workspace Settings showing the API keys area before any keys exist.

Create and manage keys from Settings → API keys in your workspace.

bash
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://zentrik.com/external/v1/insights
Modal for creating an API key with scope checkboxes.

Each key can be limited to the API scopes your automation needs.

Keep your API keys secret. Do not share them or commit them to public repositories. If a key is compromised, revoke it immediately in the dashboard.

Signals

Signals are the imported transcripts, tickets, reviews, and reports that feed Discovery. Use these endpoints when you want to bring evidence into Zentrik from another source.

Operations
GET/external/v1/signals
signals:read
GET/external/v1/signals/:id
signals:read
POST/external/v1/signals
signals:write
PATCH/external/v1/signals/:id
signals:write
DELETE/external/v1/signals/:id
signals:delete
POST/external/v1/signals/:id/process
signals:write
GET

List all signals

List the signals in your workspace. Signals are imported pieces of customer or market evidence such as transcripts, support tickets, reviews, and discovery reports.

Requirements

API scopes required:
signals:read

Request

Parameters
NameTypeDescription
limit numberMaximum number of items to return (default: 20)
offset numberNumber of items to skip (default: 0)

Responses

200
Success

Signals were successfully retrieved.

Schema
Array<Signal>
Example Request
GET
/external/v1/signals
curl
curl -X GET https://api.zentrik.com/external/v1/signals?limit=10 \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
[
  {
    "id": "uuid",
    "name": "Support Ticket - 3/20/24, 10:00 AM",
    "publicId": "SIGNAL-42",
    "workspaceId": "workspace-uuid",
    "status": "processed",
    "context": "support_request",
    "signalType": null,
    "source": {
      "type": "support-ticket",
      "external_data": {
        "provider": "zendesk",
        "ticketId": "12345"
      }
    },
    "data": {
      "subject": "Users cannot reset password",
      "severity": "high"
    },
    "insightIds": [],
    "externalId": "external-123",
    "createdAt": "2024-03-20T10:00:00Z",
    "updatedAt": "2024-03-20T10:00:00Z"
  }
]
GET

Get one signal

Retrieve a single signal by its ID.

Requirements

API scopes required:
signals:read

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the signal

Responses

200
Success

The signal was successfully retrieved.

Schema
404
Not Found

No signal found with the provided ID.

Example Request
GET
/external/v1/signals/:id
curl
curl -X GET https://api.zentrik.com/external/v1/signals/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
{
  "id": "uuid",
  "name": "Support Ticket - 3/20/24, 10:00 AM",
  "publicId": "SIGNAL-42",
  "workspaceId": "workspace-uuid",
  "status": "processed",
  "context": "support_request",
  "signalType": null,
  "source": {
    "type": "product-analytics",
    "external_data": {
      "event": "checkout_abandoned"
    }
  },
  "data": {
    "sessionId": "session-123"
  },
  "insightIds": [
    "insight-uuid"
  ],
  "externalId": "external-123",
  "createdAt": "2024-03-20T10:00:00Z",
  "updatedAt": "2024-03-20T10:00:00Z"
}
POST

Create a signal

Create a new signal by sending the text you want Zentrik to analyze. This is the recommended public API flow for transcripts, support tickets, reviews, and discovery reports. Advanced raw signal bodies are also accepted on this same endpoint and are auto-queued.

Requirements

API scopes required:
signals:write

Request

Request body (application/json)
namestring

Optional display name for the signal. When omitted for typed text signals, Zentrik generates one from the signal type and timestamp.

textstring
Required

The raw transcript, support ticket, review, or discovery report text that Zentrik should process into insights.

signalType'transcript' | 'support_ticket' | 'review' | 'discovery_report'
Required

What kind of text you are sending. This determines how Zentrik processes the signal. New text signals are automatically queued for processing after creation.

additionalContextstring

Optional notes to help Zentrik interpret the text correctly. Use this for things like where the text came from, what batch it belongs to, or any lightweight analyst note. This is treated as supplemental context, not an instruction override.

occurredAtiso-date

Optional timestamp representing when the original signal happened. When provided, it is used as the signal creation timestamp for trend accuracy.

productIdsuuid[]

Optional list of products to narrow the product context used during processing.

accountIduuid

Optional account to associate with insights created from a typed text signal.

Responses

201
Created

The signal was successfully created and queued for asynchronous processing. Create responses include a queued job id.

Schema
Example Request
POST
/external/v1/signals
json
{
  "name": "G2 Reviews - March Batch",
  "text": "Users love the product overall, but several reviewers mention that exports are hard to find and slow to complete for large datasets.",
  "signalType": "review",
  "additionalContext": "Public review batch collected from G2 and Capterra.",
  "occurredAt": "2025-03-11T14:30:00Z",
  "productIds": [
    "product-uuid-1"
  ],
  "accountId": "account-uuid-1"
}
Example Response
200 OK
json
{
  "id": "uuid",
  "name": "Review - 3/11/25, 2:30 PM",
  "publicId": "SIGNAL-43",
  "workspaceId": "workspace-uuid",
  "status": "processing",
  "context": null,
  "signalType": "review",
  "source": {
    "type": "manual-text",
    "external_data": {
      "signalType": "review",
      "analysisProfile": "survey_response"
    }
  },
  "data": {
    "s3Key": "signals/manual-text/workspace-uuid/uuid.txt",
    "productIds": [
      "product-uuid-1"
    ],
    "accountId": "account-uuid-1",
    "additionalContext": "Public review batch collected from G2 and Capterra.",
    "uploadedAt": "2025-03-21T10:00:00Z"
  },
  "insightIds": [],
  "externalId": null,
  "createdAt": "2025-03-11T14:30:00Z",
  "updatedAt": "2025-03-21T10:00:00Z",
  "jobId": "job-123",
  "processing": {
    "lastJobId": "job-123",
    "startedAt": "2025-03-21T10:00:00Z",
    "processedAt": null,
    "failedAt": null,
    "lastError": null
  }
}
PATCH

Update a signal

Update fields of an existing signal, such as metadata or linked insights.

Requirements

API scopes required:
signals:write

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the signal
Request body (application/json)
sourceobject

Updated source descriptor for the signal.

dataobject

Updated arbitrary context payload.

insightIdsstring[]

Replace the list of linked insight IDs.

externalIdstring

Updated external record identifier.

status'pending' | 'processed'

Processing status for the signal.

contextstring

Persisted signal context, such as user_interview or support_request.

Responses

200
Updated

The signal was successfully updated.

Schema
Example Request
PATCH
/external/v1/signals/:id
curl
curl -X PATCH https://api.zentrik.com/external/v1/signals/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"insightIds": ["insight-uuid"]}'
DELETE

Delete a signal

Permanently delete a signal from the workspace.

Requirements

API scopes required:
signals:delete

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the signal

Responses

200
Success

The signal was successfully deleted.

Schema
{ message: string }
Example Request
DELETE
/external/v1/signals/:id
curl
curl -X DELETE https://api.zentrik.com/external/v1/signals/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
{
  "message": "Deleted"
}
POST

Process a signal

Queue signal processing for an existing signal. Use this for explicit re-runs or manual retries.

Requirements

API scopes required:
signals:write

Request

Parameters
NameTypeDescription
id *uuidThe public or external-facing identifier of the signal to process.

Responses

201
Queued

The signal was queued for asynchronous processing.

Schema
{ jobId: string }
Example Request
POST
/external/v1/signals/:id/process
curl
curl -X POST https://api.zentrik.com/external/v1/signals/SIGNAL-43/process \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
{
  "jobId": "job-456"
}

Creation Modes

The recommended public API flow is typed text ingestion. Sendtext andsignalTypeto create a manual signal that is automatically queued for AI processing into insights.

Supported signal types: transcript, support_ticket, review, discovery_report

Profile mapping: transcript → transcript analysis, support_ticket → ticket analysis, review → feedback/review analysis, discovery_report → synthesized discovery-report analysis

Async behavior: create returns a processing signal plus a jobId

Inferred context: you do not need to send a context label. Zentrik infers the best matching interaction context during processing.

Advanced/raw ingestion: the same create endpoint also supports lower-level fields such as source, data, and some integration-oriented metadata.

Those fields are intentionally omitted from the primary docs here because most public API users only need the typed text flow.

Data Models

Signals are intentionally flexible. The core fields help you track provenance while thesource anddata payloads carry your custom structure.

Signal Object

FieldTypeDescription
iduuidThe unique identifier for the signal.
namestringDisplay name for the signal. For typed text signals, Zentrik can generate this automatically from the signal type and timestamp.
publicIdstringWorkspace-scoped, human-readable identifier in the form "SIGNAL-123". Useful for referencing signals in UI and exports.
workspaceIduuidID of the workspace this signal belongs to.
status'pending' | 'processing' | 'processed' | 'failed'Processing status of the signal. Create responses that queue work now typically return processing immediately, then later settle to processed or failed.
signalType'transcript' | 'support_ticket' | 'review' | 'discovery_report' | nullPresent for manual text signals. Indicates which typed ingestion flow created the signal.
contextstring | nullNormalized interaction context inferred or stored for the signal, such as user_interview, feature_feedback, or support_request. Most clients do not need to send this on create.
source{ type: string; external_data?: object }Descriptor of where the signal originated from. For typed text signals this is typically 'manual-text'. This is mainly useful for advanced or integration-oriented flows.
dataobject | nullStored metadata for the signal. For typed text signals this includes the S3 key plus optional product, account, and notes metadata. Most clients do not need to write this directly.
insightIdsuuid[]List of insight IDs that have been linked to this signal.
externalIdstring | nullIdentifier of the record in the external system (for example, a ticket or event identifier).
createdAtiso-dateTimestamp when the signal was first created.
updatedAtiso-dateTimestamp of the last modification.
jobIdstring | undefinedReturned on create/process responses when an asynchronous processing job has been queued.
processing{ lastJobId?: string | null; startedAt?: string | null; processedAt?: string | null; failedAt?: string | null; lastError?: string | null } | nullOperational processing metadata. Use this to debug queue progress and retries before assuming a signal is stuck.

Insights

Insights are the core of discovery. They represent feedback, observations, or data points collected from users and markets. Use these endpoints to manage the lifecycle of your discovery data.

Operations
GET/external/v1/insights
insights:read
GET/external/v1/insights/:id
insights:read
POST/external/v1/insights
insights:write
PATCH/external/v1/insights/:id
insights:write
DELETE/external/v1/insights/:id
insights:delete
POST/external/v1/insights/process-transcript/insights
insights:write
GET

List Insights

Returns a paginated list of all insights in your workspace. Insights are the core of discovery, representing feedback and data points collected from various sources.

Requirements

API scopes required:
insights:read

Request

Parameters
NameTypeDescription
limit numberMaximum number of items to return (default: 20)
offset numberNumber of items to skip (default: 0)

Responses

200
Success

A list of insights was successfully retrieved.

Schema
Array<Insight>
Example Request
GET
/external/v1/insights
curl
curl -X GET https://api.zentrik.com/external/v1/insights?limit=10 \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Users find navigation confusing",
    "description": "Initial feedback from beta testers...",
    "status": "published",
    "type": "feedback",
    "productId": "8a1b2c3d-...",
    "createdAt": "2024-03-20T10:00:00Z",
    "updatedAt": "2024-03-20T10:00:00Z",
    "opportunityIds": [
      "uuid-1"
    ],
    "ideaIds": [
      "uuid-2"
    ],
    "tagIds": [
      "tag-1"
    ]
  }
]
GET

Get Insight

Retrieve detailed information about a specific insight by its unique identifier.

Requirements

API scopes required:
insights:read

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the insight

Responses

200
Success

The insight details were successfully retrieved.

Schema
404
Not Found

No insight found with the provided ID.

Example Request
GET
/external/v1/insights/:id
curl
curl -X GET https://api.zentrik.com/external/v1/insights/550e8400-e29b-41d4-a716-446655440000 \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Users find navigation confusing",
  "description": "Initial feedback from beta testers...",
  "status": "published",
  "type": "feedback",
  "productId": "8a1b2c3d-...",
  "createdAt": "2024-03-20T10:00:00Z",
  "updatedAt": "2024-03-20T10:00:00Z",
  "opportunityIds": [
    "uuid-1"
  ],
  "ideaIds": [
    "uuid-2"
  ],
  "tagIds": [
    "tag-1"
  ]
}
POST

Create Insight

Manually create a new insight. Use this for structured feedback or when you already have the processed data.

Requirements

API scopes required:
insights:write

Request

Request body (application/json)
namestring

The title of the insight

descriptionstring
Required

Detailed summary of the observation

statusstring

Default is 'draft'. One of: draft, published, archived

typestring

One of: feedback, user-interview, market-research, session-recording, support-ticket, other

productIduuid

ID of the associated product

opportunityIdsstring[]

List of associated opportunity IDs

ideaIdsstring[]

List of associated idea IDs

tagIdsstring[]

List of associated tag IDs

suggestionsobject

AI-generated suggestions for the insight

externalLinksobject[]

Array of { type, url, name } for external references

Responses

201
Created

The insight was successfully created.

Schema
Example Request
POST
/external/v1/insights
json
{
  "name": "User finds the billing page confusing",
  "description": "During user interviews, 3/5 users couldn't find...",
  "status": "published",
  "type": "feedback",
  "productId": "8a1b2c3d-...",
  "tagIds": [
    "tag-1"
  ]
}
Example Response
200 OK
json
{
  "id": "uuid",
  "name": "User finds the billing page confusing",
  "description": "During user interviews, 3/5 users couldn't find...",
  "status": "published",
  "type": "feedback",
  "productId": "8a1b2c3d-...",
  "createdAt": "2024-03-20T10:00:00Z",
  "updatedAt": "2024-03-20T10:00:00Z",
  "opportunityIds": [],
  "ideaIds": [],
  "tagIds": [
    "tag-1"
  ]
}
PATCH

Update Insight

Modify an existing insight. You can update the status, name, or description as the discovery process evolves.

Requirements

API scopes required:
insights:write

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the insight
Request body (application/json)
namestring

Updated title

descriptionstring

Updated description

statusstring

Update state (e.g., 'archived')

typestring

Updated type

productIduuid

Updated product association

opportunityIdsstring[]

Updated list of opportunity IDs

ideaIdsstring[]

Updated list of idea IDs

tagIdsstring[]

Updated list of tag IDs

Responses

200
Updated

The insight was successfully updated.

Schema
Example Request
PATCH
/external/v1/insights/:id
curl
curl -X PATCH https://api.zentrik.com/external/v1/insights/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"status": "archived"}'
Example Response
200 OK
json
{
  "id": "uuid",
  "name": "Users find navigation confusing",
  "description": "Initial feedback from beta testers...",
  "status": "archived",
  "type": "feedback",
  "productId": "8a1b2c3d-...",
  "createdAt": "2024-03-20T10:00:00Z",
  "updatedAt": "2024-03-21T09:00:00Z"
}
DELETE

Delete Insight

Permanently remove an insight from the workspace. This action cannot be undone.

Requirements

API scopes required:
insights:delete

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the insight

Responses

200
Success

The insight was successfully deleted.

Schema
{ message: string }
Example Request
DELETE
/external/v1/insights/:id
curl
curl -X DELETE https://api.zentrik.com/external/v1/insights/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
{
  "message": "Deleted"
}
POST

Extract insights from text (AI)

Leverage Zentrik's AI to automatically extract insights from meeting transcripts, support tickets, or long-form feedback. The AI identifies key pain points and opportunities automatically.

Requirements

API scopes required:
insights:write

Request

Request body (application/json)
transcriptstring
Required

Full transcript text to analyze for insights

productIduuid

Optional product ID to associate insights with

createInsightsboolean

Whether to persist generated insights (default: false)

Responses

200
Success

AI processing completed successfully.

Schema
Array<Insight>
Example Request
POST
/external/v1/insights/process-transcript/insights
json
{
  "transcript": "Full text of the meeting or feedback...",
  "createInsights": true
}
Example Response
200 OK
json
[
  {
    "id": "uuid-1",
    "name": "Navigation issue",
    "description": "Users expressed confusion about the menu layout...",
    "type": "feedback",
    "status": "draft",
    "createdAt": "2024-03-20T10:00:00Z"
  }
]

Data Models

Understanding the structure of the data returned by the Insights API. These models are consistent across all endpoints in this category.

Insight Object

FieldTypeDescription
iduuidThe unique identifier for the insight.
namestringThe title or headline of the insight.
descriptionstringA detailed summary of the observation or feedback.
statusenumThe current state of the insight (draft, published, archived).
typeenumThe source or category of the insight (e.g., feedback, user-interview).
productIduuid | nullThe ID of the product this insight belongs to.
opportunityIdsuuid[]List of IDs for opportunities linked to this insight.
ideaIdsuuid[]List of IDs for ideas linked to this insight.
tagIdsuuid[]List of IDs for tags associated with this insight.
createdAtiso-dateTimestamp when the insight was first created.
updatedAtiso-dateTimestamp of the last modification.

Opportunities

Opportunities help you bridge the gap between user problems (insights) and product solutions (ideas). Use these endpoints to organize and prioritize the problems worth solving.

Operations
GET/external/v1/opportunities
opportunities:read
GET/external/v1/opportunities/:id
opportunities:read
POST/external/v1/opportunities
opportunities:write
PATCH/external/v1/opportunities/:id
opportunities:write
DELETE/external/v1/opportunities/:id
opportunities:delete
GET

List all opportunities

Retrieve a list of all opportunities in your workspace. Opportunities represent significant problems, needs, or desired outcomes identified from insights.

Requirements

API scopes required:
opportunities:read

Responses

200
Success

List of opportunities retrieved.

Schema
Example Request
GET
/external/v1/opportunities
curl
curl -X GET https://api.zentrik.com/external/v1/opportunities \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
[
  {
    "id": "uuid",
    "name": "Streamline checkout process",
    "description": "High drop-off rate at the final step...",
    "score": 85
  }
]
GET

Get one opportunity

Retrieve detailed information about a specific opportunity.

Requirements

API scopes required:
opportunities:read

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the opportunity

Responses

200
Success
Example Request
GET
/external/v1/opportunities/:id
curl
curl -X GET https://api.zentrik.com/external/v1/opportunities/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
{
  "id": "uuid",
  "name": "Streamline checkout process"
}
POST

Create an opportunity

Define a new opportunity identified from your discovery efforts.

Requirements

API scopes required:
opportunities:write

Request

Request body (application/json)
namestring
Required

Title of the opportunity

descriptionstring
Required

Detailed problem statement

scorenumber

Opportunity score (0-100)

Responses

201
Created

The opportunity was successfully created.

Example Request
POST
/external/v1/opportunities
json
{
  "name": "Reduce churn in Mobile App",
  "description": "Users are uninstalling after 2 days...",
  "score": 92
}
Example Response
200 OK
json
{
  "id": "uuid",
  "name": "Reduce churn in Mobile App"
}
PATCH

Update an opportunity

Modify an existing opportunity.

Requirements

API scopes required:
opportunities:write

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier of the opportunity
Request body (application/json)
namestring

Updated title

scorenumber

Updated score

Responses

200
Updated
Example Request
PATCH
/external/v1/opportunities/:id
curl
curl -X PATCH https://api.zentrik.com/external/v1/opportunities/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{"score": 95}'
DELETE

Delete an opportunity

Permanently remove an opportunity.

Requirements

API scopes required:
opportunities:delete

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier

Responses

200
Success

Example Request
DELETE
/external/v1/opportunities/:id
curl
curl -X DELETE https://api.zentrik.com/external/v1/opportunities/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY'

Data Models

The Opportunity model represents a prioritized problem or need discovered during the research phase.

Opportunity Object

FieldTypeDescription
iduuidThe unique identifier for the opportunity.
namestringThe title of the opportunity.
descriptionstringDetailed summary of the problem or need.
scorenumberPriority score (0-100) based on impact and feasibility.
statusenumCurrent state (e.g., discovery, defined, validated, archived).
productIduuidThe ID of the product this opportunity addresses.
insightIdsuuid[]IDs of insights that support this opportunity.
ideaIdsuuid[]IDs of ideas that aim to solve this opportunity.
createdAtiso-dateCreation timestamp.
updatedAtiso-dateLast update timestamp.

Ideas

Ideas are the tangible solutions you're considering to address your opportunities. Track features, experiments, and improvements through their evaluation lifecycle.

Operations
GET/external/v1/ideas
ideas:read
GET/external/v1/ideas/:id
ideas:read
POST/external/v1/ideas
ideas:write
PATCH/external/v1/ideas/:id
ideas:write
DELETE/external/v1/ideas/:id
ideas:delete
GET

List all ideas

Get a list of all potential solutions and features tracked as ideas.

Requirements

API scopes required:
ideas:read

Responses

200
Success

List of ideas retrieved.

Schema
Array<Idea>
Example Request
GET
/external/v1/ideas
curl
curl -X GET https://api.zentrik.com/external/v1/ideas \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example Response
200 OK
json
[
  {
    "id": "uuid",
    "name": "Implement one-click checkout",
    "description": "Reduce friction by storing user preferences...",
    "status": "evaluating"
  }
]
GET

Get one idea

Retrieve one feature idea by ID.

Requirements

API scopes required:
ideas:read

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier

Responses

200
Success

Schema
Example Request
GET
/external/v1/ideas/:id
curl
curl -X GET https://api.zentrik.com/external/v1/ideas/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY'
POST

Create an idea

Submit a new feature idea or solution for evaluation.

Requirements

API scopes required:
ideas:write

Request

Request body (application/json)
namestring
Required

Title of the idea

descriptionstring
Required

Detailed description of the solution

Responses

201
Created

The idea was successfully created.

Schema
Example Request
POST
/external/v1/ideas
json
{
  "name": "AI-powered search",
  "description": "Use LLMs to improve search relevance..."
}
Example Response
200 OK
json
{
  "id": "uuid",
  "name": "AI-powered search"
}
PATCH

Update an idea

Modify an existing idea.

Requirements

API scopes required:
ideas:write

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier
Request body (application/json)
namestring

Updated name

descriptionstring

Updated description

Responses

200
Updated

Schema
Example Request
PATCH
/external/v1/ideas/:id
curl
curl -X PATCH https://api.zentrik.com/external/v1/ideas/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{"name": "AI Search 2.0"}'
DELETE

Delete an idea

Permanently delete an idea.

Requirements

API scopes required:
ideas:delete

Request

Parameters
NameTypeDescription
id *uuidThe unique identifier

Responses

200
Success

Example Request
DELETE
/external/v1/ideas/:id
curl
curl -X DELETE https://api.zentrik.com/external/v1/ideas/uuid \
  -H 'Authorization: Bearer YOUR_API_KEY'

Data Models

The Idea model represents a potential feature or solution that addresses identified opportunities.

Idea Object

FieldTypeDescription
iduuidThe unique identifier for the idea.
namestringThe title or name of the feature idea.
descriptionstringDetailed description of the proposed solution.
statusenumEvaluation state (e.g., evaluating, backlog, development, released, archived).
productIduuidThe ID of the product this idea belongs to.
opportunityIdsuuid[]List of opportunities that this idea addresses.
insightIdsuuid[]List of insights that inspired this idea.
createdAtiso-dateCreation timestamp.
updatedAtiso-dateLast update timestamp.