Docs / Quotes Data API / Endpoints / Retrieve a quotation
Retrieve a quotation
Returns one quotation by id.
Parameters
| Parameter | Type | Description |
|---|---|---|
id required |
string | The quotation id from a list response. |
Request
curl https://api.softon.dev/v1/quotes/birjob:1766 \
-H "Authorization: Bearer $SOFTON_KEY"
req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.softon.dev/v1/quotes/birjob:1766", nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("SOFTON_KEY")) res, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer res.Body.Close() var page struct { Data Quote `json:"data"` Meta struct{ Next *string `json:"next"` } `json:"meta"` } if err := json.NewDecoder(res.Body).Decode(&page); err != nil { log.Fatal(err) }
import json, os, urllib.parse, urllib.request url = "https://api.softon.dev/v1/quotes/birjob:1766" req = urllib.request.Request(url, headers={ "Authorization": "Bearer " + os.environ["SOFTON_KEY"], }) page = json.load(urllib.request.urlopen(req)) # page["data"] is the object; page["error"] is None on success
const url = new URL("https://api.softon.dev/v1/quotes/birjob:1766"); const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.SOFTON_KEY}` }, }); if (!res.ok) throw new Error(`${res.status} ${await res.text()}`); const { data, meta } = await res.json();
Response
The envelope is identical on every softon.dev API: data, meta, error. Only the shape inside data changes per dataset — see the response envelope.
{
"data": {
"id": "birjob:1663",
"source": "birjob",
"text": "Let us see what love can do.",
"author": null,
"category": "Love",
"origin": "passiton",
"ingested_at": "2026-08-06T07:29:46.646799Z"
},
"meta": { "request_id": "req_9Fv3" },
"error": null
}
Fields of data
| Field | Type | Description |
|---|---|---|
id |
string | Stable identifier, "<source>:<source id>". |
source |
string | Which scraper delivered this quotation. |
text |
string | The quotation. |
author |
string · nullable | Attributed author. null where the collection does not name one. |
category |
string · nullable | The upstream's own label. A folksonomy, not an enum -- tens of thousands of distinct values -- so treat it as a tag rather than a fixed set. |
origin |
string · nullable | Where the quotation was collected from, e.g. "passiton". Distinct from source, which is the scraper that delivered it. |
ingested_at |
timestamp | When this version was stored. |
Try it
Send the request to see a response.