Api Documentation
Use this reference to integrate with the Dashword API. All endpoints return JSON. Requests must be authenticated with a Bearer API key over HTTPS.
Base URL
https://app.dashword.com/api/v1
Authentication
The Dashword API uses API keys to authenticate requests.
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
Authenticated request:
curl https://app.dashword.com/api/v1/reports \
-H 'Authorization: Bearer YOUR_API_KEY'
Notes:
- Send
Authorization: Bearer YOUR_API_KEY
with every request. - For
POST
/PUT
endpoints, sendContent-Type: application/json
and a JSON body. - Unauthorized requests return
401
with a JSON error, for example:
{ "message": "Unauthenticated." }
Available countries
- au (Australia)
- ca (Canada)
- gb (United Kingdom)
- ir (Ireland)
- nz (New Zealand)
- sg (Singapore)
- us (United States)
Reports
Reports provide the competitive landscape for a given keyphrase and country, including competing URLs, keyword suggestions, and questions.
Create a report
Endpoint:
POST /reports
Parameters:
keyphrase
required - The keyword phrasecountry
required - Two-letter code from the available countriescallback_url
optional - A valid URL where we'll send a webhook once the report is completed
Example request:
curl -X POST https://app.dashword.com/api/v1/reports \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"keyphrase": "keto diet",
"country": "us",
"callback_url": "https://www.example.com/callback"
}'
Response example:
{
"id": "DVGR4qZKyva",
"keyphrase": "keto diet",
"status": "created",
"country": "us",
"callback_url": "https://www.example.com",
"created_at": "2022-02-23T22:17:16.373260Z",
"updated_at": "2022-02-23T22:19:46.171160Z"
}
Retrieve a report
Endpoint:
GET /reports/:id
Response example:
{
"id": "DVGR4qZKyva",
"keyphrase": "keto diet",
"status": "completed",
"country": "us",
"urls": [
{
"position": 1,
"url": "https://www.example.com/1",
"title": "Example 1",
"word_count": 558,
"grade": "B+",
"readability": "10th to 12th grade"
},
{
"position": 2,
"url": "https://www.example.com/2",
"title": "Example 2",
"word_count": 983,
"grade": "B",
"readability": "8th & 9th grade"
},
{
"position": 3,
"url": "https://www.example.com/3",
"title": "Example 3",
"word_count": 329,
"grade": "D-",
"readability": "7th grade"
}
],
"keywords": [
{
"keyword": "weight loss",
"importance": 100,
"min_occurrences": 2,
"max_occurrences": 4
},
{
"keyword": "keto",
"importance": 86,
"min_occurrences": 5,
"max_occurrences": 11
},
{
"keyword": "low carb diet",
"importance": 84,
"min_occurrences": 2,
"max_occurrences": 4
}
],
"questions": [
{
"question": "What can you eat on the keto diet?",
"search_volume": 1000
},
{
"question": "Why keto diet is bad?",
"search_volume": 800
},
{
"question": "What are the main rules of Keto?",
"search_volume": null
}
],
"callback_url": "https://www.example.com",
"created_at": "2022-01-03T23:52:06.000000Z",
"updated_at": "2022-01-03T23:59:05.000000Z"
}
List all reports
Endpoint:
GET /reports
Use the page
query parameter to paginate through results (default page size shown in the response meta
). For example: GET /reports?page=2
.
Response example:
{
"data": [
{
"id": "ry241xxP3ox",
"keyphrase": "keto diet",
"status": "completed",
"country": "us",
"callback_url": null,
"created_at": "2022-02-04T03:47:58.000000Z",
"updated_at": "2022-02-04T03:47:58.000000Z"
},
{
"id": "OLwQYBpPzEA",
"keyphrase": "best credit card",
"status": "completed",
"country": "us",
"callback_url": null,
"created_at": "2022-01-03T23:52:06.000000Z",
"updated_at": "2022-01-03T23:59:05.000000Z"
}
],
"links": {
"first": "https://app.dashword.com/api/v1/reports?page=1",
"last": "https://app.dashword.com/api/v1/reports?page=1",
"prev": null,
"next": "https://app.dashword.com/api/v1/reports?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://app.dashword.com/api/v1/reports",
"per_page": 15,
"to": 15,
"total": 10
}
}
Callback URL
When generating a report, you have the option to provide a callback_url
. This URL will be used to send a HTTP POST request once the report has been fully generated. The POST request is made to notify your application about the completion of the report generation process.
Setting Up the Callback URL
To set up the callback URL, include it as a parameter while creating a report using the POST /reports endpoint. The parameter is optional. If it's provided, it should be a full, valid URL, including the scheme (HTTP or HTTPS).
POST /reports
{
"keyphrase": "keto diet",
"country": "us",
"callback_url": "https://www.example.com/callback"
}
The provided callback_url
will be stored with the report and used to send a POST request once the report generation has completed.
POST Request Format
Once the report is ready, Dashword will send a HTTP POST request to the callback_url
. The body of the POST request will contain a JSON payload with information about the completed report:
{
"id": "DVGR4qZKyva",
"keyphrase": "keto diet",
"status": "completed",
"country": "us",
"callback_url": "https://www.example.com",
"created_at": "2022-01-03T23:52:06.000000Z",
"updated_at": "2022-01-03T23:59:05.000000Z"
}
Please note that the callback_url
should be set up to accept POST requests and correctly handle the incoming JSON payload.
Handling Callback Requests
Your application should respond to the POST request with a 200 OK status code to acknowledge receipt of the callback. If Dashword does not receive a 200 OK response, the callback request may be retried.
Content Scoring
Score content
Score content (markdown or plain text) against an existing report to see overall grade, readability, and keyword usage coverage.
Endpoint:
POST /score
Parameters:
report_id
required - The report ID returned by the Reports APImarkdown
optional - Markdown content to score. Required iftext
is not providedtext
optional - Plain text content to score. Required ifmarkdown
is not provided
At least one of markdown
or text
must be provided.
Example request:
curl -X POST https://app.dashword.com/api/v1/score \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"report_id": "DVGR4qZKyva",
"markdown": "# Keto Diet\nKeto is a low carb diet that..."
}'
Response example:
{
"report_id": "DVGR4qZKyva",
"grade": "B+",
"word_count": 245,
"readability": "8th & 9th grade",
"keywords": [
{
"keyword": "keto diet",
"importance": 100,
"occurrences": 6,
"min_occurrences": 2,
"max_occurrences": 4,
"has_enough_usage": true
},
{
"keyword": "low carb diet",
"importance": 84,
"occurrences": 1,
"min_occurrences": 2,
"max_occurrences": 4,
"has_enough_usage": false
}
]
}
Error responses:
- 422 (validation)
{ "message": "Either markdown or text is required." }
- 404 (report not found or not accessible)
{ "message": "Report not found." }