{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Aiwyn Product API Documentation"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"aiwyn-product-api-documentation","__idx":0},"children":["Aiwyn Product API Documentation"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"hero-banner"},"children":[{"$$mdtype":"Tag","name":"h2","attributes":{"className":"hero-title"},"children":["Build financial automations, fast"]},{"$$mdtype":"Tag","name":"p","attributes":{"className":"hero-description"},"children":["A modern, secure API for invoices, payments, clients, projects, and more."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"hero-cta-container"},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api/bundle/section/welcome-to-aiwyn-api","className":"hero-cta-button"},"children":["Get started →"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-you-can-build","__idx":1},"children":["What you can build"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"feature-grid"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"feature-card dashboard"},"children":[{"$$mdtype":"Tag","name":"h3","attributes":{"className":"feature-card-title"},"children":["📊 Financial Dashboards"]},{"$$mdtype":"Tag","name":"p","attributes":{"className":"feature-card-description"},"children":["Aggregate client financials, track expenses, and monitor project profitability in real time."]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"feature-card automation"},"children":[{"$$mdtype":"Tag","name":"h3","attributes":{"className":"feature-card-title"},"children":["🤖 Automation Workflows"]},{"$$mdtype":"Tag","name":"p","attributes":{"className":"feature-card-description"},"children":["Automate categorization, invoice generation, and milestone-based billing."]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"feature-card integration"},"children":[{"$$mdtype":"Tag","name":"h3","attributes":{"className":"feature-card-title"},"children":["🔗 System Integrations"]},{"$$mdtype":"Tag","name":"p","attributes":{"className":"feature-card-description"},"children":["Connect Aiwyn with CRM, ERP, project management, and accounting systems."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"key-capabilities","__idx":2},"children":["Key capabilities"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-grid"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-card"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-icon"},"children":["🔒"]},{"$$mdtype":"Tag","name":"div","attributes":{},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-title"},"children":["Enterprise-grade security"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-description"},"children":["JWT API keys, short-lived bearer JWTs, audit trails, and robust access controls."]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-card"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-icon"},"children":["⚡"]},{"$$mdtype":"Tag","name":"div","attributes":{},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-title"},"children":["Fast & reliable"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-description"},"children":["Low-latency APIs with 99.9% uptime targets."]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-card"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-icon"},"children":["📈"]},{"$$mdtype":"Tag","name":"div","attributes":{},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-title"},"children":["Designed for scale"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-description"},"children":["Efficient pagination, filtering, and search to handle large datasets."]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-card"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-icon"},"children":["🧩"]},{"$$mdtype":"Tag","name":"div","attributes":{},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-title"},"children":["Composable"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"capability-description"},"children":["Consistent resource models for clients, invoices, payments, and projects."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"support","__idx":3},"children":["Support"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We're here to help you succeed:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Email"]},": ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:api-support@aiwyn.ai"},"children":["api-support@aiwyn.ai"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"whats-new","__idx":4},"children":["What's new"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/contacts/upsert"]}]}," — Upsert up to 100 contacts in one call, each linked to existing clients by external reference (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pmsRef"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientRef"]},") instead of Aiwyn ids; contacts are processed independently, so the response returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["succeeded"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}," lists keyed by request index. Omit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pmsRef"]}," to create a new contact, omit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clients"]}," to update the contact only, or send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active: false"]}," to unlink a client."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/event-subscriptions"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PATCH /api/v1/event-subscriptions/{id}"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/event-subscriptions/{id}/reactivate"]}]}," — Payment subscriptions must set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["filterExpression"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ownPaymentLinksOnly"]}," (payments through links the subscribing API user minted), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentLinkOnly"]}," (any quick payment link) or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["allPayments"]}," (every payment); the last two need the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PYMT_EVNT_ALL"]}," role. Other values are rejected; other entity types and existing rows are unchanged."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /api/v1/invoices/unpaid"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /api/v1/clients/v1/link/payment"]}]}," — List a client's unpaid invoices by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientRef"]}," and create a single-use quick payment link for that client, locked to chosen invoices, an amount and a note (at least one argument is required); the new ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INVC_R"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAYLNK_C"]}," roles grant these two endpoints on their own, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["API_ADMIN"]}," keeps granting them as before."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/changelog"},"children":["Full changelog →"]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"cta-section"},"children":[{"$$mdtype":"Tag","name":"h3","attributes":{"className":"cta-title"},"children":["Ready to build?"]},{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api/bundle/section/welcome-to-aiwyn-api","className":"cta-button"},"children":["Start building →"]}]}]},"headings":[{"value":"Aiwyn Product API Documentation","id":"aiwyn-product-api-documentation","depth":1},{"value":"What you can build","id":"what-you-can-build","depth":2},{"value":"Key capabilities","id":"key-capabilities","depth":2},{"value":"Support","id":"support","depth":2},{"value":"What's new","id":"whats-new","depth":2}],"frontmatter":{"seo":{"title":"Aiwyn Product API Documentation"}},"lastModified":"2026-09-16T15:42:14.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}