Preskoči na vsebino

API documentation

With the Do4U API you use the same tools as on the website from your own software: summarise, compare, support replies, alt texts, rewrite and translate. Every request is processed on our own servers in Poland, EU.

Base URL: https://do4u.eu/api/v1

OpenAPI 3.1 description (JSON) – Machine-readable description of this API for code generators and tools such as Postman or Insomnia. No key needed.

Authentication

Create a key under API keys in your account. Send it with every request in the header Authorization: Bearer <key> (or X-API-Key: <key>). Keep the key secret and never put it into a web page. You can revoke a key at any time.

How it works

Jobs run asynchronously. You create a job and get its id at once (HTTP 202). Then you fetch the job until its status is done or failed. Ask every 2 to 5 seconds; most jobs take a few seconds.

Endpoints

GET /tools Tools, options and your input limits
GET /balance Your credit balance
POST /jobs Create a job (JSON, or multipart/form-data with an image file)
GET /jobs/{id} Status and result of a job
DELETE /key Revoke the key you send with this request, for example when an integration is disconnected. Jobs already created still finish.
POST /key/revoke The same as DELETE /key, for clients that can only send GET and POST.

Example

Create a job, then fetch the result:

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "...", "options": {"length": "short"}, "language": "en"}'
HTTP/1.1 202 Accepted
{"id": "8f1c0b6a...", "tool": "summarize", "status": "queued", "model": "do4u-standard",
 "credits_estimate": 1, "links": {"self": "https://do4u.eu/api/v1/jobs/8f1c0b6a..."}}
curl https://do4u.eu/api/v1/jobs/8f1c0b6a... -H "Authorization: Bearer d4u_YOUR_KEY"

{"id": "8f1c0b6a...", "tool": "summarize", "status": "done", "model": "do4u-standard", "credits_estimate": 1,
 "result": {"summary": "...", "key_points": ["...", "..."]}, "credits": 1,
 "notice": "AI-generated, please check before use."}
curl -X POST https://do4u.eu/api/v1/jobs -H "Authorization: Bearer d4u_YOUR_KEY" \
  -F tool=alt_text -F language=de -F "text=Product page: hiking boots" -F image=@photo.jpg

Request fields for POST /jobs

toolName of the tool, see the table below. Required.
textInput text. For compare: text A. For alt_text: optional page context.
text_bText B (compare only).
urlPublic web page to read instead of text (summarize, accessibility_check).
htmlHTML of a page to check (accessibility_check), up to 300,000 characters.
focus_keywordOptional focus keyword for seo_meta. Without target, seo_meta writes in language.
faqOptional FAQ snippets (support_reply only).
questionsOptional for seo_meta, content_brief and faq_schema: frequent visitor questions as a list of texts or {"text": ..., "count": n} (up to 50, at most 20 are used). faq_schema answers them first if the source answers them; visitor_questions in the result says what happened to each.
imageImage for alt_text: file field in multipart/form-data, or base64 / data URI in JSON. JPG, PNG, WebP or GIF, up to 5 MB.
image_urlOptional for alt_text instead of image: public address of the image (http or https; JPEG, PNG, WebP or GIF; at most 5 MB). Do4U loads it once in the background. If that fails, the job fails with error image_unavailable and costs nothing.
optionsObject with options of the tool, for example {"length": "short"}.
languageLanguage of the result and notes: en, de or pl. Default en. For translate, the target language is the option target.
no_storetrue: the input is deleted right after processing and the result after the first retrieval.
brand_voiceOptional: false switches your brand voice off for this job (default: the brand voice applies if you have set one).
ai_labelOptional: true shows the visible note "Marked as AI-generated" with the result in the web interface, false hides it. Default: the setting in your account. The machine-readable AI label is always in the result and cannot be switched off: the fields ai_generated and generator, an HTML comment in HTML results, ai_notice for image descriptions. ai_generated is false if the result comes from automatic checks only.
callback_urlOptional: public https address that gets a signed POST when the job is finished (see Webhooks).
render_jsOptional: true loads the page with JavaScript first (pages that build their content in the browser; tools that read a url). Costs the render surcharge only if the page was really loaded this way; the result field render says what happened.
no_cacheOptional: true always starts a new AI job. Without it, a finished and still stored result of your account (or workspace) with the same tool, options and input is reused: the job is done at once, from_history is true and it costs 0 % of the credits of the original. Never with no_store, never for a url.
allow_same_languageOptional for translate, translate_html and translate_file: true translates even if the text already is in the target language. Without it such a job is rejected with same_language (400) – only when the check is sure.

