Pereiti prie turinio

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_commentTikrinti komentarus dėl šlamšto text – classification, reason, suggestion, action, note paprastai 1–3 kreditų
document_htmlPaversti dokumentus 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 paprastai 2–3 kreditų
image_textRasti į paveikslėlį įterptą tekstą 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 paprastai 2–3 kreditų
pdf_accessibilityTikrinti PDF prieinamumą pdf – checks, pages, truncated, repaired, note, convert_url paprastai 1–2 kreditų
summarizeSantrauka text, url length: medium | short | long summary, key_points paprastai 1–3 kreditų
comparePalyginimas text, text_b focus: overall | facts | tone | seo summary, similarities, differences paprastai 1–3 kreditų
support_replyAtsakymas klientui text, faq tone: friendly | neutral | formal reply, concerns, questions paprastai 1–3 kreditų
alt_textAlternatyvusis tekstas 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 paprastai 2–3 kreditų
rewritePerrašymas 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 paprastai 1–4 kreditų
accessibility_checkPrieinamumo patikra url, html – summary, page, counts, findings, checks, readability, note fixed 3 credits per task
seo_metaSEO pavadinimas ir aprašymas 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_htmlVersti 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 paprastai 1–4 kreditų
product_descriptionProduktų aprašymai 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 paprastai 1–3 kreditų
headlinesAntraštės ir temos eilutės 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_schemaDUK ir schemos žymėjimas 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_briefTurinio užduotis 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 paprastai 1–2 kreditų
review_replyAtsakymai į atsiliepimus 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 paprastai 1–2 kreditų
social_postsSocialinių tinklų įrašai iš straipsnio 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 paprastai 1–3 kreditų
explain_termsTerminų paaiškinimai 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 paprastai 1–3 kreditų
extract_dataDuomenų ištraukimas 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 paprastai 1–3 kreditų
redirect_planNukreipimų planas 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 paprastai 1–3 kreditų
contrast_checkSpalvų kontrasto patikra colors level: aa | aaatext_size: normal | large colors, pairs, counts, invalid, settings, palette_check, legend, language, note paprastai 1–2 kreditų
language_levelKalbos lygis (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 paprastai 1–4 kreditų
llms_txtllms.txt generatorius 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 paprastai 1–3 kreditų
internal_linksVidinės nuorodos text, pages, sitemap_url, page_url – links, text, text_is_html, counts, pages, dropped, ai, limits, language, detected_language, timeout, notes, note paprastai 1–3 kreditų
outdated_contentPasenęs turinys 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 paprastai 1–3 kreditų
inclusive_languageĮtraukianti ir aiški kalba 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 paprastai 1–3 kreditų
review_analysisAtsiliepimų analizė 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 paprastai 1–3 kreditų
ai_visibility_checkDI matomumo patikra 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 paprastai 1–3 kreditų
events_calendarRenginiai į kalendorių 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 paprastai 1–3 kreditų
product_photoPrekės nuotrauka į tekstą 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 paprastai 2–3 kreditų
chart_descriptionDiagramų ir infografikų aprašymas 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 paprastai 2–3 kreditų
design_feedbackDizaino atsiliepimas pagal ekrano nuotrauką 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 paprastai 2–3 kreditų
job_ad_checkDarbo skelbimo patikra 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 paprastai 1–3 kreditų
green_claims_checkAplinkosauginių teiginių patikra 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 paprastai 1–3 kreditų
third_party_scanTrečiųjų šalių paslaugų patikra url, html – url, host, page_from, static_only, counts, consent, groups, cookies, legend, notes, check, note, truncated, checked_at paprastai 1–2 kreditų
broken_link_checkNeveikiančių nuorodų patikra 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 paprastai 1–2 kreditų
duplicate_content_checkPasikartojančio turinio patikra url, text – language, mode, url, host, summary, counts, findings, passed, hints, thresholds, pages, limits, note, truncated paprastai 1–2 kreditų
hreflang_checkhreflang patikra url – language, url, counts, findings, pages, matrix, annotations, legend, limits, note paprastai 1–2 kreditų
ai_robots_txtDI robotai faile 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 paprastai 1–2 kreditų
faq_from_supportDUK iš klientų žinučių 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 paprastai 1–3 kreditų
price_display_checkKainų nurodymo patikra 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 paprastai 1–3 kreditų
form_text_checkFormų tekstai 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 paprastai 1–3 kreditų
newsletter_checkNaujienlaiškio patikra 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 paprastai 1–3 kreditų
privacy_policy_matchPrivatumo politikos patikra 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 paprastai 1–3 kreditų
social_card_checkBendrinimo kortelės patikra url – language, url, counts, preview, findings, tags, images, snippet, guidance, limits, note paprastai 1–2 kreditų
image_performance_checkPaveikslėlių patikra url – language, url, counts, total, formats, lcp, page_findings, summary, images, more_images, legend, limits, note, truncated paprastai 1–2 kreditų
ai_transparency_checkDI skaidrumo patikra 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 paprastai 1–3 kreditų
structured_data_checkStruktūrinių duomenų patikra url, html – language, url, input, counts, formats, findings, items, rules, visible, limits, truncated, note paprastai 1–2 kreditų
legal_notice_checkImpressum patikra 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 paprastai 1–3 kreditų
glossary_builderSukurti žodyną 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 paprastai 1–3 kreditų
local_business_checkĮmonės duomenų patikra 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 paprastai 1–2 kreditų
consent_preload_checkĮkeliama prieš sutikimą? url – url, final_url, host, loaded, counts, timing, consent, groups, cookies, storage, notes, check, law, note, truncated, checked_at paprastai 1–2 kreditų
ai_literacy_policyRaštingumo DI srityje taisyklės (DI akto 4 str.) 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 paprastai 1–2 kreditų
withdrawal_button_checkSutarties atsisakymo mygtuko patikra 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 paprastai 1–3 kreditų
product_safety_checkProdukto puslapio patikra (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 paprastai 1–3 kreditų
website_checkSvetainės patikra url scope: short | full score, categories, findings, counts, snippet, llms_txt, summary, actions, note fixed 5 credits per task
translateVertimas 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 paprastai 1–4 kreditų
proofreadKorektūra 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 paprastai 1–4 kreditų
translate_fileKalbos failai 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 paprastai 5–8 kreditų

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.

Webhooks

Pridėk "callback_url" prie POST /api/v1/jobs, ir Do4U, kai tik užduotis bus baigta, išsiųs pasirašytą POST užklausą (įvykis job.finished su būsena, kreditais ir rezultato nuoroda - ne pačiu rezultatu). Tik viešieji adresai 80 arba 443 prievade; kartojame iki 6 kartų su ilgėjančiomis pauzėmis.

Pavyzdys: sukurk užduotį su callback_url – ir užklausa, kurią Do4U išsiunčia tuo adresu, kai užduotis baigta:

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..."}

Patikrink antraštę X-Do4U-Signature: t=<time>,v1=<hex>, kur v1 = HMAC-SHA256(secret, "<time>.<raw body>"). Atmesk senas laiko žymes (pvz., senesnes nei 5 minutės). Tavo paslaptis prasideda whsec_ ir rodoma puslapyje API raktai.

// 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

Kai paskyros kreditų likutis nukrenta žemiau ribos, Do4U išsiunčia vieną pasirašytą POST į paskyros webhook adresą. Įvykyje nėra asmens duomenų, tik likutis, riba ir laikas (UTC). Kitas ateina tik tada, kai kreditai vėl pridedami (pirkimas, mėnesio nemokami kreditai ar kuponas). Parašas ir paslaptis tokie patys kaip 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"}

Adresą ir ribą nustatai čia: API raktai

n8n

Paruoštas darbo srautas: webhook gauna Do4U iškvietimą, patikrina parašą, gauna rezultatą ir perduoda jį tavo kitam žingsniui.

Atsisiųsti n8n šabloną (JSON)

Šablonas, dar neišbandytas tikrame n8n ar Make egzemplioriuje – prieš naudodamas patikrink parašo patikrą.

n8n: Workflows → Import from file. Tada įvesk savo paslaptį mazge "Check signature" ir savo API raktą mazge "Do4U: get result", aktyvuok darbo srautą ir kaip callback_url naudok webhook gamybos URL. Savarankiškai talpinamam n8n parašo patikrai reikia aplinkos kintamojo NODE_FUNCTION_ALLOW_BUILTIN=crypto.

Make

  1. Kaip trigerį pridėk modulį Webhooks → Custom webhook ir jo išplėstiniuose nustatymuose įjunk "JSON pass-through" ir "Get request headers".
  2. Šio webhook adresą naudok kaip callback_url.
  3. Patikrink parašą: palygink v1 iš antraštės X-Do4U-Signature su sha256(t + "." + raw body; hex; tavo paslaptis).
  4. Pridėk HTTP → Make a request: GET į result_url su antrašte Authorization: Bearer <your API key>.
  5. Savo kituose moduliuose naudok lauką result.

Šablonas, dar neišbandytas tikrame n8n ar Make egzemplioriuje – prieš naudodamas patikrink parašo patikrą.

Receptai: įrankių grandinė

Receptas paleidžia 2–4 įrankius vieną po kito kaip vieną darbą. Vietoj „tool“ siųsk „recipe“: arba paruošto recepto pavadinimą, arba žingsnių sąrašą. Tekstas patenka į pirmąjį žingsnį; kiekvieno žingsnio rezultatas yra kito žingsnio tekstas. GET /api/v1/recipes išvardija paruoštus receptus, įrankius, kuriuos gali naudoti, ir lauką, kurį perduoda kiekvienas įrankis.

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": "..."}'

Gauni vieną visų žingsnių įvertį (credits_estimate). Ši suma rezervuojama pradžioje. Po kiekvieno žingsnio užregistruojamas tikras sunaudojimas, o likusi dalis lieka rezervuota iki pabaigos, tada atlaisvinama. Nepavykęs žingsnis nieko nekainuoja, likę žingsniai praleidžiami, o jau užbaigti žingsniai apmokestinami.

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} rodo kiekvieną žingsnį su jo būsena (pending, queued, running, done, failed, skipped), jo kreditais, pranešimu input_shortened, jei tekstą reikėjo sutrumpinti kitam įrankiui, ir kiekvieno žingsnio rezultatu, kai receptas pasibaigia. Su no_store rezultatai rodomi vieną kartą. callback_url suveikia vieną kartą, recepto pabaigoje.

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.

Atsakyk į el. laiškus nekeisdamas gautųjų dėžės

Do4U nevaldo gautųjų dėžės ir niekada nesaugo tavo pašto dėžutės prisijungimo duomenų. Du būdai vis tiek gauti atsakymų juodraščius:

S1 – n8n arba Make šablonas

  1. Trigeris: naujas laiškas tavo pašto dėžutėje (IMAP trigeris n8n ar Make – prisijungimo duomenys lieka ten)
  2. POST /api/v1/jobs su įrankiu support_reply, laiško tekstu ir no_store: true
  3. Palauk kelias sekundes ir gauk GET /api/v1/jobs/{id}, kol būsena bus done
  4. Sukurk juodraštį savo pašto dėžutėje su tekstu iš result.reply (Gmail ar Outlook modulis)

Atsisiųsti n8n šabloną (JSON)

Make sukurk tą patį scenarijų iš modulių Email (watch emails), HTTP (make a request), Sleep ir Gmail arba Outlook (create a draft).

Programuotojų plėtiniai ir parduotuvių įskiepiai

Išpakuok ZIP ir perskaityk pridėtą vadovą. Naršyklės plėtinį įkelk lokaliai; parduotuvių įskiepius pirmiausia išbandyk bandomojoje parduotuvėje. Reikalingas tavo paties Dev API raktas. Shopware šiuo metu turi CLI.