SimilarityCheck · API

Similarity and AI detection reports, by API Reportes de similitud y detección de IA, por API

You send a document, we analyse it and hand back the PDF report with its percentage. One call to upload, one to check. Nothing else to learn. Envías un documento, nosotros lo analizamos y te devolvemos el informe en PDF con su porcentaje. Una llamada para subir, otra para consultar. Nada más que aprender.

REST · JSON api.similaritycheck.app v1

01How it worksCómo funciona

Three steps, always the same. Analysis is not instant: you upload, you wait, you collect. Tres pasos, siempre los mismos. El análisis no es instantáneo: subes, esperas y recoges.

STEP 1PASO 1

You upload the documentSubes el documento

A POST with the file. We answer instantly with an orderId. Un POST con el archivo. Te respondemos al instante con un orderId.

STEP 2PASO 2

You check the statusConsultas el estado

Ask about that orderId every 30 seconds. It is usually ready in a few minutes. Preguntas por ese orderId cada 30 segundos. Suele estar listo en unos minutos.

STEP 3PASO 3

You download the reportDescargas el informe

Once the status is completed, you get the percentages and the PDF links. Cuando el estado es completed, recibes los porcentajes y los enlaces al PDF.

Every route hangs off https://api.similaritycheck.app/api/v1 and answers JSON. Accepted formats are .docx, .doc, .pdf and .txt, up to 50 MB. Todas las rutas cuelgan de https://api.similaritycheck.app/api/v1 y responden JSON. Los formatos admitidos son .docx, .doc, .pdf y .txt, hasta 50 MB.

02Your tokenTu token

We hand you a permanent token when your account is created. It goes in the Authorization header of every call and it does not expire: if you ever need to invalidate it, we issue a new one and the old one stops working immediately. Te entregamos un token permanente al darte de alta. Va en la cabecera Authorization de cada llamada y no caduca: si necesitas invalidarlo, te generamos otro y el anterior deja de servir en el acto.

Authorization: Bearer YOUR_TOKEN

Keep it on your server. Anyone holding your token can spend your credits, so never embed it in a mobile app or in code that reaches your users' browsers. Guárdalo en el servidor. Cualquiera con tu token puede gastar tus créditos, así que no lo incrustes en una app móvil ni en código que llegue al navegador de tus usuarios.

03SandboxProbador

Paste your token and send a real document from here. This is the same API you will use in production, so it spends one credit for every document accepted. Pega tu token y envía un documento de verdad desde aquí. Es la misma API que usarás en producción, así que consume un crédito por cada documento que se acepte.

Test consoleConsola de pruebas

If your plan only includes one report type, asking for the other returns an error and costs no credit: you are only charged once the document enters analysis. Si tu plan solo incluye un tipo de reporte, pedir el otro devuelve un error y no gasta crédito: solo se cobra cuando el documento entra a analizarse.

04Endpoints

Five routes. The first two already give you a complete integration. Cinco rutas. Con las dos primeras ya tienes una integración completa.

POST/api/v1/documents Upload a documentSubir un documento

multipart/form-data request. The only required field is file. Envío multipart/form-data. El único campo obligatorio es file.

FieldCampo ValueValor What forPara qué
filefilearchivo The document. Required.El documento. Obligatorio.
reportsboth · similarity · ai Which analysis you want. Defaults to whatever your plan includes.Qué análisis quieres. Por defecto, lo que incluya tu plan.
excludeQuotestrue / false Leave quoted text out.Dejar fuera el texto entrecomillado.
excludeBibliographytrue / false Leave the bibliography out.Dejar fuera la bibliografía.
titletexttexto Title shown on the report.Título que aparecerá en el informe.
authorFirst · authorLasttexttexto Author name on the report.Nombre del autor en el informe.

Answers 202 with the orderId and your remaining balance. Responde 202 con el orderId y tu saldo restante.