Repeat requests safely (Idempotency-Key)

Send the header Idempotency-Key with POST /jobs, for example a random UUID for each job (1 to 255 printable ASCII characters). If the connection breaks and you send the same request again with the same Idempotency-Key and the same API key within 24 hours, you get the same answer again: the same job, no second job and no second charge. The answer then has the header Idempotent-Replayed: true. Use a new key for every new job. If you send the same key with a different request, you get 422 idempotency_conflict. Errors are not stored: after an error you can send the request again with the same key.

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Idempotency-Key: 5f0c2a8e-7d1b-4c3a-9e2f-1b6d8a4c0e77" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "..."}'

Tools and options

ToolInputs Options (first value is the default)Result fieldsPrice
moderate_commentPreveri komentarje glede neželene pošte text – classification, reason, suggestion, action, note običajno 1–3 kreditov
document_htmlPretvori dokumente v HTML image, pdf, text page: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 html, plain_text, notes, page, note običajno 2–3 kreditov
image_textPoišči besedilo, vpeto v slike url image_index: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 html, plain_text, notes, images, image_index, coverage, note običajno 2–3 kreditov
pdf_accessibilityPreveri dostopnost PDF pdf – checks, pages, truncated, repaired, note, convert_url običajno 1–2 kreditov
summarizePovzemi text, url length: medium | short | long summary, key_points običajno 1–3 kreditov
comparePrimerjaj text, text_b focus: overall | facts | tone | seo summary, similarities, differences običajno 1–3 kreditov
support_replyOdgovor podpore text, faq tone: friendly | neutral | formal reply, concerns, questions običajno 1–3 kreditov
alt_textNadomestna besedila image, text, filename, image_url – alt, caption, description, filename, filename_base, extension, language, alt_length, alt_max, alt_status, caption_length, caption_max, caption_status običajno 2–3 kreditov
rewritePredelaj text style: simpler | shorter | more_formal | more_casual | more_persuasive | easy_to_read text, changes, language, style_label, readability, easy_check, easy_note, review_status, review_limit, diff običajno 1–4 kreditov
accessibility_checkPreverjanje dostopnosti url, html – summary, page, counts, findings, checks, readability, note fixed 3 credits per task
seo_metaNaslov in opis SEO url, text, focus_keyword, questions target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv variants, current, focus_keyword, limits, keywords, note fixed 1 credit per task
translate_htmlPrevedi HTML html target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv html, segments, check, glossary, notes, note, review_status, alignment običajno 1–4 kreditov
product_descriptionOpisi izdelkov text tone: neutral | friendly | persuasive | formallength: medium | short | longchannel: shop | marketplacetarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svmeta_description: no | yes products, language, detected_language, channel, format, limits, counts, check, note običajno 1–3 kreditov
headlinesNaslovi in zadevne vrstice text kind: page | newsletter | adtone: neutral | friendly | persuasive | formalcount: 5 | 3 | 8target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv kind, fields, variants, limits, counts, enough, report, language, detected_language, note fixed 1 credit per task
faq_schemaPogosta vprašanja in označevanje sheme url, text, questions type: faq | organization | localbusiness | productcount: 8 | 5 | 10target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv type, kind, jsonld, html, valid, faq, fields, checks, counts, unverified, dropped, existing, existing_errors, existing_same, page, language, detected_language, notes, note, visitor_questions fixed 2 credits per task
content_briefPovzetek vsebine text, audience, questions target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv title, title_length, title_max, title_status, goal, intent, outline, questions, length, markdown, counts, dropped, limits, language, detected_language, notes, note običajno 1–2 kreditov
review_replyOdgovori na ocene text, company stars: 0 | 1 | 2 | 3 | 4 | 5platform: general | google | trustpilot | booking | tripadvisor | airbnb | yelp | app_store | google_playtone: friendly | neutral | formalcount: 3 | 2target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv assessment, variants, limits, platform, stars, tone, counts, dropped, enough, report, hints, checks, language, detected_language, note običajno 1–2 kreditov
social_postsObjave za družbena omrežja iz članka url, text channels: all | linkedin | facebook | instagram | linkedin+facebook | linkedin+instagram | facebook+instagramtone: friendly | neutral | persuasive | formal | casualvariants: 1 | 2 | 3target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv channels, posts, limits, counts, enough, report, link, link_in_bio, language, detected_language, source, notes, note običajno 1–3 kreditov
explain_termsRazloži pojme url, text level: simple | general | expertexamples: no | yestarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv terms, level, language, detected_language, source, text_length, text_clipped, counts, dropped, adjusted, limits, other_candidates, checks, markdown, html, notes, note običajno 1–3 kreditov
extract_dataIzlušči podatke url, text types: all | hours | prices | hours+prices | addresses | hours+addresses | prices+addresses | hours+prices+addresses | events | hours+events | prices+events | hours+prices+events | addresses+events | hours+addresses+events | prices+addresses+events | hours+prices+addresses+events | contact | hours+contact | prices+contact | hours+prices+contact | addresses+contact | hours+addresses+contact | prices+addresses+contact | hours+prices+addresses+contact | events+contact | hours+events+contact | prices+events+contact | hours+prices+events+contact | addresses+events+contact | hours+addresses+events+contact | prices+addresses+events+contacttarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv kinds, hours, prices, addresses, events, contact, counts, empty, unverified, dropped, limits, source, language, detected_language, notes, note običajno 1–3 kreditov
redirect_planNačrt preusmeritev old_urls, new_urls, old_domain, new_domain ai: yes | no old_base, new_base, mappings, counts, unused_new, invalid, dropped, ai, legend, language, domain_ignored, notes, note običajno 1–3 kreditov
contrast_checkPreverjanje barvnega kontrasta colors level: aa | aaatext_size: normal | large colors, pairs, counts, invalid, settings, palette_check, legend, language, note običajno 1–2 kreditov
language_levelJezikovna raven (A1–C1) text level: B1 | A1 | A2 | B2 | C1target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svkeep_terms: no | yes text, changes, level, language, detected_language, translated, summary, within_guideline, measures, over_guideline, over_count, readability, content, kept_terms, checks, hints, note običajno 1–4 kreditov
llms_txtGenerator llms.txt url target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv name, summary, details, file, filename, sections, counts, pages_read, read, existing, dropped, hints, language, detected_language, notes, note običajno 1–3 kreditov
internal_linksNotranje povezave text, pages, sitemap_url, page_url – links, text, text_is_html, counts, pages, dropped, ai, limits, language, detected_language, timeout, notes, note običajno 1–3 kreditov
outdated_contentZastarela vsebina url, text, html, reference_date target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv reference_date, reference_date_given, findings, summary, counts, source, dropped, ai, limits, language, detected_language, timeout, notes, note običajno 1–3 kreditov
inclusive_languageVključujoč in preprost jezik text scope: both | exclusion | complexitygender: not_prescribed | neutral | pair | star | colon | brand_voice language, scope, gender, summary, counts, findings, candidates, measures, applied, changed, revised_text, diff, dropped, checks, hints, note običajno 1–3 kreditov
review_analysisAnaliza ocen text focus: all | criticismtarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv format, columns, language, detected_language, focus, counts, selection, stars, period, languages, languages_unknown, personal_data, themes, praise, criticism, page, faq, cited, dropped, limits, hints, notes, note običajno 1–3 kreditov
ai_visibility_checkPreverjanje vidnosti za UI url, text, html, topic, questions target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv coverage, coverage_level, counts, questions, faq_questions, sections, qa_on_page, structured_data, llms_txt, robots_txt, readability, hints, source, topic, dropped, ai, limits, files, language, detected_language, note, how običajno 1–3 kreditov
events_calendarDogodki v koledar url, text, time_zone, year target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv events, counts, unverified, dropped, timezone, year, today, limits, ics, jsonld, filename, source, language, detected_language, notes, note običajno 1–3 kreditov
product_photoFotografija izdelka v besedilo image, image_url, text, languages target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svcategory_list: google | free language, detected_language, title, title_length, title_max, title_status, short_description, short_length, short_max, short_status, description, description_length, description_max, description_status, bullets, bullets_count, bullets_max_length, bullets_status, alt_text, alt_length, alt_max, alt_status, category_group, attributes, attribute_sources, attribute_list, translations, removed, hints, claims_checked, claims_unchecked, counts, limits, notes, category_list, jsonld, jsonld_check, product_json, check, note običajno 2–3 kreditov
chart_descriptionOpiši grafikone in infografike image, image_url, text target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svlength: normal | short chart_type, title, language, detected_language, alt, alt_length, alt_max, alt_status, description, description_length, description_max, description_status, description_size, axes, data, data_rows, table, data_csv, html, image_text, pie_check, hints, counts, limits, notes, verify_numbers, check, note običajno 2–3 kreditov
design_feedbackPovratne informacije o oblikovanju iz posnetka zaslona image, image_url, text target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svdevice: auto | phone | desktop language, detected_language, device, summary, findings, image, image_basis, counts, removed, hints, limits, notes, estimate, check, note, text, markdown običajno 2–3 kreditov
job_ad_checkPreverjanje zaposlitvenega oglasa url, text, html jurisdiction: auto | eu | de | pltarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, jurisdiction, title, checklist, counts, pay, structure, length, findings, titles, summary, source, text_cut, dropped, ai, hints, note običajno 1–3 kreditov
green_claims_checkPreverjanje okoljskih trditev url, text, html target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv findings, summary, counts, source, dropped, ai, limits, legal, language, detected_language, timeout, notes, note običajno 1–3 kreditov
third_party_scanPreverjanje storitev tretjih oseb url, html – url, host, page_from, static_only, counts, consent, groups, cookies, legend, notes, check, note, truncated, checked_at običajno 1–2 kreditov
broken_link_checkPreverjanje nedelujočih povezav url resources: yes | noexternal: no | yes language, url, host, counts, broken, more_broken, redirects, more_redirects, soft, start_soft, suggestions, not_reached, limits, note, truncated običajno 1–2 kreditov
duplicate_content_checkPreverjanje podvojene vsebine url, text – language, mode, url, host, summary, counts, findings, passed, hints, thresholds, pages, limits, note, truncated običajno 1–2 kreditov
hreflang_checkPreverjanje hreflang url – language, url, counts, findings, pages, matrix, annotations, legend, limits, note običajno 1–2 kreditov
ai_robots_txtPajki UI v robots.txt site_url, robots_txt, groups, crawlers – file, file_complete, ai_section, crawlers, counts, source, existing, changes, checks, notes, legend, sources, verified_on, language, note običajno 1–2 kreditov
faq_from_supportPogosta vprašanja iz sporočil strank text, faq_url target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv format, input_kind, columns, language, detected_language, languages, counts, selection, faq_page, personal_data, topics, gaps, cited, dropped, limits, placeholder, hints, notes, note, export običajno 1–3 kreditov
price_display_checkPreverjanje prikaza cen url, text, html ai: yes | nojurisdiction: auto | de | pl jurisdiction, jurisdiction_auto, jurisdiction_label, source, price, previous_prices, prior_30_days, unit_prices, quantities, discounts, hints, structured, findings, counts, checks, ai, dropped, legal_sources, language, notes, note običajno 1–3 kreditov
form_text_checkBesedila obrazcev url, html, error_messages target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svtone: neutral | friendly | formal language, detected_language, tone, required_word, forms, errors, counts, criteria, summary, source, dropped, ai, hints, note običajno 1–3 kreditov
newsletter_checkPreverjanje novičnika html, eml, text, subject, preheader target: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, input, subject, preheader, checklist, counts, links, links_total, images, eml, pairs, improvements, text_cut, dropped, ai, hints, note običajno 1–3 kreditov
privacy_policy_matchPreverjanje politike zasebnosti website_url, pages, policy_url, policy_text – website, pages, policy, not_in_policy, not_found, matched, categories, counts, dropped, ai, limits, legal, notes, check, note, checked_at običajno 1–3 kreditov
social_card_checkPreverjanje kartic za družbena omrežja url – language, url, counts, preview, findings, tags, images, snippet, guidance, limits, note običajno 1–2 kreditov
image_performance_checkPreverjanje slik url – language, url, counts, total, formats, lcp, page_findings, summary, images, more_images, legend, limits, note, truncated običajno 1–2 kreditov
ai_transparency_checkPreverjanje preglednosti UI url, text, html chatbot: auto | yes | nomedia: unknown | no | realistic | artistic | illustrativearticles: unknown | no | unreviewed | reviewedtarget: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, detected_language, source, answers, checklist, detected, notices, summary, counts, dropped, ai, legal, hints, note običajno 1–3 kreditov
structured_data_checkPreverjanje strukturiranih podatkov url, html – language, url, input, counts, formats, findings, items, rules, visible, limits, truncated, note običajno 1–2 kreditov
legal_notice_checkPreverjanje impresuma url, text, html ai: yes | nojurisdiction: auto | de | pl jurisdiction, jurisdiction_auto, jurisdiction_basis, jurisdiction_label, source, entity, items, extra, counts, ai, dropped, legal_sources, language, notes, note, truncated običajno 1–3 kreditov
glossary_builderSestavi slovar izrazov url, text, html, languages source: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svmax_pages: 1 | 2 | 3 | 5 | 10 language, language_name, language_source, targets, target_names, items, existing, counts, pages, reading, source, text_cut, dropped, glossary, hints, note, export običajno 1–3 kreditov
local_business_checkPreverjanje podatkov o podjetju url, text ai: no | yes language, url, host, mode, country, table, findings, counts, structured, suggestion, handover, pages, failed, not_reached, limits, ai, dropped, notes, note običajno 1–2 kreditov
consent_preload_checkSe naloži pred soglasjem? url – url, final_url, host, loaded, counts, timing, consent, groups, cookies, storage, notes, check, law, note, truncated, checked_at običajno 1–2 kreditov
ai_literacy_policyPravilnik o pismenosti na področju UI (Akt o UI, člen 4) text, uses, roles, data, company_name company_size: 1-9 | 10-49 | 50-249 | 250+sector: general | retail | services | crafts | health | finance | education | public_sector | media | it | manufacturing | tourism | socialreview_months: 12 | 6 | 24language: auto | en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv language, title, sections, training, record_columns, markdown, text, profile, counts, dropped, legal, hints, note običajno 1–2 kreditov
withdrawal_button_checkPreverjanje gumba za odstop od pogodbe url, text, html ai: yes | nojurisdiction: auto | de | pl | eusubscriptions: auto | yes | no jurisdiction, jurisdiction_auto, jurisdiction_basis, jurisdiction_label, law, source, subscription, items, candidates, counts, ai, dropped, legal_sources, language, notes, note, truncated običajno 1–3 kreditov
product_safety_checkPreverjanje strani izdelka (GPSR) url, text, html market_language: auto | bg | cs | da | de | el | en | es | fi | fr | hr | hu | it | lt | nl | pl | pt | ro | sk | sl | sv language, market_language, market_language_label, market_basis, page_language, source, product, manufacturer_seat, items, counts, dropped, ai, hints, notes, legal, legal_sources, note običajno 1–3 kreditov
website_checkPregled spletnega mesta url scope: short | full score, categories, findings, counts, snippet, llms_txt, summary, actions, note fixed 5 credits per task
translatePrevedi text target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | sv translation, notes, review_status, alignment običajno 1–4 kreditov
proofreadLektura text text_language: auto | en | de | pl | fr | es | it | pt | nl | cs | sk | uk | ru | bg | ro | hu | sv | da | fi | tr | el | ar | fa | he | hi | zh | ja | ko | th text, html, language, identical, summary, counts, changed_share, changes, notes, beta, note običajno 1–4 kreditov
translate_fileJezikovne datoteke text target: en | de | pl | fr | es | it | nl | cs | sk | uk | bg | da | el | fi | hr | hu | lt | pt | ro | sl | svscope: auto | all | missingline_endings: lf | crlf | lf_no_final_newline | crlf_no_final_newline format, target, filename, mime, file, entries, counts, flagged, preview, check, notes, note običajno 5–8 kreditov

