Table of Contents
Authentication
All API endpoints require authentication using an API key. Include your API key in the Authorization header:Base URL
The base URL for all API endpoints is:Endpoints
→ Papers
GET /v1/papers/search
Search for papers by title.
Headers:
Authorization(required): Bearer token with your API key (format:Bearer YOUR_API_KEY)
title(required): The title of the paper to search for
200 OK: Returns an array of matching papers
abstract: Paper abstract text (string or null)authors: Comma-separated list of author names (string)doi: Digital Object Identifier (string or null)downloadable: Whether the paper PDF is downloadable (boolean)engine: Search engine used (string, optional)fieldsOfStudy: Array of field of study categories (string array)id: Unique paper identifier (string)impactFactor: Object containing citation metrics:citationCount: Total number of citations (number)influentialCitationCount: Number of influential citations (number)referenceCount: Number of references (number)
isOpenAccess: Whether the paper is open access (boolean, optional)isPrePrint: Whether the paper is a preprint (boolean, optional)journalName: Name of the journal (string or null)link: URL to the paper (string, optional)pdfLink: URL to the PDF (string, optional)publicationType: Type of publication (string or null)publishedAt: Publication date (string or null)score: Relevance score (number or null)semanticLink: Link to Semantic Scholar page (string, optional)title: Paper title (string)titleLink: Link to paper title page (string, optional)tldr: TLDR summary (string or null)v_country: Country of publication venue (string or null)v_journal_name: Journal name from venue data (string or null)v_publisher: Publisher name (string or null)v_quartile_ranking: Quartile ranking (Q1, Q2, Q3, Q4, or null)year: Publication year (number or null)
GET /v1/papers/{corpusId}
Get a paper by its corpus ID.
Headers:
Authorization(required): Bearer token with your API key (format:Bearer YOUR_API_KEY)
corpusId(required): The corpus ID of the paper
200 OK: Returns paper details
/v1/papers/search for detailed field descriptions.
Example:
→ Jobs
POST /v1/job/{jobType}
Create a new search job. Jobs are asynchronous operations that can be checked for status later.
Headers:
Authorization(required): Bearer token with your API key (format:Bearer YOUR_API_KEY)Content-Type: application/json
jobType(required): Type of job to create. Must be one of:keywordSearch: Search using phrasesquerySearch: Search using a query stringcombinedSearch: Search using both phrases and query
limit(optional): Maximum number of results. Must be100,200, or300. Default:100fieldsOfStudy(optional): Comma-separated list of fields of study. Valid values:Computer ScienceMedicineChemistryBiologyMaterials SciencePhysicsGeologyPsychologyArtHistoryGeographySociologyBusinessPolitical ScienceEconomicsPhilosophyMathematicsEngineeringEnvironmental ScienceAgricultural and Food SciencesEducationLawLinguistics
minCitationCount(optional): Minimum number of citations. Must be a positive integer.openAccessPdf(optional): Filter for open access PDFs. Must betrueorfalse.downloadable(optional): Filter for downloadable papers. Must betrueorfalse.quartileRanking(optional): Filter by quartile ranking(s). Can be a single value or comma-separated list. Valid values:Q1,Q2,Q3,Q4. Example:Q1orQ1,Q2,Q3publicationTypes(optional): Comma-separated list of publication types. Valid values:journalbook seriesconference
sort(optional): Sort order. Format:field:direction. Valid fields:scorecitationCountinfluentialCitationCountquartileRankingreferenceCountyear
year(optional): Filter by year. Format:YYYY(single year) orYYYY:YYYY(year range). Example:2020or2020:2023
keywordSearch: Requiresphrases(3-10 phrases)querySearch: Requiresquery(50-5000 characters)combinedSearch: Requires eitherphrases(3-10 phrases) ORquery(50-5000 characters), or both
-
Credits Calculation: Credits deducted =
Math.ceil(limit / 100)- Example:
limit=100→ 1 credit,limit=200→ 2 credits,limit=300→ 3 credits
- Example:
-
Credit Tier:
- If
enrich=true: Uses Pro Tier Credits (higherTierCreditsBalance) - If
enrich=false: Uses Free Tier Credits (lowerTierCreditsBalance)
- If
-
Insufficient Credits: If you don’t have enough credits, the request will fail with a
403 Forbiddenerror:Response: -
200 OK: Returns job creation response with job ID: -
403 Forbidden: Insufficient credits
→ GET /v1/job/{jobId}
Get the status of a job by its job ID.
Headers:
Authorization(required): Bearer token with your API key (format:Bearer YOUR_API_KEY)
jobId(required): The job ID returned from job creation
200 OK: Returns job status and results (if completed)
queued:
error:
success:
status: Job status. Possible values:queued: Job is queued for processingsuccess: Job completed successfullyerror: Job failed with an error
results: Array of paper results (only present whenstatusissuccess). Each result follows the same structure as described in the Response Fields section under GET/v1/papers/search.
→ User
GET /v1/user/getCredits
Get your current credit balance and plan information.
Headers:
Authorization(required): Bearer token with your API key (format:Bearer YOUR_API_KEY)
-
200 OK: Returns credit balance information:
proTierCreditsBalance: Current balance of Pro Tier credits (used whenenrich=true)proTierCreditsTotal: Total Pro Tier credits ever allocatedfreeTierCreditsBalance: Current balance of Free Tier credits (used whenenrich=false)freeTierCreditsTotal: Total Free Tier credits ever allocatedplan: Your current plan (e.g., “free”, “pro”)
Callbacks
When creating a job, you can optionally provide acallbackUrl to receive a notification when the job completes. This allows you to avoid polling the job status endpoint.
Setting Up Callbacks
To enable callbacks, include acallbackUrl field in your job creation request body:
Callback URL Requirements
- Protocol: Must be HTTPS (HTTP and localhost URLs are not allowed)
- Format: Must be a valid URL
- Example:
https://api.example.com/webhooks/veritus
Callback Payload
When a job completes successfully, a POST request will be sent to your callback URL with the following JSON payload:Callback Payload Fields
data: Array of paper results (same structure as theresultsfield in the job status response)event: Event metadata:api_version: API version used (currently “v1”)createdAt: ISO 8601 timestamp when the result was createdid: Unique result identifier
job: Job information:id: The job ID that was returned when creating the job
Callback Behavior
- When Sent: Callbacks are only sent when a job completes successfully (
status: "success") - Retries: The system automatically retries failed callback requests
- No Callback on Error: If a job fails (
status: "error"), no callback will be sent - HTTP Method: Callbacks are sent via POST request
- Content-Type: The request body is JSON with
Content-Type: application/json
Handling Callbacks
Your callback endpoint should:- Return 200 OK: Respond with a 200 status code to acknowledge receipt
- Process Quickly: Keep processing time under 10 seconds to avoid timeouts
- Handle Duplicates: Be idempotent - the same callback may be sent multiple times due to retries
- Validate Job ID: Verify the
job.idmatches a job you created - Store Results: Save the results data for later retrieval
Example Callback Handler
Here’s an example of a simple callback handler:Testing Callbacks
To test callbacks locally, you can use services like:- ngrok - Create HTTPS tunnels to localhost
- webhook.site - Temporary webhook URLs for testing
- RequestBin - HTTP request inspector
Error Handling
All endpoints return standard HTTP status codes:200 OK: Request successful400 Bad Request: Invalid request parameters or body401 Unauthorized: Missing or invalid API key404 Not Found: Resource not found500 Internal Server Error: Server error
Common Error Scenarios
-
Missing API Key:
-
Invalid Parameters:
-
Invalid Callback URL:
-
Insufficient Credits:
This error occurs when creating a job and you don’t have enough credits in the appropriate tier (Pro Tier for enriched searches, Free Tier for non-enriched searches).
Examples
Complete Workflow: Check Credits, Create Job, and Check Status
Search with Multiple Filters
Get Paper Details and Citations
Notes
- Callback URLs: Must be valid HTTPS URLs. Localhost URLs are not allowed.
- Query Length: For query and combined searches, queries must be between 50 and 5000 characters.
- Phrases: For keyword and combined searches, you must provide between 3 and 10 phrases.
- Rate Limiting: API rate limits may apply 10req/min.
- Job Processing: Jobs are processed asynchronously. Use the callback URL or poll the job status endpoint to check completion.
- Field Names: Field names in query parameters are case-sensitive. Use exact values as specified in the documentation.
- Credits System:
- Credits are deducted immediately when a job is created (before queuing)
- Credits required =
Math.ceil(limit / 100)(e.g., limit 100 = 1 credit, limit 200 = 2 credits, limit 300 = 3 credits) - Pro Tier credits are used when
enrich=true, Free Tier credits whenenrich=false - Always check your credit balance using
/v1/user/getCreditsbefore creating jobs - If job creation fails due to insufficient credits, no credits are deducted
Contact and Support
Need help or onboarding support? Email: [email protected]Website: www.veritus.ai
Offices: Tokyo & Kobe, Japan Veritus is backed by academic and government partners including JETRO, OIST Innovation Accelerator, and Lifetime Ventures Japan.