ArtyChat Developers

External API documentation

Connect your ArtyChat business to external apps with scoped API keys. Read business data, manage records, access AI instructions, and control channel-level auto-replies.

REST / JSON / API v1

Quick start

  1. Go to Settings โ†’ API Management.
  2. Create a named key and grant only the permissions your app needs.
  3. Copy and securely save the secret. It is shown only once.
  4. Send it as a Bearer token with every API request.
Base URL
https://artychat.com/api/v1
OpenAPI 3.1 specification
Download Postman collection Import the file, then set apiKey and the example ID variables.

Authentication

Send the API key in the Authorization header. Requests and responses use JSON.

curl https://artychat.com/api/v1/business \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Each endpoint returns JSON following its resource-specific response format. A key is limited to its selected permissions and the business account that created it.

Endpoints and permissions

Paths are relative to /api/v1. Give a key the listed scope to call each endpoint.

MethodsPathsPermissionWhat it does
GET/business, /locationsbusiness:readBusiness and locations
GET/teamteam:readTeam and roles
GET/conversations, /conversations/{id}chats:readConversations and messages
PATCH, POST/conversations/{id}; /conversations/{id}/messageschats:writeUpdate conversation state/assignment; send messages
GET/bookings, /bookings/{id}, /booking-services, /bookings/available-slotsbookings:readBookings, services, availability
POST, PUT, PATCH/bookings; /bookings/{id}; /bookings/{id}/statusbookings:writeCreate/update bookings and status
GET/orders, /orders/{id}orders:readStore orders
PATCH/orders/{id}orders:writeUpdate orders
GET/customers, /customers/{id}customers:readCustomers
POST, PUT/customers; /customers/{id}customers:writeCreate/update customers
GET/pos/catalog, /pos/products, /pos/products/{id}pos:readPOS catalog and products
POST/pos/salespos:writeCreate POS sales
GET, PUT/ai/instructionsai:instructions:read / ai:instructions:writeRead/replace AI instructions
GET, PATCH/ai/auto-repliesauto_replies:read / auto_replies:writeRead/update channel auto-replies
GET, POST, PATCH, DELETE/webhooks...webhooks:read / webhooks:writeManage signed outbound webhooks and delivery history
GET/expensesexpenses:readList expenses with filtered totals. Filters: from, to, search, category_id, page, per_page.
GET/expenses/export/{format}expenses:readExport filtered expenses as PDF or CSV.
POST/expenses/analyzeexpenses:writeAnalyze a receipt without creating an expense. Accepts a file upload.
GET/expenses/categoriesexpenses:readList expense categories.
POST/expenses/categoriesexpenses:writecreate expense category.
POST/expenses/categories/{category}expenses:writeupdate expense category.
DELETE/expenses/categories/{category}expenses:writedelete expense category.
GET/expenses/providersexpenses:readlist expense providers.
POST/expenses/providersexpenses:writecreate expense provider.
POST/expenses/providers/{provider}expenses:writeupdate expense provider.
DELETE/expenses/providers/{provider}expenses:writedelete expense provider.
GET/expenses/settingsexpenses:readRead receipt auto-detection settings.
PUT/expenses/settingsexpenses:writeUpdate receipt auto-detection settings.
POST/expensesexpenses:writeCreate an expense. Fields: title, vendor, expense_date, amount, tax_amount, currency, payment_method, expense_category_id, category_name, notes.
GET/expenses/{expense}expenses:readRead an expense and its category.
POST/expenses/{expense}expenses:writeUpdate expense fields or its receipt.
DELETE/expenses/{expense}expenses:writeDelete an expense and its receipt.
GET/deliveriesdeliveries:readList active deliveries with their POS orders.
GET/deliveries/ready-ordersdeliveries:readList ready POS orders without a delivery.
GET/deliveries/historydeliveries:readList up to 100 finished deliveries.
GET/deliveries/live-trackingdeliveries:readRead live delivery and driver coordinates.
GET/deliveries/{id}/tracking-linkdeliveries:readGet a signed customer tracking URL valid for 48 hours.
GET/deliveries/{id}/proof/{kind}deliveries:readRead private signature or photo proof.
GET/deliveries/{id}deliveries:readRead one delivery and its events.
POST/deliveries/configure/{orderId}deliveries:writeConfigure delivery coordinates before the POS order is ready.
POST/deliveries/from-ready/{orderId}deliveries:writeCreate delivery from a ready POS order. Optional fleet_id, driver_id, postal_code.
POST/deliveries/{id}/assigndeliveries:writeAssign a pending delivery to a business driver.
POST/deliveries/{id}/acceptdeliveries:writeAccept a pending delivery that has an assigned driver.
POST/deliveries/{id}/pickupdeliveries:writeMark an accepted delivery as picked up.
POST/deliveries/{id}/completedeliveries:writeComplete a picked-up delivery. Requires actual completion coordinates and a PNG signature data URI; optional JPEG proof_photo and cash_received covering cash_due.
GET/deliveries/fleetsdeliveries:readList business fleets.
POST/deliveries/fleetsdeliveries:writeCreate a business delivery fleet.
GET/deliveries/vehiclesdeliveries:readList business vehicles.
POST/deliveries/vehiclesdeliveries:writeCreate a business delivery vehicle.
GET/deliveries/driversdeliveries:readList business drivers.
POST/deliveries/driversdeliveries:writeCreate a business delivery driver.
GET/deliveries/zonesdeliveries:readList business zones.
POST/deliveries/zonesdeliveries:writeCreate a business delivery zone.
GET/dispatch/ordersdeliveries:readlist dispatch orders.
GET/dispatch/historydeliveries:readlist dispatch history.
GET/dispatch/orders/{orderId}deliveries:readget dispatch order.
POST/dispatch/orders/{orderId}/acceptdeliveries:writeaccept dispatch order.
POST/dispatch/orders/{orderId}/readydeliveries:writemark dispatch order ready.
GET/dispatch/settingsdeliveries:readget dispatch settings.
PUT/dispatch/settingsdeliveries:writeupdate dispatch settings.

