Skip to main content

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.com

Auth

Authorization: Bearer YOUR_API_KEY

Version

OpenAPI 3.0.3 · 1.0.0

Operations rendered

12

Response models rendered

15

GET/api/v1/scopecreep/health

Service 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

200

Service healthy

GET/api/v1/scopecreep/customers

List 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

NameInTypeNotes
page_sizequeryinteger
page_tokenquerystring

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

Missing or invalid API key.

POST/api/v1/scopecreep/customers

Provision 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."}'

Responses

Customer created or returned

Invalid email or missing name

Missing or invalid API key.

GET/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

NameInTypeNotes
idrequiredpathstring (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"

Responses

Customer record

Missing or invalid API key.

Customer not found

PUT/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

NameInTypeNotes
idrequiredpathstring (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 '{}'

Responses

Updated customer

Invalid update

Missing or invalid API key.

Customer not found

GET/api/v1/scopecreep/projects

List 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

NameInTypeNotes
page_sizequeryinteger
page_tokenquerystring

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

Missing or invalid API key.

POST/api/v1/scopecreep/projects

Create 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}'

Responses

Project created

Missing name or client_name

Missing or invalid API key.

Endpoint requires an active subscription. Free tier covers 1 project with 7-day retention; paid plans unlock unlimited projects, full history, and impact + health endpoints.

GET/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

NameInTypeNotes
project_idrequiredpathstring (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

Project detail

Missing or invalid API key.

Project not found

GET/api/v1/scopecreep/projects/{project_id}/signals

List 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

NameInTypeNotes
project_idrequiredpathstring (uuid)
classificationqueryenum(in_scope | out_of_scope | unclear)
page_sizequeryinteger
page_tokenquerystring

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

Page of signals

Missing or invalid API key.

Project not found

GET/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

NameInTypeNotes
project_idrequiredpathstring (uuid)
signal_idrequiredpathstring (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

Signal detail

Missing or invalid API key.

Signal not found

POST/api/v1/scopecreep/projects/{project_id}/signals/{signal_id}/classify

Override 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

NameInTypeNotes
project_idrequiredpathstring (uuid)
signal_idrequiredpathstring (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

Classification result

Invalid classification value

Missing or invalid API key.

Endpoint requires an active subscription. Free tier covers 1 project with 7-day retention; paid plans unlock unlimited projects, full history, and impact + health endpoints.

Signal not found

GET/api/v1/scopecreep/projects/{project_id}/drift

Aggregate 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

NameInTypeNotes
project_idrequiredpathstring (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

Scope drift

Missing or invalid API key.

Endpoint requires an active subscription. Free tier covers 1 project with 7-day retention; paid plans unlock unlimited projects, full history, and impact + health endpoints.

Project not found

Data models

Error

FieldTypeNotes
errorrequiredstring

CreateProjectRequest

FieldTypeNotes
namerequiredstring
client_namerequiredstring
slack_channelsarray<string>
email_threadsarray<string>
ticket_projectsarray<string>
hourly_rate_centsinteger (int64)
original_hoursnumber (double)
original_cost_centsinteger (int64)

Project

FieldTypeNotes
idstring (uuid)
namestring
client_namestring
slack_channelsarray<string>
email_threadsarray<string>
ticket_projectsarray<string>
hourly_rate_centsinteger (int64)
original_hoursnumber (double)
original_cost_centsinteger (int64)

ProjectsResponse

FieldTypeNotes
itemsarray<Project>
next_page_tokenstring
total_countinteger

ProjectDetail

FieldTypeNotes
idstring (uuid)
namestring
client_namestring
deliverablesarray<string>
milestonesarray<string>
original_hoursnumber (double)
original_cost_centsinteger (int64)

ScopeSignal

FieldTypeNotes
idstring (uuid)
project_idstring (uuid)
sourcestring
message_textstring
classificationenum(in_scope | out_of_scope | unclear)One of: in_scope, out_of_scope, unclear
confidencenumber (float)
matched_deliverablesarray<string>

SignalsResponse

FieldTypeNotes
signalsarray<ScopeSignal>
next_page_tokenstring

SignalDetail

FieldTypeNotes
signalScopeSignal

ClassifyRequest

FieldTypeNotes
classificationrequiredenum(in_scope | out_of_scope | unclear)One of: in_scope, out_of_scope, unclear

ClassificationResult

FieldTypeNotes
signalScopeSignal

ScopeDrift

FieldTypeNotes
project_idstring (uuid)
total_additional_hoursnumber (double)
total_additional_cost_centsinteger (int64)
original_hoursnumber (double)
original_cost_centsinteger (int64)

CreateCustomerRequest

FieldTypeNotes
emailrequiredstring (email)
namerequiredstring

UpdateCustomerRequest

FieldTypeNotes
emailstring (email)
namestring

Customer

FieldTypeNotes
idstring (uuid)
emailstring (email)
namestring
created_atstring (date-time)

CustomersResponse

FieldTypeNotes
itemsarray<Customer>
next_page_tokenstring
total_countinteger