curl --request PUT \
--url https://hiresweep.com/api/openapi/applications/{id}/cover-letter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"text": "<string>"
}
'import requests
url = "https://hiresweep.com/api/openapi/applications/{id}/cover-letter"
payload = { "text": "<string>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>'})
};
fetch('https://hiresweep.com/api/openapi/applications/{id}/cover-letter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hiresweep.com/api/openapi/applications/{id}/cover-letter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hiresweep.com/api/openapi/applications/{id}/cover-letter"
payload := strings.NewReader("{\n \"text\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://hiresweep.com/api/openapi/applications/{id}/cover-letter")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hiresweep.com/api/openapi/applications/{id}/cover-letter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"clientId": "<string>",
"jobPostingId": "<string>",
"resumeId": "<string>",
"status": "saved",
"statusChangedAt": "2023-11-07T05:31:56Z",
"matchScore": 50,
"matchScorecard": {
"dimensions": [
{
"dimension": "<string>",
"score": 50,
"rationale": "<string>"
}
],
"missingKeywords": [
"<string>"
],
"strengths": [
"<string>"
],
"modelMeta": {
"provider": "<string>",
"model": "<string>"
},
"updatedAt": "2023-11-07T05:31:56Z",
"resume": {
"id": "<string>",
"name": "<string>"
}
},
"tailoredResumeId": "<string>",
"tailoring": {
"sourceResumeId": "<string>",
"changes": [
{
"kind": "headline",
"label": "<string>",
"before": "<string>",
"after": "<string>",
"reason": "<string>"
}
],
"refused": [
{
"kind": "headline",
"label": "<string>",
"reason": "<string>"
}
],
"match": {
"score": 50,
"dimensions": [
{
"dimension": "<string>",
"score": 50,
"rationale": "<string>"
}
]
},
"modelMeta": {
"provider": "<string>",
"model": "<string>"
},
"updatedAt": "2023-11-07T05:31:56Z",
"sourceScore": 50
},
"tailorError": "<string>",
"applySource": "tailored",
"notes": "<string>",
"coverLetter": "<string>",
"coverLetterTone": "neutral",
"coverLetterGeneratedAt": "2023-11-07T05:31:56Z",
"submittedVia": "manual",
"submittedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"posting": {
"id": "<string>",
"clientId": "<string>",
"source": "manual",
"externalId": "<string>",
"url": "<string>",
"title": "<string>",
"company": "<string>",
"location": "<string>",
"isRemote": true,
"employmentType": "full_time",
"salaryMin": -1,
"salaryMax": -1,
"salaryCurrency": "<string>",
"descriptionRaw": "<string>",
"descriptionParsed": {
"summary": "<string>",
"responsibilities": [
"<string>"
],
"requirements": [
"<string>"
],
"keywords": [
"<string>"
]
},
"postedAt": "2023-11-07T05:31:56Z",
"fetchedAt": "2023-11-07T05:31:56Z",
"reviewError": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"resume": {
"id": "<string>",
"name": "<string>"
}
}Save the user's edit of the application's cover letter
Replaces the application’s cover letter with the user’s own text; empty text removes it. Apply runs paste it into a form’s cover letter text field. Requires authentication.
curl --request PUT \
--url https://hiresweep.com/api/openapi/applications/{id}/cover-letter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"text": "<string>"
}
'import requests
url = "https://hiresweep.com/api/openapi/applications/{id}/cover-letter"
payload = { "text": "<string>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>'})
};
fetch('https://hiresweep.com/api/openapi/applications/{id}/cover-letter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://hiresweep.com/api/openapi/applications/{id}/cover-letter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hiresweep.com/api/openapi/applications/{id}/cover-letter"
payload := strings.NewReader("{\n \"text\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://hiresweep.com/api/openapi/applications/{id}/cover-letter")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hiresweep.com/api/openapi/applications/{id}/cover-letter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"clientId": "<string>",
"jobPostingId": "<string>",
"resumeId": "<string>",
"status": "saved",
"statusChangedAt": "2023-11-07T05:31:56Z",
"matchScore": 50,
"matchScorecard": {
"dimensions": [
{
"dimension": "<string>",
"score": 50,
"rationale": "<string>"
}
],
"missingKeywords": [
"<string>"
],
"strengths": [
"<string>"
],
"modelMeta": {
"provider": "<string>",
"model": "<string>"
},
"updatedAt": "2023-11-07T05:31:56Z",
"resume": {
"id": "<string>",
"name": "<string>"
}
},
"tailoredResumeId": "<string>",
"tailoring": {
"sourceResumeId": "<string>",
"changes": [
{
"kind": "headline",
"label": "<string>",
"before": "<string>",
"after": "<string>",
"reason": "<string>"
}
],
"refused": [
{
"kind": "headline",
"label": "<string>",
"reason": "<string>"
}
],
"match": {
"score": 50,
"dimensions": [
{
"dimension": "<string>",
"score": 50,
"rationale": "<string>"
}
]
},
"modelMeta": {
"provider": "<string>",
"model": "<string>"
},
"updatedAt": "2023-11-07T05:31:56Z",
"sourceScore": 50
},
"tailorError": "<string>",
"applySource": "tailored",
"notes": "<string>",
"coverLetter": "<string>",
"coverLetterTone": "neutral",
"coverLetterGeneratedAt": "2023-11-07T05:31:56Z",
"submittedVia": "manual",
"submittedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"posting": {
"id": "<string>",
"clientId": "<string>",
"source": "manual",
"externalId": "<string>",
"url": "<string>",
"title": "<string>",
"company": "<string>",
"location": "<string>",
"isRemote": true,
"employmentType": "full_time",
"salaryMin": -1,
"salaryMax": -1,
"salaryCurrency": "<string>",
"descriptionRaw": "<string>",
"descriptionParsed": {
"summary": "<string>",
"responsibilities": [
"<string>"
],
"requirements": [
"<string>"
],
"keywords": [
"<string>"
]
},
"postedAt": "2023-11-07T05:31:56Z",
"fetchedAt": "2023-11-07T05:31:56Z",
"reviewError": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"resume": {
"id": "<string>",
"name": "<string>"
}
}Authorizations
An API key from Settings → Developers → API keys in Hiresweep.
Path Parameters
The ID of the application.
1Body
The letter as plain text, or empty to remove it.
10000Response
The application with the saved cover letter.
The ID of the application.
The client this application is for; null for your own.
Where the application stands in the pipeline.
saved, reviewing, reviewed, tailoring, ready, applying, needs_action, submitted, screening, interview, offer, rejected, withdrawn, ghosted How well the chosen resume answers the posting.
0 <= x <= 100The per-dimension breakdown behind the score.
Show child attributes
Show child attributes
The copy of the chosen resume tailored to this posting, if any.
What tailoring changed, what it refused, and how the copy scores.
Show child attributes
Show child attributes
Why the last tailoring failed, if it did.
Whether an apply run attaches the tailored copy or the resume itself.
tailored, original The user's own notes about this application.
The application's cover letter as plain text, once there is one.
The tone the cover letter was last written in.
neutral, warm, formal, concise When the cover letter was last written by AI.
Whether the application was sent by hand or assisted.
manual, assisted Show child attributes
Show child attributes
Show child attributes
Show child attributes