Create a search, poll for the result, or set a webhook and get a POST when it finishes.
curl -X POST https://api.sourcely.net/search \
-H "Authorization: Bearer $SOURCELY_API_KEY" \
-H 'Content-Type: application/json' \
--data '{"text":"How do urban green spaces affect mental health?","mode":"quick","citation_formats":["apa7"]}'
# 202 Accepted: { "job_id": "src_example", "status": "queued" }
curl https://api.sourcely.net/search/src_example \
-H "Authorization: Bearer $SOURCELY_API_KEY"import os, time, httpx
headers = {"Authorization": f"Bearer {os.environ['SOURCELY_API_KEY']}"}
body = {
"text": "How do urban green spaces affect mental health?",
"mode": "quick",
"citation_formats": ["apa7"],
}
with httpx.Client(base_url="https://api.sourcely.net", headers=headers, timeout=180) as client:
job_id = client.post("/search", json=body).raise_for_status().json()["job_id"]
while (result := client.get(f"/search/{job_id}").json())["status"] not in ("completed", "failed"):
time.sleep(2)
for source_id in (result.get("document") or {}).get("source_ids", []):
print(result["sources"][source_id]["title"])const headers = {
Authorization: `Bearer ${process.env.SOURCELY_API_KEY}`,
"Content-Type": "application/json",
};
const api = "https://api.sourcely.net";
const { job_id } = await (await fetch(`${api}/search`, {
method: "POST",
headers,
body: JSON.stringify({
text: "How do urban green spaces affect mental health?",
mode: "quick",
citation_formats: ["apa7"],
}),
})).json();
let result;
do {
await new Promise((resolve) => setTimeout(resolve, 2000));
result = await (await fetch(`${api}/search/${job_id}`, { headers })).json();
} while (!["completed", "failed"].includes(result.status));
for (const id of result.document?.source_ids ?? []) {
console.log(result.sources[id].title);
}{
"job_id": "src_example",
"status": "completed",
"document": {
"source_ids": ["src_paper_example"],
"page": 1,
"has_more": false,
"status": "done"
},
"sources": {
"src_paper_example": {
"title": "Example study of urban green space and mental health",
"authors": ["A. Example", "B. Sample"],
"year": 2024,
"venue": "Example Research Journal",
"url": "https://example.org/papers/urban-green-space",
"score": 1
}
},
"usage": { "currency": "USD", "actual_cost": 0.005 }
}One API for finding sources, checking references and writing citations.
/searchCreate a search from a question, claim or draft, with filters, citation formats and an optional webhook.
/search/{job_id}Read the status and results: ranked sources, citations and analysis.
/search/{job_id}/next-pageAdd the next page of document sources.
/search/{job_id}/claims/{claim_id}Search one claim, get more sources for it, or search again with feedback.
/search/{job_id}Delete a search and its stored text and results.
/verifyCheck that a reference or DOI names a real paper and that its details match the record.
/papers/{doi}Get a paper's registry record and formatted citations by DOI.
/citations/formatFormat a citation from a DOI or from your own metadata.
/citations/stylesFind the id of any of the 750+ citation styles.
Choose how deep to go, what to analyze and which sources count.
It takes a text and returns ranked academic sources as JSON, with optional claim-level suggestions, relevance analysis and formatted citations. It also checks references, looks up papers by DOI and formats citations in 750+ styles.
You pay per request from prepaid credits, with no subscription required. A quick retrieval costs $0.005 per track, and analysis costs up to $0.035 per returned source. Citation formats are free, and a failed search costs nothing. Subscribers get 15% to 50% off.
Sign in to Sourcely, open the API and MCP page, add credits (the minimum top-up is $20) and create a key. Use it from your application's server as a Bearer token.
POST /search returns a job_id. Poll GET /search/{job_id} until the status is completed or failed, or set webhook_url to get a POST when the search finishes.
Creating searches is limited to 10 per minute and 100 per hour per key, and reading or deleting them to 120 per minute and 4,000 per hour. Over the limit, the API returns 429 with a Retry-After header.
APA 7, MLA 9, IEEE, Harvard and BibTeX by name, plus 750+ CSL styles such as Chicago, Vancouver, Nature and journal house styles. GET /citations/styles finds a style's id.
Results are kept for one hour by default. You can delete a search sooner with DELETE /search/{job_id}.
Don't stress about deadlines. Write better with Yomu and simplify your academic life.
Keep your writing voice while AI improves clarity & grammar
Welcome to Sourcely! Our AI-powered source finding tool is built by students for students, allowing us to truly understand the needs of the academic community. This student perspective keeps us up-to-date with the latest research and trends, while our collaborative approach ensures that Sourcely is continually improving and evolving.