Public REST/JSON reference
Scope Creep Detector API
Track project deliverables against the SOW. Connect Slack channels, email threads, and Jira/Linear projects; the detector classifies every message that mentions scope as `in_scope`, `out_of_scope`, or `unclear` against the deliverables it parsed from the uploaded SOW. Pull the running drift estimate to see additional hours and cost in dollars (cents) before the project goes red. Part of the Logic Igniter Developer & DevOps bundle.
Access boundary
These examples describe public API calls only. Use the service output to review, score, summarize, analyze, or recommend; do not treat the API reference as permission for an assistant to write, send, publish, charge, schedule, notify, delete, or modify records.
Base URL
https://api.logicigniter.comAuth
Authorization: Bearer YOUR_API_KEYVersion
OpenAPI 3.0.3 · 1.0.0Operations rendered
12
Response models rendered
15
/api/v1/scopecreep/healthService liveness
Liveness probe — returns 200 if the service is reachable.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/health" \ -H "Accept: application/json"
Responses
200Service healthy
/api/v1/scopecreep/customersList customers
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/customers" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Page of customers
401ErrorMissing or invalid API key.
/api/v1/scopecreep/customersProvision a customer
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request body (required)
Schema: CreateCustomerRequest
Sample JSON payload for evaluation.
{
"email": "[email protected]",
"name": "Example Inc."
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/scopecreep/customers" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","name":"Example Inc."}'/api/v1/scopecreep/customers/{id}Get a customer by id
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/customers/:id" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
/api/v1/scopecreep/customers/{id}Update a customer
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request body (required)
Schema: UpdateCustomerRequest
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X PUT "https://api.logicigniter.com/api/v1/scopecreep/customers/:id" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/scopecreep/projectsList projects
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/projects" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Page of projects
401ErrorMissing or invalid API key.
/api/v1/scopecreep/projectsCreate a project
Register a project for monitoring. `slack_channels`, `email_threads`, and `ticket_projects` are the integration ids the detector will subscribe to. `original_hours` and `original_cost_cents` come from the SOW and anchor the drift calculation. This REST endpoint uses SOW values already available to the project setup workflow.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request body (required)
Schema: CreateProjectRequest
Sample JSON payload for evaluation.
{
"name": "Acme Q2 redesign",
"client_name": "Acme Corp",
"slack_channels": [
"C0123ABCD"
],
"email_threads": [],
"ticket_projects": [
"ACME"
],
"hourly_rate_cents": 18500,
"original_hours": 240,
"original_cost_cents": 4440000
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/scopecreep/projects" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"Acme Q2 redesign","client_name":"Acme Corp","slack_channels":["C0123ABCD"],"email_threads":[],"ticket_projects":["ACME"],"hourly_rate_cents":18500,"original_hours":240,"original_cost_cents":4440000}'/api/v1/scopecreep/projects/{project_id}Get a project with its parsed SOW deliverables
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
project_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/projects/:project_id" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/scopecreep/projects/{project_id}/signalsList scope signals for a project
Paginated stream of every Slack/email/ticket message the detector flagged. Filter by `classification` to drive the human-review queue (`unclear`) or build a dispute-prep brief (`out_of_scope`).
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
project_idrequired | path | string (uuid) | |
classification | query | enum(in_scope | out_of_scope | unclear) | |
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/projects/:project_id/signals" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/scopecreep/projects/{project_id}/signals/{signal_id}Get a single signal
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
project_idrequired | path | string (uuid) | |
signal_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/projects/:project_id/signals/:signal_id" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/scopecreep/projects/{project_id}/signals/{signal_id}/classifyOverride classification on a signal
Manually set classification — used to train the model on this workspace's project conventions.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
project_idrequired | path | string (uuid) | |
signal_idrequired | path | string (uuid) |
Request body (required)
Schema: ClassifyRequest
Sample JSON payload for evaluation.
{
"classification": "out_of_scope"
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/scopecreep/projects/:project_id/signals/:signal_id/classify" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"classification":"out_of_scope"}'Responses
/api/v1/scopecreep/projects/{project_id}/driftAggregate scope drift
Returns total_additional_hours and total_additional_cost_cents derived from all signals classified as `out_of_scope`, alongside the SOW originals. The number you take into the change-order conversation.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
project_idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/scopecreep/projects/:project_id/drift" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
200ScopeDriftScope drift
401ErrorMissing or invalid API key.
402ErrorEndpoint requires an active subscription. Free tier covers 1 project with 7-day retention; paid plans unlock unlimited projects, full history, and impact + health endpoints.
404ErrorProject not found
Data models
Error
| Field | Type | Notes |
|---|---|---|
errorrequired | string |
CreateProjectRequest
| Field | Type | Notes |
|---|---|---|
namerequired | string | |
client_namerequired | string | |
slack_channels | array<string> | |
email_threads | array<string> | |
ticket_projects | array<string> | |
hourly_rate_cents | integer (int64) | |
original_hours | number (double) | |
original_cost_cents | integer (int64) |
Project
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
name | string | |
client_name | string | |
slack_channels | array<string> | |
email_threads | array<string> | |
ticket_projects | array<string> | |
hourly_rate_cents | integer (int64) | |
original_hours | number (double) | |
original_cost_cents | integer (int64) |
ProjectsResponse
| Field | Type | Notes |
|---|---|---|
items | array<Project> | |
next_page_token | string | |
total_count | integer |
ProjectDetail
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
name | string | |
client_name | string | |
deliverables | array<string> | |
milestones | array<string> | |
original_hours | number (double) | |
original_cost_cents | integer (int64) |
ScopeSignal
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
project_id | string (uuid) | |
source | string | |
message_text | string | |
classification | enum(in_scope | out_of_scope | unclear) | One of: in_scope, out_of_scope, unclear |
confidence | number (float) | |
matched_deliverables | array<string> |
SignalsResponse
| Field | Type | Notes |
|---|---|---|
signals | array<ScopeSignal> | |
next_page_token | string |
SignalDetail
| Field | Type | Notes |
|---|---|---|
signal | ScopeSignal |
ClassifyRequest
| Field | Type | Notes |
|---|---|---|
classificationrequired | enum(in_scope | out_of_scope | unclear) | One of: in_scope, out_of_scope, unclear |
ClassificationResult
| Field | Type | Notes |
|---|---|---|
signal | ScopeSignal |
ScopeDrift
| Field | Type | Notes |
|---|---|---|
project_id | string (uuid) | |
total_additional_hours | number (double) | |
total_additional_cost_cents | integer (int64) | |
original_hours | number (double) | |
original_cost_cents | integer (int64) |
CreateCustomerRequest
| Field | Type | Notes |
|---|---|---|
emailrequired | string (email) | |
namerequired | string |
UpdateCustomerRequest
| Field | Type | Notes |
|---|---|---|
email | string (email) | |
name | string |
Customer
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
email | string (email) | |
name | string | |
created_at | string (date-time) |
CustomersResponse
| Field | Type | Notes |
|---|---|---|
items | array<Customer> | |
next_page_token | string | |
total_count | integer |

