Appearance
Resource API
The Knowify OAuth API exposes RESTful CRUD endpoints for Knowify platform resources. All endpoints require a Bearer access token and the appropriate scope.
Base URL
GET|POST|PUT|PATCH|DELETE /api/v1/{resource}Authentication
Include your access token in every request:
bash
curl -H "Authorization: Bearer ACCESS_TOKEN" \
https://developers.knowify.com/api/v1/projectsAvailable Resources
| Resource | Slug | Read Scope | Write Scope | GET list | GET :id | POST | PUT | PATCH | DELETE | Search |
|---|---|---|---|---|---|---|---|---|---|---|
| Projects | projects | projects:read | projects:write | Yes | Yes | Yes | Yes | Yes | No | Yes |
| Bills | bills | bills:read | bills:write | Yes | Yes | Yes | No | No | Yes | |
| Clients | clients | clients:read | clients:write | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Departments | departments | departments:read | departments:write | Yes | Yes | Yes | Yes | Yes | Yes | |
| Invoices | invoices | invoices:read | invoices:write | Yes | Yes | Yes | Yes | Yes | Yes | |
| AIA Invoices | aiainvoices | invoices:read | invoices:write | Yes | Yes | Yes | No | No | No | |
| Items | items | items:read | items:write | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Milestones | milestones | milestones:read | milestones:write | No | Yes | Yes | Yes | Yes | Yes | |
| Payments | payments | payments:read | payments:write | Yes | Yes | Yes | No | No | No | |
| Purchases | purchases | purchases:read | purchases:write | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Resources | resources | resources:read | resources:write | Yes | Yes | Yes | Yes | Yes | Yes | |
| Tickets | tickets | tickets:read | tickets:write | Yes | Yes | Yes | Yes | No | Yes | |
| Time | time | time:read | time:write | Yes | Yes | Yes | Yes | Yes | Yes | |
| Vendors | vendors | vendors:read | vendors:write | Yes | Yes | Yes | Yes | Yes | Yes | |
| Allocations | allocations | allocations:read | allocations:write | Yes | Yes | Yes | Yes | No | Yes | |
| Billables | billables | billables:read | billables:write | Yes | Yes | Yes | Yes | No | Yes | Yes |
| Contracts | contracts | contracts:read | contracts:write | No | Yes | Yes | Yes | No | Yes | |
| Documents | documents | documents:read | documents:write | No | Yes | Yes | Yes | Yes | Yes | |
| Users | users | users:read | users:write | Yes | Yes | Yes | Yes | Yes | Yes | |
| Submittals | submittals | submittals:read | — | No | Yes | No | No | No | No | |
| Assets | assets | assets:read | assets:write | Yes | Yes | Yes | Yes | Yes | Yes | |
| List Items | list-items | list-items:read | list-items:write | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
The admin meta-scope grants access to all resources. The read meta-scope grants all :read access. The write meta-scope grants all :read and :write access.
Standard Endpoints
For each resource that supports the operation:
GET /api/v1/{slug} # List with pagination
GET /api/v1/{slug}/:id # Get by ID
GET /api/v1/{slug}/search?q=term # Search (if supported)
GET /api/v1/{slug}/since/:timestamp # Changes since ISO timestamp
POST /api/v1/{slug} # Create
PUT /api/v1/{slug}/:id # Full update (replace)
PATCH /api/v1/{slug}/:id # Partial update (merge)
DELETE /api/v1/{slug}/:id # DeleteUnsupported methods return 405 Method Not Allowed.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
page_size | integer | 100 | Records per page |
sort | string | — | Field name to sort by |
sort_asc | boolean | true | Sort ascending (false for descending) |
fields | string | — | Comma-separated field names to return |
include_deleted | boolean | false | Include soft-deleted records |
scope | string | — | Filter scope (resource-specific) |
q / filter | string | — | Search or filter term |
start | ISO 8601 | — | Date range start |
end | ISO 8601 | — | Date range end |
project | string | — | Filter by project ID |
client | string | — | Filter by client ID |
Example: List Projects with Pagination and Sorting
bash
curl -H "Authorization: Bearer ACCESS_TOKEN" \
"https://developers.knowify.com/api/v1/projects?page=1&page_size=10&sort=ProjectName&sort_asc=true"Response Format
List Response
json
{
"didSucceed": true,
"data": [
{ "Id": "p1", "ProjectName": "Website Redesign", ... },
{ "Id": "p2", "ProjectName": "Office Renovation", ... }
],
"total": 42,
"limit": 10,
"offset": 0,
"status": 200
}Single Resource Response
json
{
"didSucceed": true,
"data": {
"Id": "p1",
"ProjectName": "Website Redesign",
"ClientId": "c123",
"Status": "Active",
...
},
"status": 200
}Create/Update Response
json
{
"didSucceed": true,
"data": { ... created or updated resource ... },
"status": 200
}Search
Resources that support search accept a q parameter:
bash
curl -H "Authorization: Bearer ACCESS_TOKEN" \
"https://developers.knowify.com/api/v1/projects/search?q=renovation"Searchable fields vary by resource:
- Projects — ProjectName, ProjectNumber
- Clients — ClientName, CompanyName
- Items — Description, ItemNumber
- Vendors — VendorName, CompanyName
- Billables — Description
- List Items — Description
Delta Sync
Fetch records modified after a timestamp:
bash
curl -H "Authorization: Bearer ACCESS_TOKEN" \
"https://developers.knowify.com/api/v1/projects/since/2024-01-01T00:00:00Z"Returns the same paginated response format. Useful for incremental syncs.
Custom Endpoints
Projects
GET /api/v1/projects/:id/projectPlan # Project plan details
GET /api/v1/projects/:id/submittals # Project submittals
GET /api/v1/projects/:projectId/list-items # Project list items (with CRUD)Invoices
GET /api/v1/invoices/all # Combined regular + AIA invoices
GET /api/v1/invoices/all/since/:timestamp # Combined delta syncAIA invoice IDs are prefixed with "AIA" and include an InvoiceType field.
Time
POST /api/v1/time/check-in # Start a time entry
PUT /api/v1/time/check-out/:id # End a time entry
POST /api/v1/time/approveTime # Approve a time entrySpecial Endpoints
These endpoints provide account-level information:
GET /api/v1/me # Current user info and OAuth scopes
GET /api/v1/company # Company information
GET /api/v1/settings # Company settings
GET /api/v1/valid # Validate token and return granted scopesExample: Get Current User
bash
curl -H "Authorization: Bearer ACCESS_TOKEN" \
https://developers.knowify.com/api/v1/meResponse (user context):
json
{
"didSucceed": true,
"data": {
"Id": "u123",
"Name": "Jane Smith",
"Email": "jane@example.com",
...
},
"status": 200
}Response (client credentials / no user context):
json
{
"didSucceed": true,
"data": {
"accountId": "a456",
"clientId": "your-client-id",
"scopes": ["projects:read", "invoices:write"]
},
"status": 200
}Error Responses
json
{
"didSucceed": false,
"data": null,
"message": "Insufficient scope. Required: projects:write",
"status": 403
}| Status | Meaning |
|---|---|
| 400 | Invalid request body or parameters |
| 401 | Missing or invalid access token |
| 403 | Token lacks required scope |
| 404 | Resource not found |
| 405 | Method not allowed for this resource |
| 429 | Rate limit exceeded (see Errors & Rate Limiting) |
| 500 | Internal server error |