Pāriet uz saturu

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_commentPārbaudīt komentārus uz surogātpastu text – classification, reason, suggestion, action, note parasti 1–3 kredīti
document_htmlPārvērst 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 parasti 2–3 kredīti
image_textAtrast attēlā iestrādātu tekstu 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 parasti 2–3 kredīti
pdf_accessibilityPārbaudīt PDF piekļūstamību pdf – checks, pages, truncated, repaired, note, convert_url parasti 1–2 kredīti
summarizeKopsavilkums text, url length: medium | short | long summary, key_points parasti 1–3 kredīti
compareSalīdzināt text, text_b focus: overall | facts | tone | seo summary, similarities, differences parasti 1–3 kredīti
support_replyAtbilde klientam text, faq tone: friendly | neutral | formal reply, concerns, questions parasti 1–3 kredīti
alt_textAlt teksti 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 parasti 2–3 kredīti
rewritePārrakstīt 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 parasti 1–4 kredīti
accessibility_checkPiekļūstamības pārbaude url, html – summary, page, counts, findings, checks, readability, note fixed 3 credits per task
seo_metaSEO nosaukums un apraksts 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_htmlTulkot 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 parasti 1–4 kredīti
product_descriptionProduktu apraksti 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 parasti 1–3 kredīti
headlinesVirsraksti un tēmas rindas 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_schemaBUJ un shēmas iezīmēšana 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_briefSatura brīfs 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 parasti 1–2 kredīti
review_replyAtbildes uz atsauksmēm 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 parasti 1–2 kredīti
social_postsSociālo tīklu ieraksti no raksta 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 parasti 1–3 kredīti
explain_termsSkaidrot terminus 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 parasti 1–3 kredīti
extract_dataIegūt datus 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 parasti 1–3 kredīti
redirect_planPāradresāciju plāns 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 parasti 1–3 kredīti
contrast_checkKrāsu kontrasta pārbaude colors level: aa | aaatext_size: normal | large colors, pairs, counts, invalid, settings, palette_check, legend, language, note parasti 1–2 kredīti
language_levelValodas līmenis (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 parasti 1–4 kredīti
llms_txtllms.txt ģenerators 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 parasti 1–3 kredīti
internal_linksIekšējās saites text, pages, sitemap_url, page_url – links, text, text_is_html, counts, pages, dropped, ai, limits, language, detected_language, timeout, notes, note parasti 1–3 kredīti
outdated_contentNovecojis saturs 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 parasti 1–3 kredīti
inclusive_languageIekļaujoša un vienkārša valoda 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 parasti 1–3 kredīti
review_analysisAtsauksmju analīze 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 parasti 1–3 kredīti
ai_visibility_checkAI redzamības pārbaude 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 parasti 1–3 kredīti
events_calendarPasākumi kalendārā 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 parasti 1–3 kredīti
product_photoProdukta foto 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 parasti 2–3 kredīti
chart_descriptionAprakstīt diagrammas un infografikas 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 parasti 2–3 kredīti
design_feedbackDizaina atsauksme no ekrānuzņēmuma 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 parasti 2–3 kredīti
job_ad_checkDarba sludinājuma pārbaude 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 parasti 1–3 kredīti
green_claims_checkVides apgalvojumu pārbaude 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 parasti 1–3 kredīti
third_party_scanTrešo pušu pakalpojumu pārbaude url, html – url, host, page_from, static_only, counts, consent, groups, cookies, legend, notes, check, note, truncated, checked_at parasti 1–2 kredīti
broken_link_checkBojāto saišu pārbaude 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 parasti 1–2 kredīti
duplicate_content_checkDublēta satura pārbaude url, text – language, mode, url, host, summary, counts, findings, passed, hints, thresholds, pages, limits, note, truncated parasti 1–2 kredīti
hreflang_checkhreflang pārbaude url – language, url, counts, findings, pages, matrix, annotations, legend, limits, note parasti 1–2 kredīti
ai_robots_txtAI rāpuļi failā 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 parasti 1–2 kredīti
faq_from_supportBUJ no klientu ziņojumiem 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 parasti 1–3 kredīti
price_display_checkCenu norādes pārbaude 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 parasti 1–3 kredīti
form_text_checkVeidlapu teksti 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 parasti 1–3 kredīti
newsletter_checkJaunumu vēstules pārbaude 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 parasti 1–3 kredīti
privacy_policy_matchPrivātuma politikas pārbaude 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 parasti 1–3 kredīti
social_card_checkKopīgošanas kartītes pārbaude url – language, url, counts, preview, findings, tags, images, snippet, guidance, limits, note parasti 1–2 kredīti
image_performance_checkAttēlu pārbaude url – language, url, counts, total, formats, lcp, page_findings, summary, images, more_images, legend, limits, note, truncated parasti 1–2 kredīti
ai_transparency_checkAI pārredzamības pārbaude 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 parasti 1–3 kredīti
structured_data_checkStrukturēto datu pārbaude url, html – language, url, input, counts, formats, findings, items, rules, visible, limits, truncated, note parasti 1–2 kredīti
legal_notice_checkImpressum pārbaude 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 parasti 1–3 kredīti
glossary_builderIzveidot glosāriju 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 parasti 1–3 kredīti
local_business_checkUzņēmuma datu pārbaude 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 parasti 1–2 kredīti
consent_preload_checkIelādējas pirms piekrišanas? url – url, final_url, host, loaded, counts, timing, consent, groups, cookies, storage, notes, check, law, note, truncated, checked_at parasti 1–2 kredīti
ai_literacy_policyAI pratības politika (AI akta 4. pants) 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 parasti 1–2 kredīti
withdrawal_button_checkAtteikuma pogas pārbaude 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 parasti 1–3 kredīti
product_safety_checkProdukta lapas pārbaude (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 parasti 1–3 kredīti
website_checkVietnes pārbaude url scope: short | full score, categories, findings, counts, snippet, llms_txt, summary, actions, note fixed 5 credits per task
translateTulkot 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 parasti 1–4 kredīti
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 parasti 1–4 kredīti
translate_fileValodu faili 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 parasti 5–8 kredīti

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

Pievieno "callback_url" pieprasījumam POST /api/v1/jobs, un Do4U nosūtīs parakstītu POST (notikums job.finished ar statusu, kredītiem un saiti uz rezultātu - ne pašu rezultātu), tiklīdz darbs ir pabeigts. Tikai publiskas adreses ar portu 80 vai 443; mēs mēģinām atkārtoti līdz 6 reizēm ar pieaugošām pauzēm.

Piemērs: izveido darbu ar callback_url – un pieprasījums, ko Do4U nosūta uz šo adresi, kad darbs ir pabeigts:

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

Pārbaudi galveni X-Do4U-Signature: t=<time>,v1=<hex>, kur v1 = HMAC-SHA256(secret, "<time>.<raw body>"). Noraidi vecus laikus (piem., vecākus par 5 minūtēm). Tavs noslēpums sākas ar whsec_ un ir redzams lapā API atslēgas.

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

Kad konta kredītu atlikums nokrītas zem sliekšņa, Do4U nosūta vienu parakstītu POST uz konta webhook adresi. Notikumā nav personas datu, tikai atlikums, slieksnis un laiks (UTC). Nākamais seko tikai pēc tam, kad kredīti atkal ir pievienoti (pirkums, mēneša bezmaksas kredīti vai kupons). Paraksts un noslēpums ir tādi paši kā 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"}

Adresi un slieksni tu iestati šeit: API atslēgas

n8n

Gatava darbplūsma: webhook saņem izsaukumu no Do4U, pārbauda parakstu, iegūst rezultātu un nodod to tavam nākamajam solim.

Lejupielādēt n8n veidni (JSON)

Veidne, vēl nav pārbaudīta īstā n8n vai Make instancē – lūdzu, pārbaudi paraksta pārbaudi, pirms to izmanto.

n8n: Workflows → Import from file. Pēc tam ievadi savu noslēpumu mezglā "Check signature" un savu API atslēgu mezglā "Do4U: get result", aktivizē darbplūsmu un izmanto webhook produkcijas URL kā callback_url. Pašizvietotam n8n paraksta pārbaudei vajadzīgs vides mainīgais NODE_FUNCTION_ALLOW_BUILTIN=crypto.

Make

  1. Pievieno moduli Webhooks → Custom webhook kā trigeri un tā papildu iestatījumos ieslēdz "JSON pass-through" un "Get request headers".
  2. Izmanto šī webhook adresi kā callback_url.
  3. Pārbaudi parakstu: salīdzini v1 no galvenes X-Do4U-Signature ar sha256(t + "." + raw body; hex; tavs noslēpums).
  4. Pievieno HTTP → Make a request: GET uz result_url ar galveni Authorization: Bearer <your API key>.
  5. Izmanto lauku result savos nākamajos moduļos.

Veidne, vēl nav pārbaudīta īstā n8n vai Make instancē – lūdzu, pārbaudi paraksta pārbaudi, pirms to izmanto.

Receptes: rīku ķēdes

Recepte izpilda 2 līdz 4 rīkus vienu pēc otra kā vienu darbu. Sūti "recipe" "tool" vietā: vai nu gatavas receptes nosaukumu, vai soļu sarakstu. Teksts nonāk pirmajā solī; katra soļa rezultāts ir teksts nākamajam solim. GET /api/v1/recipes uzskaita gatavās receptes, izmantojamos rīkus un lauku, ko katrs rīks nodod tālāk.

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

Tu saņem vienu aplēsi visiem soļiem (credits_estimate). Šī summa tiek rezervēta sākumā. Pēc katra soļa tiek iegrāmatots faktiskais patēriņš, un atlikums paliek rezervēts līdz beigām, pēc tam tas tiek atbrīvots. Neizdevies solis neko nemaksā, atlikušie soļi tiek izlaisti, un jau pabeigtie soļi tiek iekasēti.

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} parāda katru soli ar tā statusu (pending, queued, running, done, failed, skipped), tā kredītiem, paziņojumu input_shortened, ja teksts nākamajam rīkam bija jāsaīsina, un katra soļa rezultātu, kad recepte ir beigusies. Ar no_store rezultāti tiek parādīti vienreiz. callback_url tiek izsaukts vienreiz, receptes beigās.

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.

Atbildi uz e-pastiem, nemainot savu iesūtni

Do4U neuztur iesūtni un nekad neglabā piekļuves datus tavai pastkastei. Divi veidi, kā tomēr saņemt atbilžu melnrakstus:

S1 – Veidne n8n vai Make

  1. Trigeris: jauns e-pasts tavā pastkastē (IMAP trigeris n8n vai Make – piekļuves dati paliek tur)
  2. POST /api/v1/jobs ar rīku support_reply, e-pasta tekstu un no_store: true
  3. Pagaidi dažas sekundes un izsauc GET /api/v1/jobs/{id}, līdz statuss ir done
  4. Izveido melnrakstu savā pastkastē ar tekstu no result.reply (Gmail vai Outlook modulis)

Lejupielādēt n8n veidni (JSON)

Make vidē izveido to pašu scenāriju no moduļiem Email (watch emails), HTTP (make a request), Sleep un Gmail vai Outlook (create a draft).

Izstrādātāju paplašinājumi un veikalu spraudņi

Atarhivē ZIP un izlasi pievienoto ceļvedi. Ielādē pārlūka paplašinājumu lokāli; veikalu spraudņus vispirms pārbaudi testa veikalā. Nepieciešama tava Dev API atslēga. Shopware pašlaik nodrošina CLI.