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
- OpenAPI
- Specification ↗
- Spec updated
- 2021-07-19
Make a first request
Replace the placeholders; the documentation says exactly where credentials go.
curl -X GET "https://api.probely.com/account/" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN"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);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
| Method | Path | What 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.
Similar development APIs
Compare alternatives →Cloudflare
DevelopmentManage DNS, CDN, Workers and other services; documented with an official OpenAPI 3.0 spec
Azure DevOps
DevelopmentThe Azure DevOps basic components of a REST API request/response pair
IPify
DevelopmentA simple IP Address API
App Store Connect API
DevelopmentThe data structure that represents an app store connect api resource.
StackExchange
DevelopmentQ&A forum for developers
IPinfo
DevelopmentAnother simple IP Address API
Listed from APIs.guru (CC0).