POST /api/sicop/tenders
Price: 20 credits
One Costa Rican public procurement procedure from SICOP by id: state, institution, budget, procedure type, every deadline, guarantees, contract terms, the general, specific and administrative conditions as text, the requested lines with classification codes, quantities and unit prices, the attached documents and the objections and appeals filed against the procedure.
`status` is the SICOP state in Spanish and `stage` maps it to tender, award or contract. The award resolution is referenced by `award_doc_no`; winning suppliers and awarded amounts are not part of this record. `value` is the budget in CRC and is empty when the procedure does not publish one; `value_usd` is the USD budget when the procedure states it.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)id string required — SICOP procedure id (examples: "20260902492-00", "20260902492"; minLength: 11)@type string (default: "SicopTender")id string requiredcartel_no string requiredcartel_seq string requiredprocedure_number string nullablestatus string nullablestage string nullablebuyer object nullable@type string (default: "SicopBuyerRef")id string nullablename string nullablevalue object nullable@type string (default: "SicopValue")amount number nullablecurrency string nullablevalue_usd object nullable@type string (default: "SicopValue")amount number nullablecurrency string nullablecategory string nullableprocedure_type string nullableprocedure_type_name string nullableprocedure_type_detail string nullablebid_document_type string nullablepublished_at integer nullablebid_start_at integer nullabledeadline_at integer nullableopening_at integer nullableclarification_deadline_at integer nullableopinion_deadline_at integer nullableappeal_deadline_at integer nullableversion string nullablepublished_versions array (default: [])is_secret boolean nullablesecret_reason string nullableis_online boolean nullablehas_electronic_guarantees boolean nullableis_closed boolean nullableis_modified boolean nullableis_auction boolean nullableis_joint_bid_allowed boolean nullableis_clarification_allowed boolean nullableis_appeal_allowed boolean nullableis_gazette_required boolean nullablegazette_number string nullablegazette_date string nullablegazette_link_url string nullablehas_price_readjustment boolean nullableprice_readjustment_terms string nullablehas_advance_payment boolean nullableadvance_payment_amount number nullableadvance_payment_terms string nullablehas_contract_request boolean nullablesupplier_invitation string nullableprequalification_type string nullableprequalification_method string nullableevaluation_mode string nullablemax_bids_per_supplier integer nullablemax_alternative_bids integer nullablebid_validity_duration string nullablebid_validity_unit string nullableaward_term_duration integer nullableaward_term_unit string nullablecontract_duration integer nullablecontract_duration_unit string nullablecontract_extension_duration integer nullablecontract_extension_unit string nullableguarantees array (default: [])@type string (default: "SicopGuarantee")kind string requiredis_required boolean nullableduration string nullableamount number nullableamount_type string nullabledelivery_method string nullabledelivery_terms string nullablebid_area string nullableexemption_reason string nullableexception_code string nullabledirect_contracting_grounds_code string nullabledirect_contracting_grounds string nullablestamp_tax_terms string nullablestamp_tax_buyer_share integer nullablestamp_tax_supplier_share integer nullablepenalty_terms string nullablepenalty_article string nullablegeneral_conditions string nullablespecific_conditions string nullableadmin_conditions string nullableclarification_terms string nullableevaluation_doc_no string nullablerecommendation_doc_no string nullableaward_doc_no string nullableevaluation_doc_no_phase2 string nullablerecommendation_doc_no_phase2 string nullableaward_doc_no_phase2 string nullableawardee_history_count integer nullableclarification_count integer nullableclarification_answered_count integer nullableclarification_unanswered_count integer nullablecategory_count integer nullableline_count integer nullableexecutor_id string nullableexecutor_name string nullableopening_officer_name string nullableopening_examiner_name string nullableevaluation_officer_name string nullableclarification_officer_name string nullablewriter_name string nullableinstitution_staff array (default: [])crc_account string nullableusd_account string nullableappeals array (default: [])@type string (default: "SicopAppeal")number string nullablesequence string nullabletype_code string nullablecategory_code string nullablerequest_status_code string nullablerequest_status string nullableprogress_status_code string nullableprogress_status string nullablecountry string (default: "CR")lines array (default: [])@type string (default: "SicopLine")category string nullableline_number integer nullableproduct_code string nullablename string nullablequantity number nullableunit string nullableunit_price number nullablecurrency string nullablebudget_amount number nullableis_sample_required boolean nullabledocuments array (default: [])@type string (default: "SicopDocument")sequence string nullablename string nullablefile_name string nullablestored_file_name string nullablestorage_path string nullablekind string nullablesize_mb number nullableis_supplier_visible boolean nullableis_released boolean 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 published procedure with that id 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.