Authentication endpoints for obtaining access tokens and managing API keys.
- Create or update records (upsert)
Aiwyn API (1.0.0)
The Aiwyn API provides programmatic access to our comprehensive suite of financial automation tools. Build powerful integrations and automate your accounting workflows with our RESTful APIs.
- 🔐 Secure Authentication - Industry-standard OAuth 2.0 and API key authentication
- 📊 Real-time Data - Access up-to-date financial information
- 🚀 High Performance - Low latency, high throughput API infrastructure
- 📚 Comprehensive Coverage - Full access to clients, engagements, expenses, and more
- 🛠️ Developer-Friendly - Extensive documentation, SDKs, and code examples
We use URL versioning for our APIs. The current version is v1. All endpoints are prefixed with the version number.
🗃️ Records
Create, update, and manage entity records across standard and custom record types.
The Records API provides:
- Record Operations - Create, update, and delete records for any entity type
- Schema Discovery - Query available entity types and their field definitions
- Custom Record Types - Define and manage custom record type schemas
Request
Create or update records (upsert)
Records are created if they don't exist, or updated if matched by systemRef.
Partial Success Behavior:
- Each record is processed independently
- Successful records are persisted even if others fail
- Check
summary.failedand individualrecords[].statusfor failures - Failed records include error details in
records[].error
Limits: Maximum 100 records per request.
Business Applications:
- Bulk record import
- Entity synchronization
Real Example:
curl --location 'https://{{host}}/api/v1/records' \
--header 'Authorization: bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
"records": example value
}'- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records
- Staginghttps://staging.api.aiwyn.app/api/v1/records
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"records": [
{
"type": "string",
"systemRef": {},
"attributes": {}
}
]
}'{ "data": { "summary": {}, "records": [ … ] }, "error": {}, "meta": { "success": true, "message": "string", "timestamp": "2019-08-24T14:15:22Z", "version": "string" } }
Request
Update existing records only
Only updates existing records. Returns error if record not found by systemRef. The systemRef field is required for all records in PUT requests.
Partial Success Behavior:
- Each record is processed independently
- Successful records are persisted even if others fail
- Records not found will have status
FAILEDwith error codeRECORD_NOT_FOUND - Check
summary.failedand individualrecords[].statusfor failures
Limits: Maximum 100 records per request.
Business Applications:
- Strict update workflows
- Guaranteed existence updates
Real Example:
curl --location 'https://{{host}}/api/v1/records' \
--header 'Authorization: bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
"records": example value
}'- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records
- Staginghttps://staging.api.aiwyn.app/api/v1/records
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"records": [
{
"type": "string",
"systemRef": {},
"attributes": {}
}
]
}'{ "data": { "summary": {}, "records": [ … ] }, "error": {}, "meta": { "success": true, "message": "string", "timestamp": "2019-08-24T14:15:22Z", "version": "string" } }
Request
Delete (inactivate) records
Soft-deletes records by marking them as inactive. Returns error if record not found. The systemRef field is required for all records in DELETE requests.
Partial Success Behavior:
- Each record is processed independently
- Successful deletions are persisted even if others fail
- Records not found will have status
FAILEDwith error codeRECORD_NOT_FOUND - Check
summary.failedand individualrecords[].statusfor failures
Limits: Maximum 100 records per request.
Business Applications:
- Bulk inactivation
- Record cleanup
- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records
- Staginghttps://staging.api.aiwyn.app/api/v1/records
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"records": [
{
"type": "string",
"systemRef": {}
}
]
}'- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/types
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records/types
- Staginghttps://staging.api.aiwyn.app/api/v1/records/types
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/types \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "data": { "entityTypes": [ … ] }, "error": {}, "meta": { "success": true, "message": "string", "timestamp": "2019-08-24T14:15:22Z", "version": "string" } }
- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/schema/{type}
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records/schema/{type}
- Staginghttps://staging.api.aiwyn.app/api/v1/records/schema/{type}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/schema/{type}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "data": { "entityType": "string", "fields": [ … ] }, "error": {}, "meta": { "success": true, "message": "string", "timestamp": "2019-08-24T14:15:22Z", "version": "string" } }
- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records/custom
- Staginghttps://staging.api.aiwyn.app/api/v1/records/custom
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Request
Create a new custom record type
Creates a new custom record type with the specified field schema. The record type name must be unique and follow naming conventions.
Business Applications:
- Define custom data structures
- Extend system capabilities
Real Example:
curl --location 'https://{{host}}/api/v1/records/custom' \
--header 'Authorization: bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
"name": "Example Name",
"displayName": "Example Name",
"description": "example value"
}'Fields
- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records/custom
- Staginghttps://staging.api.aiwyn.app/api/v1/records/custom
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"name": "string",
"displayName": "string",
"description": "string",
"fields": [
{
"name": "string",
"displayName": "string",
"type": "string",
"required": true,
"nullable": true,
"description": "string",
"referencedEntityType": "string",
"rank": 0
}
]
}'{ "data": { "id": 0, "name": "string", "displayName": "string", "description": "string", "isCustom": true, "active": true, "fields": [ … ], "recordsUrl": "string", "schemaUrl": "string" }, "error": {}, "meta": { "success": true, "message": "string", "timestamp": "2019-08-24T14:15:22Z", "version": "string" } }
- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom/{name}
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records/custom/{name}
- Staginghttps://staging.api.aiwyn.app/api/v1/records/custom/{name}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom/{name}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "data": { "id": 0, "name": "string", "displayName": "string", "description": "string", "isCustom": true, "active": true, "fields": [ … ], "recordsUrl": "string", "schemaUrl": "string" }, "error": {}, "meta": { "success": true, "message": "string", "timestamp": "2019-08-24T14:15:22Z", "version": "string" } }
Request
Update a custom record type
Updates an existing custom record type. Only provided fields will be updated. Note: Changing fields may affect existing data.
Business Applications:
- Modify record type definitions
- Add new fields
Real Example:
curl --location 'https://{{host}}/api/v1/records/custom/{name}' \
--header 'Authorization: bearer {{token}}' \
--header 'Content-Type: application/json' \
--data '{
"displayName": "Example Name",
"description": "example value",
"fields": example value
}'- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom/{name}
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records/custom/{name}
- Staginghttps://staging.api.aiwyn.app/api/v1/records/custom/{name}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
'https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom/{name}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"displayName": "string",
"description": "string",
"fields": [
{
"name": "string",
"displayName": "string",
"type": "string",
"required": true,
"nullable": true,
"description": "string",
"referencedEntityType": "string",
"rank": 0
}
],
"active": true
}'{ "data": { "id": 0, "name": "string", "displayName": "string", "description": "string", "isCustom": true, "active": true, "fields": [ … ], "recordsUrl": "string", "schemaUrl": "string" }, "error": {}, "meta": { "success": true, "message": "string", "timestamp": "2019-08-24T14:15:22Z", "version": "string" } }
- Mock serverhttps://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom/{name}
- Sandboxhttps://demo.api.aiwyn.ai/api/v1/records/custom/{name}
- Staginghttps://staging.api.aiwyn.app/api/v1/records/custom/{name}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
'https://api.doc.aiwyn.ai/_mock/bundle/api/v1/records/custom/{name}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'🔔 Event Subscriptions
Create and manage webhook subscriptions for entity events.
The Event Subscriptions API provides:
- Webhook Management - Create, update, and deactivate webhook subscriptions
- Event Filtering - Subscribe to specific entity types and operations (CREATE, UPDATE, DELETE)
- Security - Retrieve webhook signing secrets for payload verification