Skip to content

Probely Developers API

by probely.com

Bearer tokenHTTPSDevelopment
Open documentation ↗

Overview

Probely is a Web Vulnerability Scanning suite for Agile Teams. It provides continuous scanning of your Web Applications and lets you efficiently manage the lifecycle of the vulnerabilities found, in a sleek and intuitive ~~web interface~~ API. ## Quick-Start ### Authentication To use the API, you first need to create a token (API Key). To create a token, select a target from the drop-down list, go to the "Settings" page, and click on the "Integrations" tab. Write a name for the API Key. For example, if you want to use the API Key for travis, you could name it "travis". In this example, we chose "**example.com_key**" ![Creating API key][1] [1]: assets/qs/create_api_key_1.png The API key was created successfully: ![API key created][2] [2]: assets/qs/create_api_key_2.png On every request, you need to pass this token in the authorization header, like this: ```yaml Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJBRlNJQlp 3elFsMDEiLCJ1c2VybmFtZSI6IkNIZ2tkSUROdzV0NSJ9.90UwiPGS2hlvgOLktFU0LfKuatNKm mEP79u17VnqT9M ``` **WARNING: Treat this token as a password. With this token, you have the power to fully manage the target.** In the following examples, the token will be named as *PROBELY_AUTH_TOKEN*. ### Scan target First let's view our target list: ```bash curl https://api.probely.com/targets/ \ -X GET \ -H "Content-Type: application/json" \ -H "Authorization: JWT PROBELY_AUTH_TOKEN" ``` From the results, we need the **target id**: ```json { "count":1, "page_total":1, "page":1, "length":10, "results":[ { "id":"AxtkqTE0v3E-", "name":"test-site", "desc":"", "url":"https://test-site.example.com", "settings": "(...)" , "stack": "(...)" , "verified":true, "(...)": "(...)" } ] } ``` Now we can send a request to start a scan on target id **AxtkqTE0v3E-** ```bash curl https://api.probely.com/targets/AxtkqTE0v3E-/scan_now/ \ -X POST \ -H "Content-Type: application/json" \ -H "Authorization: JWT PROBELY_AUTH_TOKEN" ``` And we get a response saying that the scan is scheduled: the status is **queued**, and we've got a **scan id**: ```json { "changed":"2017-08-01T13:37:00.843339Z", "started":null, "completed":null, "mediums":0, "changed_by": "(...)" , "highs":0, "status":"queued", "id":"S6dOMPn0SnoH", "created_by": "(...)" , "target": "(...)" , "created":"2017-08-01T13:37:00.843339Z", "lows":0 } ``` Using the scan id **S6dOMPn0SnoH**, we can pool the scan status: ```bash curl https://api.probely.com/targets/AxtkqTE0v3E-/scans/S6dOMPn0SnoH/ \ -X GET \ -H "Content-Type: application/json" \ -H "Authorization: JWT PROBELY_AUTH_TOKEN" ``` And we get a response saying that the scan status is now **started**: ```json { "id":"S6dOMPn0SnoH", "changed":"2017-08-01T13:38:12.623650Z", "started":null, "completed":null, "mediums":0, "changed_by": "(...)" , "highs":0, "status":"started", "created_by": "(...)" , "target": "(...)" , "created":"2017-08-01T13:37:00.843339Z", "lows":0 } ``` The possible statuses are: | Status | Name | Description | | ------ | ---- | ----------- | | queued | Queued | The scan is queued to start | | started | Started | The scan is currently running | | under_review | Under Review | The scan is complete but has some findings under review | | completed | Completed | The scan is complete | | completed_with_errors | Completed with errors | The scan is complete even after getting some error(s) | | failed | Failed | The scan failed | | canceled | Canceled | The scan was canceled | | canceling | Canceling | The scan is being canceled | During the scan, the keys "lows", "mediums", and "highs" will be updated with the findings, as they are being found. After we get either the status **completed** or **completed_with_errors**, we can view the findings. ### Get vulnerabilities Using the previous scan id **S6dOMPn0SnoH**, we can get the scan results: ```bash curl https://api.probely.com/targets/AxtkqTE0v3E-/scans/S6dOMPn0SnoH/ \ -X GET \ -H "Content-Type: application/json" \ -H "Authorization: JWT PROBELY_AUTH_TOKEN" ``` We get a

