Skip to content
Get an API key

Get started

Updated

Quickstart

Create an API key, send your first request to the helping.io API, and read the reply. Five minutes, any language.

  • A payment card. Starting your plan opens a checkout page that asks for one.
  • The owner role in your organization. Only the organization’s owner can start the plan. Signing up creates an organization with you as its owner; if you were invited to someone else’s organization, ask its owner to start the plan.
  1. Create an account and start your plan.

    Sign up at app.helping.io, then open the link in the verification email. The app then asks you to start your plan. Your first plan begins with a 14-day free trial: you enter a card on Stripe’s checkout page, and the plan is charged when the trial ends unless you cancel first. Pricing is on helping.io.

  2. Add credits.

    Requests are paid for in credits, and a request with no credits behind it is refused before it runs. Leave Add credits now checked when you start your plan to buy them at the same checkout, or add them later from Settings → Billing. See Credits and billing.

  3. Create an API key.

    Open Settings → API Keys in the app and create a key. Owners and admins of the organization can create keys. The full secret, which starts with sk_, is shown once and cannot be recovered afterwards. Store it somewhere safe; if you lose it, rotate the key. See API keys.

    Terminal window
    export HELPINGIO_API_KEY="sk_…"
  4. Send a request.

    Point any Responses API client at https://api.helping.io/v1.

    Terminal window
    curl https://api.helping.io/v1/responses \
    -H "Authorization: Bearer $HELPINGIO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "model": "anthropic/claude-sonnet-5",
    "input": "Say hello in exactly 3 words."
    }'

    If the request is refused, see If your first request fails.

  5. Read the reply.

    The response object’s output holds the assistant’s message, and usage holds the tokens you were charged for. The SDKs also give you the reply’s text on its own as output_text. The model writes a new reply each time, so your text will differ from the one below.

    {
    "background": false,
    "completed_at": 1767225600,
    "conversation": null,
    "created_at": 1767225600,
    "error": null,
    "frequency_penalty": 0.0,
    "id": "resp_ZXhhbXBsZS9yZXNwL2ZpcnN0LXR1cm4AAAAAAAAAAAAAAAAAAAAAAA",
    "incomplete_details": null,
    "instructions": null,
    "max_output_tokens": null,
    "max_tool_calls": null,
    "metadata": null,
    "model": "anthropic/claude-sonnet-5",
    "object": "response",
    "output": [
    {
    "content": [
    {
    "annotations": [],
    "logprobs": [],
    "text": "Hello there, friend.",
    "type": "output_text"
    }
    ],
    "id": "msg_00000000000000000000000000000001",
    "role": "assistant",
    "status": "completed",
    "type": "message"
    }
    ],
    "parallel_tool_calls": true,
    "presence_penalty": 0.0,
    "previous_response_id": null,
    "prompt_cache_key": null,
    "reasoning": null,
    "safety_identifier": null,
    "service_tier": "default",
    "status": "completed",
    "store": true,
    "temperature": 1.0,
    "text": {
    "format": {
    "type": "text"
    }
    },
    "tool_choice": "auto",
    "tools": [],
    "top_logprobs": 0,
    "top_p": 1.0,
    "truncation": "disabled",
    "usage": {
    "input_tokens": 100,
    "input_tokens_details": {
    "cache_write_tokens": 0,
    "cached_tokens": 0
    },
    "output_tokens": 20,
    "output_tokens_details": {
    "reasoning_tokens": 0
    },
    "total_tokens": 120
    }
    }
  6. Continue the conversation.

    Send the next turn with previous_response_id set to the id of the response you just got. You send only the new turn: the API keeps the conversation history.

    Set RESPONSE_ID to the id from the reply in step 4. It starts with resp_.

    Terminal window
    curl https://api.helping.io/v1/responses \
    -H "Authorization: Bearer $HELPINGIO_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "previous_response_id": "'"$RESPONSE_ID"'",
    "input": "And again."
    }'

These are the refusals a new account most often meets. None of them creates or charges anything, and retrying without the fix gets the same answer.

StatuscodeMeaning
401invalid_api_keyThe Authorization header is missing, malformed, or names a key that is not usable; check the key.
402payment_method_requiredThe organization has no payment method on file, so no request can be served; add one in the billing settings.
429insufficient_quotaThe organization has no active plan, or no credit balance to pay for the request; the message says which.
  • invalid_api_key: check that HELPINGIO_API_KEY holds the whole secret you copied when you created the key, and that the key is not revoked. A lost secret cannot be shown again; rotate the key or create a new one.
  • payment_method_required: the organization’s owner adds a card in Settings → Billing: Start a plan if there is no plan yet, otherwise Manage billing.
  • insufficient_quota: the message says whether the organization has no active plan or no credit balance. The owner starts the plan, or buys credits, in Settings → Billing.

Every other code is on Errors.