Job status

queued and running: still working (position and wait_seconds help you to wait). done: result contains the fields of the tool. failed: nothing was charged (credits is 0); error.code names the reason: address_blocked (Do4U does not open this address, for example a private or internal one; send the text or HTML instead), input_too_large (shorten the input), image_unavailable or job_failed. expired: the result is no longer stored.

Webhooki

Dodaj "callback_url" v POST /api/v1/jobs in Do4U pošlje podpisan POST (dogodek job.finished s stanjem, krediti in povezavo do rezultata - ne samega rezultata), takoj ko je opravilo končano. Samo javni naslovi na vratih 80 ali 443; poskusimo do 6-krat z vse daljšimi premori.

Primer: ustvari opravilo s callback_url – in zahtevek, ki ga Do4U pošlje na ta naslov, ko je opravilo končano:

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool": "summarize", "text": "...", "callback_url": "https://example.com/do4u-hook"}'
POST /do4u-hook
Content-Type: application/json
X-Do4U-Event: job.finished
X-Do4U-Signature: t=1793180000,v1=6b1f...

{"event":"job.finished","id":"8f1c0b6a...","tool":"summarize","status":"done","credits":1,
 "created":"2026-10-28T10:00:00+01:00","finished":"2026-10-28T10:00:04+01:00","result_url":"https://do4u.eu/api/v1/jobs/8f1c0b6a..."}

