You can access search results via JSON API by adding format=json
to your query:
https://codesearch.val.run/...?q=api&page=36&format=json
For typeahead suggestions, use the /typeahead
endpoint:
https://codesearch.val.run/typeahead?q=api
Returns an array of strings in format "username" or "username/projectName"
Found 19320 results for "api"(2743ms)
87<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>TalentFlow AI</title>
88<style>
89@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@500;600&family=Inter:wght@400;500;700&display=swap');
90@keyframes spin { to { transform: rotate(360deg); } }
91@keyframes fadeIn { from{opacity:0;transform:translateY(10px)} to{opacity:1;transform:translateY(0)} }
179<script>
180(function() {
181const API_URL = '${sourceUrl}';
182const JOBS_KEY = 'talentflow_jobs_v9';
183const CANDIDATES_KEY = 'talentflow_candidates_v9';
314formData.append('jobDescription', job.descriptionText);
315316const res = await fetch(\`\${API_URL}?action=analyzeCandidate\`, { method: 'POST', body: formData });
317const data = await res.json();
318
345toggleLoading(btn, true);
346try {
347const res = await fetch(\`\${API_URL}?action=analyzeJobDescription\`, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ jobDescription: jobDesc }) });
348const data = await res.json();
349if(!res.ok) throw new Error(data.error);
378toggleLoading(btn, true);
379try {
380const res = await fetch(\`\${API_URL}?action=prioritizeCandidates\`, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ candidates: candidatesToPrioritize }) });
381const data = await res.json();
382if (!res.ok) throw new Error(data.error);
485486try {
487const res = await fetch(\`\${API_URL}?action=chat\`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ messages: conversationHistory.slice(0, -1), candidates, jobOpenings, activeJobId }) });
488const data = await res.json();
489if (!res.ok || data.error) throw new Error(data.error || 'Server error');
563case 'kit': {
564if (!job.descriptionText || !candidate.resumeText) throw new Error("Candidate resume and job description are required.");
565const res = await fetch(\`\${API_URL}?action=generateInterviewKit\`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ candidateName: candidate.name, resumeText: candidate.resumeText, jobTitle: job.title, jobDescription: job.descriptionText }) });
566const data = await res.json();
567if (!res.ok) throw new Error(data.error);
573if (!type) return;
574const notes = prompt("Any additional context/notes for the AI?");
575const res = await fetch(\`\${API_URL}?action=generateCommunication\`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ type, candidateName: candidate.name, jobTitle: job.title, notes }) });
576const data = await res.json();
577if (!res.ok) throw new Error(data.error);
13## Authentication
1415Login to your SQLite Explorer with [password authentication](https://www.val.town/v/pomdtr/password_auth) with your [Val Town API Token](https://www.val.town/settings/api) as the password.
1617## Todos / Plans