Skip to main content
API v1.0  ·  2026

Developer Documentation

Integrate with the Lorikeet Security PTaaS platform. Pull your pentest findings, configure real-time webhook alerts, and connect your security workflow to the tools your team already uses.

Early access: Integration capabilities are available to all active PTaaS and ASM subscribers. Reach out to support@lorikeetsecurity.com if you need a dedicated API key or custom integration support.

Base URL

All API endpoints are served over HTTPS. There is no versioning prefix the path prefix identifies the service.

https://lorikeetsecurity.com/ptaas/api/

All URLs are extensionless. Do not include .php in API calls. For example:

POST  https://lorikeetsecurity.com/ptaas/api/login
POST  https://lorikeetsecurity.com/ptaas/api/createproject
GET   https://lorikeetsecurity.com/ptaas/api/findinginfo?finding_id=42

Authentication

Lorikeet Security uses passwordless, magic-link authentication there are no passwords stored anywhere on the platform. Sign-in is a two-step flow:

  1. Request a magic link POST your email to /ptaas/api/login. A one-time login link is emailed to you.
  2. Validate the link opening the emailed link hits /ptaas/api/validate, which establishes a session cookie in your browser.

For programmatic / scripted access, contact support@lorikeetsecurity.com to provision a long-lived API token tied to your account. The interactive endpoints below assume you already hold a valid session cookie obtained through the browser flow.

Auto-provisioning: If your email address has no account yet, the login endpoint will create one automatically (corporate domains are joined to or create a new organization; free email providers receive their own isolated personal workspace). Banned and disposable email domains are silently rejected.

Step 1: Request a Magic Link

POST /ptaas/api/login public

Sends a one-time login link to the supplied email address.

ParameterTypeRequiredDescription
emailstringrequiredYour email address
Example curl
curl -X POST https://lorikeetsecurity.com/ptaas/api/login \
  -d "[email protected]"

The response always indicates success regardless of whether the account exists (to prevent account enumeration). If the email is valid, a login link arrives within seconds.

Step 2: Validate the Magic Link

The emailed link points at /ptaas/api/validate?token=<token>. Opening it in a browser sets a PHPSESSID cookie scoped to .lorikeetsecurity.com. All authenticated endpoints below accept that cookie.

curl -b cookies.txt https://lorikeetsecurity.com/ptaas/api/getUserInfo
Sessions expire after 1 hour of inactivity. On 401 Unauthorized request a new magic link and re-validate.

Session Data Available After Validation

{
  "loggedin":      true,
  "email":         "[email protected]",
  "id":            "<user uuid>",
  "company_id":    47,
  "company_name":  "Acme Corp",
  "fullname":      "Jane Smith",
  "role":          "admin",
  "account_admin": true,
  "partner_id":    0,
  "session_id":    "<php session id>"
}

Rate Limiting

Rate limits are enforced per IP address. Exceeding a limit returns HTTP 429 Too Many Requests.

EndpointLimitWindow
Magic-link request (/login)5 attempts15 minutes
Signup3 attempts15 minutes
Magic-link validation10 attempts15 minutes
Create project5 requests5 minutes
Create asset10 requests60 seconds

Error Handling

All API responses are JSON. Errors return a success: false or status: "error" field alongside a human-readable message.

// Standard error format
{
  "success": false,
  "message": "Unauthorized"
}

// Public endpoint format
{
  "status":  "error",
  "message": "Email is required"
}
HTTP StatusMeaning
200Success
400Bad request missing or invalid parameters
401Unauthenticated session missing or expired
403Forbidden insufficient permissions
405Method not allowed
429Rate limit exceeded
500Internal server error

Contact Form API

POST /ptaas/api/contact public

Submit a contact/sales inquiry. Requires a corporate email address free provider domains (Gmail, Yahoo, etc.) are rejected.

ParameterTypeRequiredDescription
emailstringrequiredCorporate email address
fullnamestringrequiredFull name
jobtitlestringoptionalJob title
companystringrequiredCompany name
industrystringoptionalIndustry vertical
countrystringoptionalCountry
how_heardstringoptionalHow did you hear about us
services_intereststringoptionalService of interest
messagestringrequiredMessage body (English only)

On success the sales team is notified in Microsoft Teams and the submitter receives a confirmation email.

Newsletter Subscribe API

POST /api/newsletter-subscribe public

Subscribe an email to the Lorikeet Security newsletter. Sends a welcome email immediately on success.

ParameterTypeRequiredDescription
emailstringrequiredEmail address to subscribe
first_namestringoptionalSubscriber first name (derived from email prefix if omitted)
// Success
{ "status": "success", "message": "You're subscribed! Check your inbox for a welcome email." }

// Already subscribed
{ "status": "error", "message": "This email is already subscribed." }

Request a Quote

POST /ptaas/api/get-quote public

Submit a scoped engagement request. The team responds with pricing within 24 hours.

For programmatic quote generation and custom project scoping, contact sales@lorikeetsecurity.com.

Projects API

All project operations are scoped to your company_id from the active session.