Preveri glavo X-Do4U-Signature: t=<time>,v1=<hex>, kjer je v1 = HMAC-SHA256(secret, "<time>.<raw body>"). Zavrni stare čase (npr. starejše od 5 minut). Tvoja skrivnost se začne z whsec_ in je prikazana na strani Ključi API.

// Node.js: rawBody = the request body exactly as received (string)
const crypto = require('crypto');
function do4uSignatureOk(rawBody, header, secret) {
  const t = (header.match(/t=(\d+)/) || [])[1];
  const v1 = (header.match(/v1=([0-9a-f]{64})/) || [])[1];
  if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
  const expected = crypto.createHmac('sha256', secret).update(t + '.' + rawBody).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}
// PHP
function do4u_signature_ok(string $raw, string $header, string $secret): bool {
    if (!preg_match('/t=(\d+),v1=([0-9a-f]{64})/', $header, $m) || abs(time() - (int)$m[1]) > 300) return false;
    return hash_equals(hash_hmac('sha256', $m[1] . '.' . $raw, $secret), $m[2]);
}
$ok = do4u_signature_ok(file_get_contents('php://input'), $_SERVER['HTTP_X_DO4U_SIGNATURE'] ?? '', 'whsec_YOUR_SECRET');

credits.low

Ko stanje kreditov računa pade pod prag, Do4U na naslov webhooka računa pošlje en podpisan POST. Dogodek ne vsebuje osebnih podatkov, samo stanje, prag in čas (UTC). Naslednji sledi šele, ko so krediti spet dodani (nakup, mesečni brezplačni krediti ali kupon). Podpis in skrivnost sta enaka kot pri job.finished.

