POST /api/osf/preprints
Price: 5 credits
Get one OSF preprint by its GUID. Returns the title, abstract, the preprint DOI and any publisher DOI, the preprint server it was posted to, the version and whether it is the latest, the moderation state and the dates it moved through it, the licence, the subject taxonomy and tags, the open-data and preregistration declarations, and every named author with ORCID and affiliation history.
Both a bare GUID and the versioned `guid_vN` form resolve; the bare form gives the version OSF considers current, so read `version` and `is_latest_version` rather than assuming. `doi` is the journal's DOI once the preprint is published somewhere and is usually null before that; it is never the OSF-minted DOI, which `preprint_doi_url` carries instead. `provider_id` names the preprint server (osf, psyarxiv, socarxiv and so on) and decides which moderation vocabulary `reviews_state` uses. `has_data_links` and `has_prereg_links` are three-valued words such as `available` or `not_applicable`, not booleans. A project GUID answers 412 here — use /osf/nodes for it.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)preprint string required — OSF preprint GUID, with or without a version suffix, or the address of its OSF page (examples: "7vzg9", "7vzg9_v2", "https://osf.io/preprints/psyarxiv/vuax2_v2/"; minLength: 1)@type string (default: "OsfPreprint")id string requiredurl string requireddescription string nullabledoi string nullablepreprint_doi_url string nullableprovider_id string nullableversion string nullablecreated_at string nullablemodified_at string nullablepublished_at string nullablewithdrawn_at string nullablelast_transitioned_at string nullableoriginal_publication_date string nullablepreprint_doi_created_at string nullablereviews_state string nullabletags array (default: [])subjects array (default: [])@type string (default: "OsfSubject")id string requiredtext string requiredpath array (default: [])license_record object nullable@type string (default: "OsfLicenseRecord")year string nullablecopyright_holders array (default: [])license object nullable@type string (default: "OsfLicense")id string nullablename string nullableurl string nullablerequired_fields array (default: [])contributors array (default: [])@type string (default: "OsfContributor")id string nullablefull_name string requiredgiven_name string nullablefamily_name string nullablemiddle_names string nullablesuffix string nullableorcid string nullableprofile_url string nullableimage string nullablepermission string nullableindex integer nullableis_bibliographic boolean nullableis_registered boolean nullableis_active boolean nullableis_curator boolean nullablelocale string nullabletimezone string nullableregistered_at string nullableemployment array (default: [])@type string (default: "OsfPosition")institution string requireddepartment string nullabledegree string nullablestart_year integer nullablestart_month integer nullableend_year integer nullableend_month integer nullableis_ongoing boolean nullableeducation array (default: [])@type string (default: "OsfPosition")institution string requireddepartment string nullabledegree string nullablestart_year integer nullablestart_month integer nullableend_year integer nullableend_month integer nullableis_ongoing boolean nullablesocial object nullable@type string (default: "OsfSocialProfiles")github string nullablelinkedin string nullabletwitter string nullablegoogle_scholar string nullableresearch_gate string nullableresearcher_id string nullableimpact_story string nullableacademia_profile_id string nullableacademia_institution string nullablebaidu_scholar string nullablessrn string nullablewebsites array (default: [])affiliated_institutions array (default: [])@type string (default: "OsfInstitution")id string requiredname string nullableurl string nullableror_url string nullablenode_id string nullableprimary_file_id string nullablecustom_publication_citation string nullableconflict_of_interest_statement string nullablewithdrawal_justification string nullabledata_links array (default: [])prereg_links array (default: [])prereg_link_info string nullablewhy_no_data string nullablewhy_no_prereg string nullablehas_coi boolean nullablehas_data_links string nullablehas_prereg_links string nullableis_latest_version boolean nullableis_published boolean nullableis_public boolean nullableis_orphan boolean nullabledefault_license_id string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — No public OSF preprint carries this GUID Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.