Skip to main content

Intent-Based Verification Quickstart

Get verification emails with workflow context set up in 5 minutes.

tip

This is a quickstart guide. For detailed API documentation, see Verification with Intent.

1. Create Scute App

  1. Sign up at dashboard.scute.io
  2. Create a new app
  3. Copy your App ID and API Secret

2. Get Your Credentials

# From your app dashboard → Settings → API Keys
APP_ID="your-app-id"
API_SECRET="your-api-secret"

3. Deploy Your Client

Install Scute (optional - for advanced features):

npm install @scute/nextjs-handlers

Set environment variables:

SCUTE_APP_ID=your-app-id
SCUTE_API_SECRET=your-api-secret

4. Send Intent Verification

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET // Note: X-Authorization header
},
body: JSON.stringify({
"intent_name": "Add user to Microsoft Teams",
"intent_fields": {
"Group Email": "test@chatgenie.io",
"User Name": "Ben"
},
"meta_data": {
"ticket_id": 1234,
"ticket_board_name": "Help Desk",
"ticket_board_id": 1,
"contact_id": 4567,
"contact_name": "Bruce Wayne",
"contact_email": "Brucy@wayne.net",
"company_id": "2237",
"company_name": "Wayne Enterprises",
"company_types": [
"Client"
]
}
})
});

const { verification_id } = await response.json();
console.log(`Verification created: ${verification_id}`);

5. Check Verification Status

Option A: API

const status = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/${verification_id}`, {
headers: { 'X-Authorization': API_SECRET }
});

const verification = await status.json();
console.log(`Status: ${verification.status}`); // pending, verified, failed, etc.

Option B: Dashboard

Visit: https://dashboard.scute.io/apps/${APP_ID}/verifications/${verification_id}

6. Setup Webhooks (Optional)

  1. Configure endpoint in Settings → Webhooks:

    Webhook URL: https://your-app.com/webhooks/scute
    Events: verification.email.verified
  2. Handle webhook in your app:

    // POST /webhooks/scute
    app.post('/webhooks/scute', (req, res) => {
    const { event, verification_id, user_id } = req.body;

    if (event === 'verification.email.verified') {
    console.log(`User ${user_id} verified!`);
    // Proceed with your workflow
    }

    res.status(200).send('OK');
    });

What Happens Next?

  1. Email sent → User receives verification email with your intent context
  2. User clicks → Verification completes automatically
  3. Webhook fired → Your app receives notification (if configured)
  4. Continue workflow → Proceed with the requested action

Use Cases

  • 🎫 Help desk approvals - "Approve ticket #1234"
  • 👥 Team invitations - "Add user to Engineering team"
  • 🔐 Access requests - "Grant admin access to John"
  • Workflow confirmations - "Confirm expense approval"

Real-World Examples

1. Help Desk Ticket Approval

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET
},
body: JSON.stringify({
intent_name: "Approve Support Ticket",
intent_fields: {
"Ticket ID": "#12345",
"Issue Type": "Password Reset",
"Priority": "High",
"Requested By": "john.doe@company.com"
},
meta_data: {
contact_email: "manager@company.com",
ticket_id: 12345,
ticket_board_name: "IT Support",
contact_name: "Sarah Manager",
company_name: "Acme Corp",
urgency: "high"
}
})
});

2. Team Member Addition

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET
},
body: JSON.stringify({
intent_name: "Add User to Microsoft Teams",
intent_fields: {
"Team Name": "Engineering",
"User Email": "newdev@company.com",
"Role": "Developer",
"Access Level": "Standard"
},
meta_data: {
contact_email: "hr@company.com",
employee_id: "EMP-2024-001",
department: "Engineering",
manager_name: "Tech Lead",
start_date: "2024-01-15"
}
})
});

3. Access Permission Request

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET
},
body: JSON.stringify({
intent_name: "Grant Database Access",
intent_fields: {
"Database": "production-db",
"User": "analyst@company.com",
"Permission Level": "Read-Only",
"Duration": "30 days"
},
meta_data: {
contact_email: "dba@company.com",
request_id: "REQ-2024-045",
requested_by: "Data Analyst",
business_justification: "Q1 reporting analysis",
expiry_date: "2024-02-15"
}
})
});

4. Expense Approval

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET
},
body: JSON.stringify({
intent_name: "Approve Expense Report",
intent_fields: {
"Amount": "$1,250.00",
"Category": "Travel",
"Employee": "sales@company.com",
"Date Range": "Jan 10-12, 2024"
},
meta_data: {
contact_email: "finance@company.com",
expense_id: "EXP-2024-156",
employee_name: "Sales Rep",
receipts_count: 8,
policy_compliant: true
}
})
});

5. Customer Onboarding

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET
},
body: JSON.stringify({
intent_name: "Activate Customer Account",
intent_fields: {
"Company": "New Client LLC",
"Plan": "Enterprise",
"Contract Value": "$50,000",
"Start Date": "Feb 1, 2024"
},
meta_data: {
contact_email: "sales@company.com",
customer_id: "CUST-2024-089",
account_manager: "Senior Sales Rep",
contract_signed: true,
payment_verified: true
}
})
});

6. Security Incident Response

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET
},
body: JSON.stringify({
intent_name: "Disable Compromised Account",
intent_fields: {
"User Account": "suspicious@company.com",
"Incident Type": "Brute Force Attack",
"Severity": "Critical",
"Action": "Immediate Lockout"
},
meta_data: {
contact_email: "security@company.com",
incident_id: "INC-2024-001",
detected_at: "2024-01-15T14:30:00Z",
source_ip: "192.168.1.100",
failed_attempts: 25
}
})
});

7. Vendor Payment Authorization

const response = await fetch(`https://api.scute.io/v1/verify/${APP_ID}/verifications/intent`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Authorization': API_SECRET
},
body: JSON.stringify({
intent_name: "Authorize Vendor Payment",
intent_fields: {
"Vendor": "Office Supplies Inc",
"Invoice": "INV-2024-003",
"Amount": "$3,500.00",
"Due Date": "Jan 30, 2024"
},
meta_data: {
contact_email: "accounting@company.com",
vendor_id: "VEN-001",
purchase_order: "PO-2024-012",
approved_by: "Procurement Manager",
budget_code: "OFFICE-2024"
}
})
});

Integration Patterns

1. CRM Integration

Use with Salesforce, HubSpot, or Pipedrive to verify lead qualifications, deal approvals, or contact updates.

2. ITSM Integration

Integrate with ServiceNow, Jira Service Management, or Freshservice for ticket approvals and change management.

3. HR Workflows

Connect with BambooHR, Workday, or ADP for employee onboarding, access requests, and policy confirmations.

4. Financial Systems

Link with QuickBooks, NetSuite, or SAP for expense approvals, purchase orders, and payment authorizations.

5. Project Management

Use with Asana, Monday.com, or Notion for project approvals, resource allocation, and milestone confirmations.

Next Steps