POST /do4u-hook
Content-Type: application/json
X-Do4U-Event: credits.low
X-Do4U-Signature: t=1793180000,v1=6b1f...

{"event":"credits.low","balance":18,"threshold":20,"ts":"2026-10-29T10:00:04Z"}

Naslov in prag nastaviš tukaj: Ključi API

n8n

Že pripravljen potek dela: webhook sprejme klic iz Do4U, preveri podpis, pridobi rezultat in ga preda tvojemu naslednjemu koraku.

Prenesi predlogo za n8n (JSON)

Predloga, še ni preizkušena v pravi namestitvi n8n ali Make – preizkusi preverjanje podpisa, preden jo uporabiš.

V n8n: Workflows → Import from file. Nato vpiši svojo skrivnost v vozlišče "Check signature" in svoj ključ API v "Do4U: get result", aktiviraj potek dela in uporabi produkcijski URL webhooka kot callback_url. Samostojno gostovan n8n za preverjanje podpisa potrebuje spremenljivko okolja NODE_FUNCTION_ALLOW_BUILTIN=crypto.

Make

  1. Kot sprožilec dodaj modul Webhooks → Custom webhook in v njegovih naprednih nastavitvah vklopi "JSON pass-through" in "Get request headers".
  2. Naslov tega webhooka uporabi kot callback_url.
  3. Preveri podpis: primerjaj v1 iz glave X-Do4U-Signature s sha256(t + "." + raw body; hex; tvoja skrivnost).
  4. Dodaj HTTP → Make a request: GET na result_url z glavo Authorization: Bearer <your API key>.
  5. Polje result uporabi v naslednjih modulih.