Probely Developers is a development API from probely.com. Requests are authenticated with a bearer token. It is served over HTTPS. Its OpenAPI description documents 147 endpoints.

At a glance

Authentication
Bearer token
HTTPS
Yes
CORS
Unknown
Category
Development
Base URL
https://api.probely.com
Version
1.2.0
Endpoints
147
Spec updated
2021-07-19

Make a first request

Replace the placeholders; the documentation says exactly where credentials go.

cURL
curl -X GET "https://api.probely.com/account/" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN"
JavaScript
const response = await fetch("https://api.probely.com/account/", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
  },
});
const data = await response.json();
console.log(data);
Python
import requests

response = requests.request(
    "GET",
    "https://api.probely.com/account/",
    headers={
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
    },
    timeout=30,
)
print(response.json())

Endpoints

MethodPathWhat it does
GET/account/Retrieve account information
POST/auth/obtain/Authenticate user
POST/auth/refresh/Replace token with a new one
POST/auth/revoke/Revoke a token
POST/auth/verify/Verify a token
GET/billing/Retrieve billing information
PUT/billing/Update billing information
PATCH/billing/Partial update billing information
POST/billing/actions/Action that should be taken to enable the selected targets
POST/billing/estimate/Estimate costs of updating a subscription
POST/billing/subscribe/Update a subscription
POST/check/Check validity of password reset token
POST/enterprise/auth/obtain/Enterprise user authentication
POST/enterprise/auth/refresh/Enterprise token refresh
POST/enterprise/auth/revoke/Enterprise token revokation
POST/enterprise/auth/verify/Enterprise token verification
GET/events/List account events
GET/events/{id}/Retrieve account event
GET/frameworks/List frameworks
GET/frameworks/{id}/Retrieve framework
GET/integrations/Integrations available and installed in the account
GET/integrations/jira-cloud/projects/List Jira Projects
GET/integrations/jira-cloud/projects/{project_id}/issue_types/Retrieve project issue types
GET/integrations/jira-cloud/projects/{project_id}/issue_types/{issue_type_id}/priorities/Retrieve issue priorities
GET/integrations/jira-cloud/projects/{project_id}/issue_types/{issue_type_id}/status/Retrieve issue statuses
GET/integrations/jira-server/projects/List Jira Projects
GET/integrations/jira-server/projects/{project_id}/issue_types/Retrieve project issue types
GET/integrations/jira-server/projects/{project_id}/issue_types/{issue_type_id}/priorities/Retrieve issue priorities
GET/integrations/jira-server/projects/{project_id}/issue_types/{issue_type_id}/status/Retrieve issue statuses
GET/keys/List API keys allowed to operate on account
POST/keys/Create account API key
GET/keys/{id}/Retrieve account API key
DELETE/keys/{id}/Delete account API key
GET/labels/List labels
POST/labels/Create label
GET/labels/{id}/Retrieve framework
PUT/labels/{id}/Update label
PATCH/labels/{id}/Partial update
DELETE/labels/{id}/Delete label
GET/plans/Subscription plans
GET/profile/User data
POST/profile/change_password/Change user password
POST/reset/Send reset password email
POST/setpassword/Reset password after asking for a reset (with the token sent by email).
POST/target-actions/Available actions for the selected targets
GET/targets/List targets
POST/targets/Create target
POST/targets/activate/Activate targets
GET/targets/all/average_fix_time/Average fix time graph data (all targets)
GET/targets/all/needs_attention_pie/Targets with open vulnerabilities pie chart data
GET/targets/all/needs_attention_top/Targets with open vulnerabilities
GET/targets/all/risk_trend/Risk trend graph data (all targets)
GET/targets/all/scans/List scans for all targets
GET/targets/all/scheduledscans/expanded/List scheduled scans for all targets expanding recurrence
GET/targets/all/severity_trend/Severity trend graph data (all targets)
GET/targets/all/top_vulns/Top 5 vulnerabilities (all targets).
POST/targets/archive/Archive targets
POST/targets/archived/List archived targets
GET/targets/{id}/Retrieve target
PUT/targets/{id}/Update target
PATCH/targets/{id}/Partial update target
DELETE/targets/{id}/Delete target
GET/targets/{target_id}/assets/List target's assets
POST/targets/{target_id}/assets/Create new asset
GET/targets/{target_id}/assets/{id}/Retrieve asset
PUT/targets/{target_id}/assets/{id}/Update asset
PATCH/targets/{target_id}/assets/{id}/Partial update assets
DELETE/targets/{target_id}/assets/{id}/Delete asset
POST/targets/{target_id}/assets/{id}/verify/Verify asset ownership
GET/targets/{target_id}/average_fix_time/Average vulnerability trend graph data
GET/targets/{target_id}/events/List target events
GET/targets/{target_id}/events/{id}/Retrieve target event
GET/targets/{target_id}/findings/List target findings
POST/targets/{target_id}/findings/bulk/report/Finding report
POST/targets/{target_id}/findings/bulk/retest/Bulk retest findings
PATCH/targets/{target_id}/findings/bulk/update/Bulk update findings
GET/targets/{target_id}/findings/report/Retrieve finding report PDF format
GET/targets/{target_id}/findings/{id}/Retrieve finding
PUT/targets/{target_id}/findings/{id}/Update finding
PATCH/targets/{target_id}/findings/{id}/Partial update finding
GET/targets/{target_id}/findings/{id}/integrations/jira-cloud/Retrieve Jira Cloud finding configuration
PUT/targets/{target_id}/findings/{id}/integrations/jira-cloud/Update Jira Cloud finding configuration
PATCH/targets/{target_id}/findings/{id}/integrations/jira-cloud/Update Jira Cloud finding configuration
GET/targets/{target_id}/findings/{id}/integrations/jira-server/Retrieve Jira Server finding configuration
PUT/targets/{target_id}/findings/{id}/integrations/jira-server/Update Jira Server finding configuration
PATCH/targets/{target_id}/findings/{id}/integrations/jira-server/Update Jira Server finding configuration
GET/targets/{target_id}/findings/{id}/log/Finding activity log.
POST/targets/{target_id}/findings/{id}/retest/Retest finding
GET/targets/{target_id}/integrations/Integrations available and installed for the target
GET/targets/{target_id}/integrations/jira-cloud/Retrieve Jira Cloud Target configuration
PUT/targets/{target_id}/integrations/jira-cloud/Update Jira Cloud target configuration
PATCH/targets/{target_id}/integrations/jira-cloud/Update Jira Cloud target configuration
GET/targets/{target_id}/integrations/jira-server/Retrieve Jira Server Target configuration
PUT/targets/{target_id}/integrations/jira-server/Update Jira Server target configuration
PATCH/targets/{target_id}/integrations/jira-server/Update Jira Server target configuration
GET/targets/{target_id}/integrations/slack/Retrieve slack integration data
PUT/targets/{target_id}/integrations/slack/Update slack integration data
PATCH/targets/{target_id}/integrations/slack/Update slack integration data
GET/targets/{target_id}/keys/List target specific API keys
POST/targets/{target_id}/keys/Create target API key

Showing the first 100 of 147 endpoints; the full list is in the documentation.

Questions

Does the Probely Developers API need an API key?

Yes. The Probely Developers API uses Bearer token authentication; the documentation explains how to get credentials.

Does the Probely Developers API support HTTPS?

Yes, the Probely Developers API is served over HTTPS.

How many endpoints does the Probely Developers API have?

Its OpenAPI description lists 147 endpoints in version 1.2.0. The first 100 are shown on this page.

What are alternatives to the Probely Developers API?

Other Development APIs include Cloudflare, Azure DevOps, IPify, App Store Connect API, StackExchange.

Compare alternatives →

Listed from APIs.guru (CC0).