curl -X POST https://api.similaritycheck.app/api/v1/documents \
  -H "Authorization: Bearer $TOKEN" \
  -H "Idempotency-Key: order-4471" \
  -F "file=@thesis.docx" \
  -F "reports=both"

The Idempotency-Key header is optional but recommended: if your connection drops and you retry with the same key, we return the order that already exists instead of charging you twice for the same file. La cabecera Idempotency-Key es opcional pero recomendable: si se te corta la conexión y reintentas con la misma clave, te devolvemos el pedido que ya existía en vez de cobrarte dos veces por el mismo archivo.

GET/api/v1/documents/{orderId} Check one documentConsultar un documento

Poll every 30 seconds until the status is completed or failed. PDF links expire, so download them or ask for them again when you need them. Consulta cada 30 segundos hasta que el estado sea completed o failed. Los enlaces a los PDF caducan, así que descárgalos o vuelve a pedirlos cuando los necesites.

{
  "success": true,
  "orderId": "a7f3c9d1",
  "status": "completed",
  "requested": "both",
  "result":  { "similarity": 18.4, "aiDetection": 7.2 },
  "reports": {
    "similarity":  "https://...",
    "aiDetection": "https://...",
    "expiresAt": "2026-09-07T18:30:00.000Z"
  }
}
GET/api/v1/documents List your documentsListar tus documentos

Paged by date, newest first. Accepts limit (max 200), status and cursor to request the next page. Paginado por fecha, del más reciente al más antiguo. Admite limit (máximo 200), status y cursor para pedir la página siguiente.

GET/api/v1/capacity How many you can send nowCuántos puedes mandar ahora

Returns acceptingNow: how many documents we will take from you right now, with your balance, your daily limit and current load already accounted for. Check it before a large batch. Devuelve acceptingNow: el número de documentos que aceptamos de ti en este momento, ya descontados tu saldo, tu límite diario y la carga del servicio. Consúltalo antes de una carga grande.

GET/api/v1/account Your accountTu cuenta

Balance, expiry date, daily limit and how many documents you have in flight right now. Saldo, fecha de vencimiento, límite diario y cuántos documentos tienes procesándose ahora mismo.

05Similarity, AI or bothSimilitud, IA o ambos

There are two levels and they are worth keeping apart. Your plan sets which reports you have contracted. Each document can ask for less than that with the reports field, and it comes back sooner. Hay dos niveles y conviene no confundirlos. Tu plan define qué reportes tienes contratados. Cada documento puede pedir menos que eso con el campo reports, y así el informe sale antes.

Your plan includesTu plan incluye You ask forPides What you getQué recibes
BothAmbos anythinglo que sea ✓ Exactly thatExactamente eso
Similarity onlySolo similitudsimilarity ✓ Your similarity reportTu informe de similitud
Similarity onlySolo similitudai 403 error telling you what your plan does include. No credit spent. Error 403 indicándote qué sí incluye tu plan. No gasta crédito.
Similarity onlySolo similitud both or nothingo nada ✓ Your similarity report, no errorTu informe de similitud, sin error

The response only carries the fields of the report you asked for. If you asked for similarity alone, you will not see aiDetection set to null: it simply is not there, so you never mistake it for a failed analysis. La respuesta solo trae los campos del reporte que pediste. Si pediste únicamente similitud, no verás aiDetection en null: sencillamente no aparece, para que no lo confundas con un análisis fallido.

06States and reasonsEstados y motivos

A document goes through four states and only four. Code against these names: they will not change. Un documento pasa por cuatro estados y solo cuatro. Programa contra estos nombres: no van a cambiar.

StateEstado MeansSignifica
receivedAccepted and queued.Aceptado y en cola.
processingBeing analysed.Analizándose.
completedDone. Carries percentages and links.Listo. Trae porcentajes y enlaces.
failedCould not be done. Carries a reasonCode.No se pudo. Trae un reasonCode.