Predloga, še ni preizkušena v pravi namestitvi n8n ali Make – preizkusi preverjanje podpisa, preden jo uporabiš.

Recepti: veriženje orodij

Recept izvede 2 do 4 orodja drugo za drugim kot eno opravilo. Namesto »tool« pošlji »recipe«: bodisi ime že pripravljenega recepta bodisi seznam korakov. Besedilo gre v prvi korak; rezultat vsakega koraka je besedilo za naslednji korak. GET /api/v1/recipes našteje že pripravljene recepte, orodja, ki jih lahko uporabiš, in polje, ki ga vsako orodje preda naprej.

curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe": [{"tool": "summarize", "options": {"length": "short"}},
               {"tool": "translate", "options": {"target": "pl"}}], "text": "..."}'
curl -X POST https://do4u.eu/api/v1/jobs \
  -H "Authorization: Bearer d4u_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"recipe": "summary_translate_meta", "options": {"target": "pl"}, "text": "..."}'

Dobiš eno oceno za vse korake (credits_estimate). Ta znesek se rezervira ob začetku. Po vsakem koraku se zabeleži dejanska poraba, preostanek ostane rezerviran do konca, nato se sprosti. Neuspešen korak ne stane nič, preostali koraki so preskočeni, že končani koraki pa se zaračunajo.