POST /ptaas/api/createproject auth required
ParameterTypeRequiredDescription
project_namestringrequiredUnique project name within your account
project_typestringrequiredSee project types: webapp, api, mobile, cloud, thickclient, iot, hardware, physical, pcidss, iso, atm, kiosk, redteam, soc2, activedirectory
start_datedateoptionalEngagement start date YYYY-MM-DD
end_datedateoptionalEngagement end date YYYY-MM-DD
csrf_tokenstringrequiredCSRF token from session
POST /ptaas/api/deleteproject auth required
ParameterTypeRequiredDescription
project_idintegerrequiredID of the project to delete

Assets API

Assets define the targets in scope for a pentest engagement.

POST /ptaas/api/creatasset auth required
ParameterTypeRequiredDescription
asset_namestringrequiredAsset identifier (URL, IP, hostname)
asset_typestringrequiredweb, api, mobile, network, cloud
testing_typestringoptionalblack-box, grey-box, white-box
asset_storagestringoptionalcloud, on-prem, hybrid
additional_informationstringoptionalExtra context for the pentest team
POST /ptaas/api/assetupdate auth required

Update an existing asset's metadata.

POST /ptaas/api/assetdelete auth required
ParameterTypeRequiredDescription
asset_idintegerrequiredID of the asset to delete

Findings API

Query vulnerability findings from your pentest engagements. Sorted by severity (Critical → Info) by default.

GET /ptaas/api/findinginfo?finding_id=<ID> auth required

Retrieve a single finding by ID with full detail including remediation, evidence, and CVSS score.

POST /ptaas/api/markreadyforretesting auth required

Mark a finding as remediated and ready for retest verification.

ParameterTypeRequiredDescription
finding_idintegerrequiredID of the finding to mark

Finding Schema

{
  "id":           42,
  "title":        "SQL Injection in /api/search",
  "severity":     "Critical",
  "status":       "Open",
  "category":     "Injection",
  "cwe_id":       "CWE-89",
  "cvss_score":   9.8,
  "description":  "The search parameter is vulnerable to blind SQL injection...",
  "remediation":  "Use parameterized queries or prepared statements...",
  "evidence":     "[request/response proof]",
  "project_id":   7,
  "project_name": "Q1 2026 Web App Assessment",
  "company_id":   47,
  "created_at":   "2026-01-15 14:23:00"
}

ASM Scan API

The Attack Surface Management module continuously monitors your external-facing assets.

POST /ptaas/dashboard/asm/ajax/process-scan-job auth required
ParameterTypeRequiredDescription
targetstringrequiredDomain to scan (e.g. example.com)
scan_typestringoptionalfull or quick (default: full)
GET /ptaas/dashboard/asm/ajax/get-findings auth required

Retrieve all ASM findings for your account, ordered by severity.

Scans run in three phases: subdomain enumeration, security checks, then AI-enriched finding generation. Full scans typically complete in 3–10 minutes.

Webhooks

Receive real-time HTTP POST notifications when events occur in your account. Custom webhooks are available on the Professional plan and above.

Configuring a Webhook

Webhooks are configured from the portal at Settings → Integrations → Custom Webhook, or programmatically through the integration controller:

POST /ptaas/api/integrations/IntegrationController?action=save auth required
ParameterTypeRequiredDescription
typestringrequiredwebhook
endpoint_urlstringrequiredYour receiving URL (HTTPS strongly recommended)
secret_keystringoptionalShared secret used to sign every payload with HMAC-SHA256
auth_headerstringoptionalValue sent in the Authorization header (e.g. Bearer token123). Only applied to generic endpoints not chat-platform webhooks.
events[]arrayoptionalEvents to subscribe to (see below). Defaults to finding.created and scan.completed if omitted.
Smart platform detection: If your endpoint_url points at Discord (discord.com/api/webhooks/...), Slack (hooks.slack.com/...), or Microsoft Teams (*.webhook.office.com, *.logic.azure.com), Lorikeet Security automatically reformats the payload as a Discord embed, Slack block, or Teams Adaptive Card respectively. All other URLs receive the generic JSON payload shown below.

Webhook Events

finding.created finding.updated finding.resolved scan.started scan.completed asset.discovered ticket.created ticket.updated test.connection

test.connection is fired when you click Test on a webhook in the portal it is not a subscribable event.

Generic Payload Format

{
  "event":     "finding.created",
  "timestamp": "2026-05-30T09:00:00+00:00",
  "source":    "lorikeet-asm",
  "data": {
    "finding": {
      "id":             42,
      "title":          "SQL Injection in /api/search",
      "severity":       "Critical",
      "category":       "Injection",
      "status":         "Open",
      "description":    "The search parameter is vulnerable to blind SQLi...",
      "affected_asset": "api.example.com/search",
      "created_at":     "2026-05-30 09:00:00",
      "updated_at":     "2026-05-30 09:00:00"
    }
  }
}

For finding.updated and ticket.updated events, the payload also includes a changes object describing which fields changed. scan.completed includes aggregate counts (subdomains_found, ips_found, technologies_found, findings_count).