Failure reasonsMotivos de fallo

React to the reasonCode, not to the text: the text may be rewritten, the code will not. Reacciona al reasonCode, no al texto: el texto puede reescribirse, el código no.

reasonCode What happenedQué pasó What to doQué hacer
DOCUMENT_HAS_COVER The document has a cover page.El documento lleva carátula o portada. Send it again without it.Reenvíalo sin ella.
DOCUMENT_UNREADABLE No text could be extracted (scanned or images only).No se pudo extraer texto (escaneado o solo imágenes). Send a version with real text.Envía una versión con texto real.
DOCUMENT_TOO_LARGE Over the accepted size.Supera el tamaño admitido. Split it or shrink it.Divídelo o redúcelo.
UNSUPPORTED_FORMAT The format is not accepted.El formato no está admitido. Convert it to .docx or .pdf.Conviértelo a .docx o .pdf.
TEMPORARY_FAILURE A temporary problem on our side.Un problema temporal por nuestra parte. Retry later. The credit is returned to you automatically.Reintenta más tarde. El crédito se te devuelve solo.

You never pay for a document you do not receive. If the analysis fails on our side, or we reject it for carrying a cover page, the credit returns to your balance automatically. And if a request is rejected before it enters, nothing is charged at all. Nunca pagas por un documento que no recibes. Si el análisis falla por algo nuestro, o si lo rechazamos por llevar portada, el crédito vuelve a tu saldo automáticamente. Y si una petición se rechaza antes de entrar, no se descuenta nada.

07Credits and limitsCréditos y límites

An accepted document spends one credit. Credits are sold in packs with their own expiry date and are consumed starting with the pack that expires soonest, so you never lose the nearest ones while spending the others. Un documento aceptado gasta un crédito. Los créditos se venden por paquetes con su propia fecha de caducidad y se consumen empezando por el que antes vence, para que no pierdas los más próximos mientras gastas los otros.

LimitLímite What it controlsQué controla If you exceed itSi lo superas
DailyDiario Documents per rolling 24 hours.Documentos por cada 24 horas. 429 DAILY_LIMIT_REACHED
Per minutePor minuto Bursts of back-to-back uploads.Ráfagas de subidas seguidas. 429 RATE_LIMITED withcon Retry-After
ConcurrentSimultáneos Documents being analysed at once.Documentos analizándose a la vez. 429 TOO_MANY_IN_FLIGHT

On a 429, wait the seconds given in Retry-After and try again. Check /capacity before a large batch and spread your uploads. Ante un 429, espera los segundos que indica Retry-After y reintenta. Consulta /capacity antes de una carga grande y reparte los envíos.

08Error codesCódigos de error

Every error carries success: false, a stable code and a readable error. Todos los errores traen success: false, un code estable y un error legible.

HTTPcodeMeansQué significa
400MISSING_FILE The file field is missing.Falta el campo file.
401MISSING_TOKEN · INVALID_SIGNATURE Token missing or not valid.Falta el token o no es válido.
402INSUFFICIENT_CREDITS You have run out of credits.Te has quedado sin créditos.
403CLIENT_EXPIRED Your subscription has expired.Tu suscripción ha vencido.
403REPORT_TYPE_NOT_ALLOWED Your plan does not include that report type.Tu plan no incluye ese tipo de reporte.
404ORDER_NOT_FOUND That orderId does not exist or is not yours.Ese orderId no existe o no es tuyo.
413FILE_TOO_LARGE The file is over 50 MB.El archivo pasa de 50 MB.
415UNSUPPORTED_TYPE Format not accepted.Formato no admitido.
429RATE_LIMITED · DAILY_LIMIT_REACHED Going too fast, or you hit your cap.Vas demasiado rápido o llegaste a tu tope.
503TEMPORARILY_UNAVAILABLE We could not register the document. You were not charged.No pudimos registrar el documento. No se te cobró.