HTTP/1.1 202 Accepted
{"id": "3c9e0d1a...", "tool": "recipe", "recipe": null, "status": "queued", "model": "do4u-standard", "credits_estimate": 4,
 "steps": [{"n": 1, "tool": "summarize", "credits_estimate": 2}, {"n": 2, "tool": "translate", "credits_estimate": 2}],
 "links": {"self": "https://do4u.eu/api/v1/jobs/3c9e0d1a..."}}

GET /api/v1/jobs/{id} prikaže vsak korak z njegovim stanjem (pending, queued, running, done, failed, skipped), njegovimi krediti, obvestilom input_shortened, če je bilo treba besedilo skrajšati za naslednje orodje, in rezultatom vsakega koraka, ko se recept konča. Z no_store se rezultati prikažejo enkrat. callback_url se sproži enkrat, ob koncu recepta.

GET https://do4u.eu/api/v1/jobs/3c9e0d1a...

{"id": "3c9e0d1a...", "tool": "recipe", "status": "done", "credits_estimate": 4, "credits": 3, "steps_total": 2,
 "steps": [{"n": 1, "tool": "summarize", "status": "done", "credits": 1, "result": {"summary": "...", "key_points": ["..."]}},
           {"n": 2, "tool": "translate", "status": "done", "credits": 2, "notices": ["input_shortened"], "result": {"translation": "...", "notes": []}}],
 "result": {"translation": "...", "notes": []}}

