castomAPI
Odbierz klucz
POST /v1/minify/svg bezpłatny Bez klucza Minifikacja

Optymalizuje grafikę wektorową SVG

Optymalizuje grafikę wektorową SVG, usuwa metadane XML i atrybuty edytora, czyści ścieżki i kompresuje rozmiar pliku

POST

Żądanie

  • x-api-key: <your-api-key>
  • Content-Type: application/json

Odpowiedź

{
  "result": {
    "minifiedSvg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>"
  },
  "stats": {
    "bytesSaved": 34,
    "compressionRatioPercent": 42.5,
    "minifiedSizeBytes": 33,
    "originalSizeBytes": 27
  },
  "status": "success",
  "tokensDeducted": 1
}
Odpowiedź poniżej to makieta zbudowana ze schematu endpointu — żadne żądanie nie opuszcza tej strony. Zmień treść, naciśnij Wyślij, zobacz kształt odpowiedzi. Uruchom naprawdę w panelu →

Co robi

Optymalizuje grafikę wektorową SVG, usuwa metadane XML i atrybuty edytora, czyści ścieżki i kompresuje rozmiar pliku

Żądanie

Treść

PoleTypWymaganeOpis
minifyColorsbooleannieWhether to convert rgb() and hex colors to minified hex format.
precisionintegernieFloating point precision for path coordinates and dimensions.
removeCommentsbooleannieWhether to strip XML comments.
removeEditorDatabooleannieWhether to scrub Inkscape, Sketch, and Illustrator metadata.
removeMetadatabooleannieWhether to strip <metadata> blocks.
removeTitleDescbooleannieWhether to remove <title> and <desc> accessibility tags.
svgstringtakRaw SVG XML string to optimize.

Przykładowe żądanie

{
  "minifyColors": true,
  "precision": 2,
  "removeComments": true,
  "removeEditorData": true,
  "removeMetadata": true,
  "removeTitleDesc": true,
  "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>"
}

Odpowiedź

PoleTypOpis
resultobject
  ↳ minifiedSvgstring
statsobject
  ↳ bytesSavedinteger
  ↳ compressionRatioPercentnumber
  ↳ minifiedSizeBytesinteger
  ↳ originalSizeBytesinteger
statusstring
tokensDeductedinteger

Przykładowa odpowiedź

{
  "result": {
    "minifiedSvg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>"
  },
  "stats": {
    "bytesSaved": 34,
    "compressionRatioPercent": 42.5,
    "minifiedSizeBytes": 33,
    "originalSizeBytes": 27
  },
  "status": "success",
  "tokensDeducted": 1
}

Błędy

Każdy błąd ma tę samą kopertę: status HTTP, kod maszynowy i jedno zdanie.

400Treść albo parametr nie przeszły walidacji. Tablica details wskazuje pole.
401Brak klucza, klucz cofnięty albo zły nagłówek. Wyślij x-api-key.
402Portfel nie pokrywa tego wywołania. Doładuj albo poczekaj na miesięczny przydział.
404Zasób nie istnieje albo nie jest Twój. Obie sytuacje odpowiadają identycznie i nic nie kosztują.
429Przekroczony limit na minutę dla Twojego planu. Odczekaj i ponów.
5xxUsługa nadrzędna odmówiła albo przekroczyła czas. Wywołanie nie jest rozliczane.

Kod

curl -X POST 'https://app.castomapi.com/v1/minify/svg' \
  -H 'x-api-key: <your-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{"minifyColors": true, "precision": 2, "removeComments": true, "removeEditorData": true, "removeMetadata": true, "removeTitleDesc": true, "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>"}'
const res = await fetch('https://app.castomapi.com/v1/minify/svg', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"minifyColors": true, "precision": 2, "removeComments": true, "removeEditorData": true, "removeMetadata": true, "removeTitleDesc": true, "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>"})
});
const data = await res.json();
console.log(data);
import { request } from 'node:https';

// Node 18+ has fetch built in
const res = await fetch('https://app.castomapi.com/v1/minify/svg', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"minifyColors": true, "precision": 2, "removeComments": true, "removeEditorData": true, "removeMetadata": true, "removeTitleDesc": true, "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>"})
});
const data = await res.json();
console.log(data);
import requests

res = requests.post(
    'https://app.castomapi.com/v1/minify/svg',
    headers={'x-api-key': '<your-api-key>'},
    json={"minifyColors": True, "precision": 2, "removeComments": True, "removeEditorData": True, "removeMetadata": True, "removeTitleDesc": True, "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/></svg>"},
    timeout=30,
)
print(res.json())
<?php
$ch = curl_init('https://app.castomapi.com/v1/minify/svg');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['x-api-key: <your-api-key>', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode(['minifyColors' => true, 'precision' => 2, 'removeComments' => true, 'removeEditorData' => true, 'removeMetadata' => true, 'removeTitleDesc' => true, 'svg' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/></svg>']),
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);

Koszt i limity

Ta operacja nie wymaga klucza API i nic nie kosztuje: wywołana bez klucza odpowiada 200 i pobiera zero tokenów, do 10 żądań na minutę z jednego adresu IP.

Limity żądań na minutę

Bez klucza10
Free60
Pro300
Enterprise1200

Dokumentacja → Cennik

Pytania

Ile kosztuje Optymalizuje grafikę wektorową SVG?

Ta operacja nie wymaga klucza API i nic nie kosztuje: wywołana bez klucza odpowiada 200 i pobiera zero tokenów, do 10 żądań na minutę z jednego adresu IP.

Jak się uwierzytelnić?

Wyślij klucz w nagłówku x-api-key. Jeden klucz obejmuje każdy rozliczany endpoint; niczego nie trzeba włączać osobno.

Czy mogę wysłać nagłówek Authorization: Bearer zamiast klucza?

Nie dla rozliczanego endpointu — te przyjmują wyłącznie nagłówek x-api-key. Tokeny Bearer należą do strony konta: panel i API konta przyjmują sesję JWT, a castomapi-auth wydaje je standardowym uzgodnieniem OAuth2, z grantami authorization code, client credentials i refresh. Opisuje to strona usługi auth.

Jakie są limity?

10 żądań na minutę z jednego IP zupełnie bez klucza, 60 na minutę w planie Free, 300 w Pro, 1200 w Enterprise. Powyżej poziomu bez klucza limit jest na konto, łącznie dla wszystkich endpointów.

OpenAPI: https://app.castomapi.com/docs/json