Read and write scopes are separate. API keys can have up to 64 scopes and expire within 365 days.

AI instructions and channel auto-replies

Read or replace AI instructions

Use GET /ai/instructions with ai:instructions:read. Replace the saved instructions with PUT; include an instructions string in the JSON body (empty string clears it).

curl -X PUT https://artychat.com/api/v1/ai/instructions \
  -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
  -d '{"instructions":"Answer customers in a warm, concise tone."}'

Enable or disable channel auto-replies

Use GET /ai/auto-replies to read settings and PATCH to change one or more boolean fields:

  • whatsapp controls users.auto_reply.
  • instagram controls users.auto_reply_ig.
  • facebook controls users.auto_reply_fb.
curl -X PATCH https://artychat.com/api/v1/ai/auto-replies \
  -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" \
  -d '{"whatsapp":false,"instagram":true}'

These are account-level channel switches. They do not change per-conversation auto-reply overrides.

Complete platform surface

External API v1 now exposes the main ArtyChat operating modules with separate least-privilege scopes.

Analytics
dashboard:read โ€” dashboard and operational summaries.
Services
services:read/write โ€” service definitions and availability configuration.
Invoices & Quotes
invoices:read/write โ€” documents, delivery, statuses and quote conversion.
Payments
payments:read/write โ€” payment records and booking/order/invoice payment links.
Leads
leads:read/write โ€” CRM pipeline, comments, conversion and tags.
Forms
forms:read/write โ€” forms, schemas and submissions.
Tasks & Workspace
tasks:read/write, workspace:read/write.
Marketing
marketing:read/write โ€” WhatsApp templates and campaigns.
Team & Locations
team:write, business:write.
Integrations
integrations:read โ€” connection status without exposing credentials.

Expenses use from/to date filters, search, category_id, page, and per_page (max 100). Totals include tax. Upload receipts with multipart/form-data file (JPG/PNG/WEBP/PDF, max 10 MB); provider logos use logo (image, max 2 MB). Use POST updates for uploads. Delivery creation uses a ready POS order ID, pickup/dropoff addresses and coordinates; optional fleet_id, driver_id and postal_code. Completion requires latitude, longitude, a PNG signature data URI, and cash_received when cash is due; proof_photo is an optional JPEG data URI. PDF/CSV exports and delivery proofs return binary files. Driver GPS/availability writes remain in the authenticated driver app.

The deployment migration grants expenses:read/write and deliveries:read/write to existing integration API keys without changing credentials or expiration. New keys use their selected permissions. MCP connections using older refresh-token grants must reauthorize; refreshing a token cannot add scopes.

Reliability headers

Write requests may include Idempotency-Key. Reusing the same key with the same request returns the stored response; using it with a different payload returns 409. Every v1 response returns X-Request-Id and ArtyChat-API-Version.

Limits and security

Requests are limited to 60 per minute per account; responses include rate-limit headers.

401 Missing, invalid, expired, or revoked key.

403 Required permission is not granted.

422 Request validation failed.

429 Rate limit reached.

  • Store keys in a secret manager or server environment variable. Never expose keys in browser code or public repositories.
  • Create a separate key for each app and grant only necessary permissions. Revoke unused keys in Settings โ†’ API Management.
  • API activity is audited. Integration keys cannot manage other keys or use ArtyChat's existing mobile API.
  • Refunds, chat search/mark-read endpoints, and a uniform pagination/filter contract are not available in this initial version.