GET https://do4u.eu/api/v1/recipes

Errors

Errors always have the same form: {"error": {"code": "...", "message": "..."}}. With 429 and 503 the header Retry-After says how many seconds to wait.

CodeHTTPMeaning
missing_key401No API key sent.
invalid_key401Key unknown or revoked.
rate_limited429Too many requests in this minute.
invalid_json400Body is not a JSON object.
unknown_tool400No tool with this name.
invalid_option400Unknown option or value.
invalid_field400A field has the wrong type.
invalid_language400language is not en, de or pl.
empty_input400No text or URL.
text_b_required400compare needs text and text_b.
input_too_long400Input longer than your limit.
input_too_large400Input too large for one job: shorten it or split it into several jobs.
invalid_url400URL not allowed or not readable.
invalid_image400Image missing, wrong format or too large.
payload_too_large413Request body larger than 8 MB.
insufficient_credits402Not enough credits.
email_not_verified402Confirm your email address first.
daily_limit429Free daily limit used up (website_check scope short).
too_many_open_jobs429Too many open jobs in your account.
package_required403The tool needs a purchased package.
busy503The queue is full, try again shortly.
tool_unavailable503The tool is not available right now.
not_found404Unknown endpoint or job.
method_not_allowed405Wrong HTTP method.
internal_error500Error on our side.
invalid_idempotency_key400Idempotency-Key is empty, too long or has characters that are not printable ASCII.
idempotency_conflict422This Idempotency-Key was already used with a different request.
idempotency_in_progress409A request with this Idempotency-Key is still running. Wait a moment (Retry-After).
idempotency_unavailable503Idempotency-Key cannot be used right now. Try again later.
same_language400The text already is in the target language (translate tools). Send allow_same_language: true to translate anyway.

Limits

Credits

A new job shows an estimate (credits_estimate); charged is the actual use (credits). Failed jobs cost nothing. Free credits are used first.

Data

Inputs and results are stored for 7 days (Free) or 30 days (paid packages), then deleted. Images are deleted right after processing. Results are AI-generated: please check them before you use them.

Odgovarjaj na e-pošto, ne da bi spreminjal svoj nabiralnik

Do4U ne upravlja nabiralnika in nikoli ne shranjuje dostopnih podatkov za tvoj poštni predal. Dva načina, kako kljub temu dobiti osnutke odgovorov:

S1 – Predloga za n8n ali Make

  1. Sprožilec: nova e-pošta v tvojem poštnem predalu (sprožilec IMAP v n8n ali Make – dostopni podatki ostanejo tam)
  2. POST /api/v1/jobs z orodjem support_reply, besedilom e-pošte in no_store: true
  3. Počakaj nekaj sekund in pridobivaj GET /api/v1/jobs/{id}, dokler stanje ni done
  4. V poštnem predalu ustvari osnutek z besedilom iz result.reply (modul Gmail ali Outlook)

Prenesi predlogo za n8n (JSON)

V Make isti scenarij sestavi iz modulov Email (watch emails), HTTP (make a request), Sleep in Gmail ali Outlook (create a draft).

Razvijalske razširitve in vtičniki za trgovine

Razpakiraj ZIP in preberi priloženi vodnik. Razširitev brskalnika naloži lokalno; vtičnike za trgovine najprej preizkusi v testni trgovini. Potreben je tvoj lasten razvijalski ključ API. Shopware trenutno ponuja CLI.