curl --request GET \
--url https://prod-api.civicmarketplace.com/v1/solicitations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://prod-api.civicmarketplace.com/v1/solicitations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://prod-api.civicmarketplace.com/v1/solicitations/{id}', 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://prod-api.civicmarketplace.com/v1/solicitations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prod-api.civicmarketplace.com/v1/solicitations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://prod-api.civicmarketplace.com/v1/solicitations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod-api.civicmarketplace.com/v1/solicitations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "sol_16",
"ref": 123,
"reference_number": "RFP-2026-014",
"title": "<string>",
"status": "open",
"issuing_organization": "<string>",
"lead_entity": {
"id": "<string>",
"name": "<string>"
},
"is_open": true,
"open_at": "2023-11-07T05:31:56Z",
"close_at": "2023-11-07T05:31:56Z",
"questions_due_at": "2023-11-07T05:31:56Z",
"intent_to_bid_due_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"require_intent_registration": true,
"created_at": "2023-11-07T05:31:56Z",
"nigp_codes": [
{
"code": "01015",
"description": "<string>"
}
],
"documents": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"file_type": "<string>",
"file_size": 123
}
],
"requested_items": [
{
"id": 123,
"name": "<string>",
"required": true,
"file_type": "<string>",
"allows_multiple": true,
"instructions": "<string>",
"template_document_id": 123
}
],
"notices": [
{
"id": 123,
"title": "<string>",
"body": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}
],
"questions": [
{
"id": 123,
"title": "<string>",
"body": "<string>",
"answer": "<string>",
"answered_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
]
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"request_id": "<string>"
}
}Get Solicitation
curl --request GET \
--url https://prod-api.civicmarketplace.com/v1/solicitations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://prod-api.civicmarketplace.com/v1/solicitations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://prod-api.civicmarketplace.com/v1/solicitations/{id}', 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://prod-api.civicmarketplace.com/v1/solicitations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prod-api.civicmarketplace.com/v1/solicitations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://prod-api.civicmarketplace.com/v1/solicitations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod-api.civicmarketplace.com/v1/solicitations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "sol_16",
"ref": 123,
"reference_number": "RFP-2026-014",
"title": "<string>",
"status": "open",
"issuing_organization": "<string>",
"lead_entity": {
"id": "<string>",
"name": "<string>"
},
"is_open": true,
"open_at": "2023-11-07T05:31:56Z",
"close_at": "2023-11-07T05:31:56Z",
"questions_due_at": "2023-11-07T05:31:56Z",
"intent_to_bid_due_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"require_intent_registration": true,
"created_at": "2023-11-07T05:31:56Z",
"nigp_codes": [
{
"code": "01015",
"description": "<string>"
}
],
"documents": [
{
"id": 123,
"name": "<string>",
"description": "<string>",
"file_type": "<string>",
"file_size": 123
}
],
"requested_items": [
{
"id": 123,
"name": "<string>",
"required": true,
"file_type": "<string>",
"allows_multiple": true,
"instructions": "<string>",
"template_document_id": 123
}
],
"notices": [
{
"id": 123,
"title": "<string>",
"body": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}
],
"questions": [
{
"id": 123,
"title": "<string>",
"body": "<string>",
"answer": "<string>",
"answered_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z"
}
]
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"request_id": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Solicitation
"sol_16"
Numeric public id — the same number the CivicMarketplace deep-link uses. Accepted in place of id on this endpoint.
"RFP-2026-014"
open, closed, awarded, cancelled Show child attributes
Show child attributes
Whether a supplier can still bid: the stored status is open and close_at is absent or in the future. Nothing closes a solicitation on a schedule, so status alone stays open after the deadline; this is the derived answer.
Whether bidders must register intent before submitting.
Raw tagged codes. The web page collapses these to parent categories for display, so the badges shown there are a subset.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes

