SciFig

Riferimento API

Modifica di immagini

Modifica un’immagine tramite istruzioni o una regione, sostituisci lo sfondo, cambia proporzioni o colori oppure sostituisci il testo.

Operazioni#

POST /images/edits con un corpo JSON. Ambito richiesto: figures:generate. image è un file_id di un caricamento o risultato precedente; operation sceglie la modifica e vale instruct per impostazione predefinita. Gli stessi strumenti sono nella barra dei risultati del sito.

operationFunzioneCampiCrediti
instructModifica l’intera immagine secondo le istruzioni; con una maschera, ridisegna solo la regione mascheratainstruction di 1–2.000 caratteri, mask facoltativa, quality50 / 75 / 100 in base alla qualità; con maschera 100
white_backgroundSostituisce lo sfondo con bianco uniforme, senza trasparenzaquality50 / 75 / 100
aspect_ratioAdatta l’intera figura a nuove proporzioni, estendendo lo sfondoaspect_ratio (1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9), quality50 / 75 / 100
recolorApplica una palette all’illustrazione mantenendo i colori delle etichettepalette facoltativa di 1–8 colori #RRGGBB; se omessa, viene scelta una palette; quality50 / 75 / 100
replace_textModifica le etichette nella loro posizione, mantenendo carattere e collocazionetext_detection, replacements100

Una maschera è un PNG caricato con finalità mask, delle stesse dimensioni dell’immagine, bianco dove l’immagine può cambiare. La modifica di una regione usa sempre il modello premium, indipendentemente da quality. replace_text non accetta quality: usa sempre il modello di modifica del testo al prezzo premium.

Sostituzione del testo#

  • Chiama POST /images/text-detections sulla stessa immagine. È gratuito e restituisce un id e i texts con il relativo index.
  • Invia operation: "replace_text", text_detection: <id> e replacements: [{"index": 0, "text": "Figure 1"}]. I testi non elencati rimangono invariati.
  • Un indice assente nel rilevamento restituisce 400 INVALID_REQUEST con details.reason = TEXT_INDEX_OUT_OF_RANGE senza addebiti.

Crediti#

I crediti vengono riservati alla creazione del processo, addebitati una sola volta se riesce e restituiti integralmente se fallisce. La risposta è un processo; consulta Processi e attesa limitata per i campi e gli stati. Gli errori sono elencati in Errori.

cURL#

curl -X POST https://scifig.ai/api/v1/images/edits \
  -H "Authorization: Bearer $SCIFIG_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Prefer: wait=25" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<file_id>",
    "operation": "aspect_ratio",
    "aspect_ratio": "16:9"
  }'

JavaScript#

const response = await fetch('https://scifig.ai/api/v1/images/edits', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
    'Idempotency-Key': crypto.randomUUID(),
    Prefer: 'wait=25',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "image": "<file_id>",
    "operation": "aspect_ratio",
    "aspect_ratio": "16:9"
  }),
});
const result = await response.json();
console.log(response.status, result);

Python#

import os
import uuid

import requests

headers = {
    "Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
    "Idempotency-Key": str(uuid.uuid4()),
    "Prefer": "wait=25",
}
response = requests.post(
    "https://scifig.ai/api/v1/images/edits",
    headers=headers,
    json={
        "image": "<file_id>",
        "operation": "aspect_ratio",
        "aspect_ratio": "16:9"
    },
    timeout=60,
)
print(response.status_code, response.json())