Verifying Signatures

If you configure a secret_key, every payload includes an X-Webhook-Signature header containing sha256=<hmac-hex> computed over the raw request body.

# Python
import hmac, hashlib
def verify(secret, body, header_sig):
    expected = 'sha256=' + hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, header_sig)
// Node.js
const crypto = require('crypto');
function verify(secret, body, headerSig) {
  const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(body).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(headerSig));
}

Delivery Guarantees

Webhooks are delivered at-most-once with a 15-second request timeout and up to 3 redirect follows. Failures (non-2xx responses, connection errors, timeouts) are logged to the integration activity feed in your portal but are not automatically retried subscribe to a queueing system on your end if you need durability guarantees. Use the Test button in the portal to verify endpoint reachability before going live.

Slack Integration

Post security alerts to your Slack workspace when findings are discovered or scan jobs complete.

Setup

  1. In Slack: Apps → Incoming Webhooks → Add to Slack. Choose a channel and copy the webhook URL.
  2. In your portal: Settings → Integrations → Slack paste the URL.
FieldRequiredDescription
webhook_urlrequiredSlack Incoming Webhook URL
channeloptionalOverride the default channel (e.g. #security-alerts)
usernameoptionalBot display name (default: Lorikeet Security)

Jira Integration

Auto-create Jira issues when Critical and High findings are reported.

Setup

  1. Generate a Jira API token at id.atlassian.com → Security → API tokens.
  2. In your portal: Settings → Integrations → Jira.
FieldRequiredDescription
base_urlrequiredYour Jira base URL (e.g. https://yourorg.atlassian.net)
emailrequiredJira account email
api_tokenrequiredJira API token
project_keyrequiredJira project key (e.g. SEC)
issue_typeoptionalIssue type (default: Bug)

Microsoft Teams Integration

Send alerts to a Teams channel via an Incoming Webhook connector.

Setup

  1. In Teams: channel settings → Integrations → Incoming Webhook → Configure. Copy the URL.
  2. In your portal: Settings → Integrations → Microsoft Teams.

Discord Integration

Receive security alerts in a Discord channel.

Setup

  1. In Discord: channel settings → Integrations → Create Webhook. Copy the URL.
  2. In your portal: Settings → Integrations → Discord.

GitHub Integration

Link repositories to findings. Findings can be auto-converted to GitHub security advisories or issues.

Setup

  1. Generate a GitHub PAT with repo and security_events scopes.
  2. In your portal: Settings → Integrations → GitHub. Enter your username, PAT, and repo name.

GitLab Integration

Push pentest findings into GitLab as issues, linked to a specific project. Mirrors the GitHub integration's behavior for self-hosted and SaaS GitLab.

Setup

  1. In GitLab: User Settings → Access Tokens create a personal access token with the api scope.
  2. In your portal: Settings → Integrations → GitLab. Enter your GitLab instance URL (defaults to https://gitlab.com), the project ID, and the access token.

Azure DevOps Integration

Sync findings into Azure DevOps Boards as work items, with severity mapped to area paths and priority levels.

Setup

  1. In Azure DevOps: User Settings → Personal Access Tokens → New Token. Grant Work Items (Read & Write) scope.
  2. In your portal: Settings → Integrations → Azure DevOps. Enter your organization, project, and PAT. Optionally specify a default work item type (defaults to Bug).

Enterprise & Compliance Integrations

Available on the Company plan tier. These connectors stream findings into security operations platforms, cloud-native security tooling, and compliance frameworks.

SIEM & Logging

  • Splunk HEC ingestion of findings, scan completions, and audit events
  • Microsoft Sentinel custom log table ingestion via Data Collection Rules
  • Elastic Security bulk indexing into a configured datastream

Cloud Security

  • AWS Security Hub findings written in ASFF format
  • Microsoft Defender for Cloud recommendations attached to subscription resources
  • Google Cloud Security Command Center finding ingestion into your org's source

Compliance & GRC

  • Drata evidence pushed against pentest controls
  • Vanta automated test results synced into your trust report
  • Anchorpoint partner integration for compliance program management

Paging & Notification

  • PagerDuty Critical and High findings routed to your on-call schedule
  • SMS direct text notifications via the integration controller
Contact sales@lorikeetsecurity.com to enable enterprise connectors on your account.

Severity Levels

SeverityCVSS RangeDescription
Critical9.0–10.0Immediate exploitation risk; full system compromise likely
High7.0–8.9Significant impact; realistic exploitation path
Medium4.0–6.9Exploitable with prerequisites; material security risk
Low0.1–3.9Minimal direct impact; defense-in-depth value
Info0.0Informational; no direct exploitability

Need help? Email support@lorikeetsecurity.com or open a ticket from your portal dashboard.

Also see: Product Knowledge Base for portal guides and FAQs.

Last updated: May 2026  ·  Lorikeet Security

Lory waving

Hi, I'm Lory! Need help finding the right service? Click to chat!